.查看当前系统限制最大文件打开数量
-
cat /proc/sys/fs/file-max -
10000000
一键获取完整项目代码bash
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,此时查询已无故障现象
一键获取完整项目代码bash
.动态修改当前Docker进程的nofile限制,问题修复
-
prlimit --pid 14644 --nofile=655360:655360 #将Docker进程的nofile限制调整为655360 -
systemctl status docker #再次查询Docker进程状态发现问题已修复
一键获取完整项目代码bash
5.file-max 的修改
在第一第二步骤中 如果 file-max 值 过小 也需要修改
临时生效:
echo 100000000 > /proc/sys/fs/file-max #动态修改当前系统最大可打开文件数量限制,也可以通过 /etc/sysctl.conf永久修改
一键获取完整项目代码bash
永久生效:
/etc/sysctl.conf 中增加
fs.file-max = 100000000
2066

被折叠的 条评论
为什么被折叠?



