MENU

docker启动缓慢问题排查

前言

最近入手一个树莓派4b板子,初衷是装个centos系统想拿来当个人开发机使用,偶尔业余写一些C++代码,在自己黑苹果编译有些库还不一样,之前遇到过一个用epoll。4G内存然后针对其它应用则直接用docker部署,简单还方便一点。但是遇到一个问题,每次重启一次系统,docker启动都是特别的慢(5-6分钟)。

问题发现

通过systemctl status docker命令查看状态是启动中,再仔细看了一下发现有一行。

12月 22 13:54:53 localhost dockerd[609]: crypto/rand: blocked for 60 seconds waiting to read random data from the kernel

# 大概意思是:等待60秒从内核中获取随机数。

一开始自己猜测会不会是CPU性能问题导致,后面查了一下,前辈也有遇到logstash启动缓慢的问题,也同样说等待60秒从内核中获取随机数。从那篇博文中了解到一个关于的知识点。

熵知识点学习

熵代表事件的随机性。

  • 在计算中,熵是操作收集的随机性,用于的系统或应用程序、密码学或其他用途,需要随机数据。这种随机性经常从硬件中收集消息来源,或者是预先存在的消息来源作为鼠标移动或特别提供随机生成器。
  • 在信息论中,熵是一种衡量不确定性随机变量。这个词由在这种情况下通常指的是香农熵,其中量化,在某种意义上期望值,信息包含在消息中,通常在比特等单位。

如果结果比较低 (<1000),建议安装 haveged. 否则加密程序会等待系统有足够的熵。例如如果使用 软件热点,网速会比较慢。

# 通过如下命令可以查看系统的熵值
cat /proc/sys/kernel/random/entropy_avail

输出结果
29

问题解决

haveged项目的目的是提供一个简单易用的不可预测 随机数生成器,基于 HAVEGE 算法。Haveged可以解决在某些情况下,系统熵过低的问题。
延伸知识,在wiki中还提到采用Rng-tools方式,用于增加内核中的熵数量以使其/dev/random更快

# 加入源
yum install epel-release -y

# 下载haveged
yum install haveged -y

# 启动
systemctl start haveged

# 开机自启动
systemctl enable haveged

验证效果:

# 通过如下命令可以查看系统的熵值
cat /proc/sys/kernel/random/entropy_avail

输出结果
2437

参考文章:
什么是熵的计算机科学定义?

标签: docker, 密码学,
返回文章列表 文章二维码 打赏
本页链接的二维码
打赏二维码
添加新评论