微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

docker 容器报错 too many open files 解决方法

目录

1.查看当前系统限制最大文件打开数量

2.查询当前系统已打开文件数量

3.查询当前Docker进程最大可打开文件数量及已打开文件数量

4.动态修改当前Docker进程的nofile限制,问题修复

5.file-max 的修改


1.查看当前系统限制最大文件打开数量

cat /proc/sys/fs/file-max
10000000

2.查询当前系统已打开文件数量

cat /proc/sys/fs/file-nr
69312   0       100000000    # 左边的值为当前系统已打开文件数量,中间的不用管,右侧表示当前系统限制最大文件打开数

以上查询得知当前系统打开文件句柄数未达到上限,往下排查Docker进程的最大文件句柄数限制及已打开文件

3.查询当前Docker进程最大可打开文件数量及已打开文件数量

systemctl status docker | grep PID      #获取Docker进程的PID号
Main PID: 14644 (dockerd)

cat /proc/14644/limits     ## 查看当前Docker进程最大可打开文件数量
Max cpu time              unlimited            unlimited            seconds
Max file size             unlimited            unlimited            bytes
Max data size             unlimited            unlimited            bytes
Max stack size            8388608              unlimited            bytes
Max core file size        unlimited            unlimited            bytes
Max resident set          unlimited            unlimited            bytes
Max processes             unlimited            unlimited            processes
Max open files            655360               655360               files
Max locked memory         65536                65536        				bytes
Max address space         unlimited            unlimited            bytes
Max file locks            unlimited            unlimited            locks
Max pending signals       61943                61943                signals
Max msgqueue size         819200               819200               bytes
Max nice priority         0                    0
Max realtime priority     0                    0
Max realtime timeout      unlimited            unlimited            us

## Max open files 标识当前Docker进程限制最大打开文件数量为655360 (注:此处值认是65536,因为手动执行了修改所以大了10倍)

ls -l /proc/14644/fd/* | wc -l    ## 获取当前Docker进程已打开的文件数量
65342      #报错时该值达到了最大限制65536,此时查询已无故障现象

4.动态修改当前Docker进程的nofile限制,问题修复

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

systemctl status docker #再次查询Docker进程状态发现问题已修复

5.file-max 的修改

在第一第二步骤中 如果 file-max 值 过小 也需要修改

临时生效:

echo 100000000 > /proc/sys/fs/file-max    #动态修改当前系统最大可打开文件数量限制,也可以通过 /etc/sysctl.conf永久修改

永久生效:

/etc/sysctl.conf 中增加

fs.file-max = 100000000 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐