https://www.mongodb.com/docs/v4.2/reference/ulimit/
help ulimit
man limits.conf
[root@node1 ~]# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 15709
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 15709
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
linux 打开文件数 too many open files 解决方法
设置用户open files(用户可以打开文件的最大数目):ulimit -n 4096。执行该命令非root用户只能设置到4096。想要设置到8192需要sudo权限或者root用户。
1 系统配置文件设置
=================================
cat /etc/security/limits.conf
* soft nofile 655350
* hard nofile 655350
修改后新启动的服务,将立刻生效,已经运行中的服务保持不变
2 内核参数设置
=================================
sysctl -a | grep "fs.file-max"
echo 'fs.file-max = 6553600' >> /etc/sysctl.conf
sysctl --system
3 ulimit临时生效
=================================
ulimit -HSn 655350
(ulimit 是一个内核内置命令,没有绝对路径, help ulimit)
4 部分软件的特殊参数
=================================
如上1、2、3步骤是定义程序最大文件句柄(max open files),但是有些程序本身如果有特殊配置,如nginx worker_rlimit_nofile 是定义nginx worker process 最大使用的文件句柄,则以程序自定义为准
5 启动方式
=================================
5.1 脚本启动(centos6)
可以在启动脚本里增加一行 ulimit -HSn 655350
5.2 systemd管理(centos7)
可以在service文件增加一行 LimitNOFILE=102400
以上,再配合对关键进程的巡检 (cat /proc/${process_pid}/limits) ,即可妥善处理 too many open files 相关问题
6 关于生效方式
=================================
很多时候可能需要重启机器,才能重启