打开文件句柄数是有限制的,可以通过 sysctl fs.nr_open 命令查看最大值,sysctl 是加在内核参数的命令
一般容器为 mcs 的修改是不能大于这个值的,要不然修改了可能就坏掉;只能直接修改 /etc/security/limits.conf 文件中的这两个东西,然后重启看是否生效:
vim /etc/security/limits.conf
* soft nofile 1000000
* hard nofile 1000000
open files 的值,看这个
ulimit -a
容器为 kvm 的如果修改值小于最大值,可以直接用上面的方法改掉修改大于这个值;
如果大于,要先修改 /etc/sysctl.conf 文件里面的值,再改 /etc/security/limits.conf;
先把这个参数写入文件,在使文件生效,查看生效后的值,这样的前提是 /etc/sysctl.conf 中不存在这个参数,可以 cat /etc/sysctl.conf |grep fs.nr_open 查看
echo "fs.nr_open = 4000000" >>/etc/sysctl.conf
sysctl -p
sysctl fs.nr_open
若果参数已经存在了,可以使用 sed 修改
sed -i 's/^fs.nr_open = .*/fs.nr_open = 400000/g' /etc/sysctl.conf
同样在修改 /etc/security/limits.conf 中的值就好了
sed -i 's/^* soft nofile.*/* soft nofile 4000000/g' /etc/security/limits.conf
sed -i 's/^* soft nofile.*/* hard nofile 4000000/g' /etc/security/limits.conf
重启就可以了