环境
linux 4.14.61
systemd version 247.3
问题
启动时发现网络其实很快就起来了,但是mqtt和docker启动的很慢,导致相关依赖启动很慢。
问题分析
实际通过systemctl list-units
发现systemd-networkd-wait-online
启动失败
而且从字面上看也有延时的意味所以。。。。通过百度发现有相关的问题"权益之计"的解决方案。
权宜之计
可以更改用vi更改以下文件:/etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service在[Service]增加TimeoutStartSec=30,表示启动超时时间为30s。大家按需更改吧。
通过更改/etc/systemd/network/systemd-networkd-wait-online.service 将超时时间缩小,发现启动变快了,所以就定位到这个地方肯定导致延时了。当然这不是最终的原因和本质的问题,只是一个权宜之计。
正常解决
查找具体的原因,通过networkctl命令可以看到eth0网卡一直在configuring状态
这个网口实际上就是我正在用的网口,也是我通过临时设置ip(ifconfig eth0 192.168.xxx.xxx)并通过ssh登录上去截取的此图片,也就是说实际上这个网口是ok的。简单查一下这个工具发现networkctl用于查询systemd-networkd 所看到的网络连接的状态。
查看systemd-networkd配置为dhcp,自动分配ip
# cat /etc/systemd/network/eth0.network
[Match]
Name=eth0
[Network]
DHCP=ipv4
试着简单猜想一下我手动设置的ip这个systemd-networkd
服务是不认可的(因为实际去查看systemd-networked源码有点麻烦,就想先通过验证现象看看能不能验证猜想),经过查看参考以下连接,配置eth0的ip,启动就很丝滑了,没有什么延时现象。
配置如下:
[Match]
Name=eth0
[Network]
DNS=8.8.8.8
Address=192.168.1.151/24
Gateway=192.168.1.1
我的场景需求是需要用静态ip的,所以没有研究dhcp时自动分配为什么需要耗时那么多。
systemd-netword配置文件更改参考链接如下
systemd-networkd说明