docker too many open files解决方式

1:问题描述

今天在环境上执行docker ps命令失败,如下提示

[root@control02 ~]# docker ps -a lgrep nginx
Cannot connect to the Docker daemon at unix:///var/run/docker.sock, Is the docker daemon running?

2:查看节点docker状态
在这里插入图片描述
看信息提示是too many open files,句柄数不够导致的

3:查看节点的最大文件打开数

[root@control02 ~]# cat /proc/sys/fs/nr_open
1048576     ##单个进程最大文件打开数
[root@control02 ~]# cat /proc/sys/fs/file-max
26555622    ###系统级别的文件打开数
[root@control02 ~]#

4: 查看系统中已经使用的文件数

[rootacontrol2 -]#sysctl -a | grep "file-nr"
fs.file-nr =  75008   0   26555622  ###75008代表系统中已经使用的句柄数

也可以通过文件查看
[root@control02 ~]# cat /proc/sys/fs/file-nr
75008   0   26555622

通过上述结果查看,系统中文件打开数未达到最大值,由此判断可能是docker 进程文件打开数超过了限制

5:查看docker进程目前的文件打开数以及限制

有下图可知,docker进程的限制是65536
在这里插入图片描述
查看dokcer已经打开的文件打开数

[root@controle2 ~]# ls -l /proc/7273/fd/* | wc -l 
65536     ###输出的值为65536,实际要使用的值已经超过了65536

6:动态修改当前Docker进程的nofile限制

prlimit --pid 14644 --nofile=655360:655360    #将Docker进程的nofile限制调整为655360 

执行systemctl status docker命令查看服务正常
在这里插入图片描述

[root@control02 ~]# docker ps
CONTAINER ID   IMAGE                                                                      COMMAND                  CREATED        STATUS                   PORTS     NAMES
1d0f25320719   nginx:1.15.12                                             "nginx -c /etc/nginx…"   7 weeks ago    Up 7 weeks                         nginx

7:修改系统中进程打开的最大文件数

 echo "10485760" > /proc/sys/fs/nr_open
 或者修改内核参数
 sysctl -w fs.nr_open = 10485760
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值