问题描述

服务器安装Docker后,在进行服务重新部署后,出现kernel:unregister_netdevice: waiting for veth31bce17 to become free. Usage count = 1错误频繁输出,影响操作。

原因分析:

该问题是由于内核线程的引用计数泄漏引起的。

解决方案:

临时解决方案

重启服务器,重启后该问题会消失,但可能过段时间又会复现

永久解决方案

升级Linux内核,Linux内核需要高于3.10.0-1160(CentOS),步骤如下:
1、下载内核安装包,并将安装包上传到要升级的服务器。
2、进行内核安装

[root@test]$ tar -xvf kernel-4.19.1-rpm.tar
[root@test]$ rpm -ivh --force --nodeps kernel-ml-devel-4.19.1-1.el7.elrepo.x86_64.rpm 
[root@test]$ rpm -ivh --force --nodeps kernel-ml-4.19.1-1.el7.elrepo.x86_64.rpm 
[root@test]$ rpm -ivh --force --nodeps kernel-ml-headers-4.19.1-1.el7.elrepo.x86_64.rpm

3、修改默认内核版本

# 查看最新内核对应的编号
[root@test]$ cat /etc/grub2.cfg | awk -F\' '$1=="menuentry " {print i++ " : " $2}'
0 : CentOS Linux (4.19.1-1.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux (3.10.0-693.11.6.el7.x86_64) 7 (Core)
2 : CentOS Linux (0-rescue-609bbd29e32a4898e604f49bff82a88c) 7 (Core)
# 修改内核配置文件,由上述代码可知,最新的内核编码为0
[root@test]$ /etc/default/grub
# 将GRUB_DEFAULT=saved 改为 GRUB_DEFAULT=0
# 重建内核配置
[root@test]$ grub2-mkconfig -o /boot/grub2/grub.cfg
# 重启系统
[root@test]$ reboot now
# 查看系统内核版本
[root@test]$ uname -r
4.19.1-1.el7.elrepo.x86_64

参考文献

1.内核bug修复方案:网络设备引用计数泄漏

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐