NetworkManager在运行docker容器时占用大量内存怎么办?
问题现象
在运行多个docker容器的环境下NetworkManager服务占用内存很大,导致内存使用率过高。
- 本节操作适用于CentOS 7、Ubuntu 16.04操作系统。
- 该文档涉及重启网络服务,可能会造成业务中断,请谨慎操作。
问题分析
NetworkManager消耗的内存量随着容器启动/停止的每次迭代而增加,即使在所有容器已被停止和删除之后也不会减少。
处理方法
短期处理方法:
执行以下命令重启NetworkManager服务。
systemctl restart NetworkManager
长期处理方法:
- CentOS 7操作系统云服务器
执行以下命令停止NetworkManager服务,改用network管理网络
systemctl disable NetworkManager
/sbin/chkconfig network on
kill `pgrep -o dhclient`
systemctl stop NetworkManager
systemctl start network
出现network启动失败可能为系统内置多网卡配置文件导致,处理方法参考多网卡配置文件导致network启动失败处理。
- Ubuntu16.04操作系统
- 执行以下命令使用networking管理网络。
systemctl disable NetworkManager
systemctl disable network-manager
systemctl enable networking
kill `pgrep -o dhclient`
systemctl stop NetworkManager
systemctl start networking
- 启用networking服务,一定要检查interfaces文件中是否设置网络配置为DHCP模式。
若只有一个网卡eth0则可以检查或增加:
auto eth0 iface eth0 inet dhcp
图1 设置网络配置为DHCP模式
- 执行以下命令使用networking管理网络。