1、vim /etc/security/limits.conf 添加以下内容:
# *表示所有用户
# soft即是软限制,hard是硬限制。用户可以超过soft设置的值,但一定不能超过hard 的值。一般soft比hard小
# noproc表示最大进程数,nofile 表示最大文件打开数
* soft noproc 65536
* hard noproc 65536
* soft nofile 65536
* hard nofile 65536
3、退出重新登录
4、ulimit参数
-H 设置硬件资源限制.
-S 设置软件资源限制.
-a 显示当前所有的资源限制.
-n size:设置内核可以同时打开的文件描述符的最大值.单位:n
-u number:设置用户最大进程数 (max user processes)
-c size:设置core文件的最大值.单位:blocks
-d size:设置数据段的最大值.单位:kbytes
-f size:设置创建文件的最大值.单位:blocks
-l size:设置在内存中锁定进程的最大值.单位:kbytes
-m size:设置可以使用的常驻内存的最大值.单位:kbytes
-p size:设置管道缓冲区的最大值.单位:kbytes
-s size:设置堆栈的最大值.单位:kbytes
-t size:设置CPU使用时间的最大上限.单位:seconds
-v size:设置虚拟内存的最大值.单位:kbytes
5、java.io.IOException: Too many open files 此问题原因与ulimit -n有关,调大ulimit -n
6、There is insufficient memory for the Java Runtime Environment to continue.
Cannot create GC thread. Out of system resources.
java.lang.OutOfMemoryError: unable to create new native thread
此问题与ulimit -u有关,调大ulimit -u
7、shell级限制
通过ulimit -n修改,如执行命令ulimit -n 2048,则表示将当前shell的当前用户所有进程能打开的最大文件数量设置为2048。修改后立即生效,重新登录进来后失效,因为被重置为/etc/security/limits.conf里的设定值
8、用户级限制
针对用户所有shell的限制,通过修改/etc/security/limits.conf实现,例如,往limits.conf输入以下内容:
root soft nofile 2048
root hard nofile 2049
注意:修改limits.conf中关于nofile的值,不能超过/proc/sys/fs/nr_open的值,否则会出现无法ssh远程连接。
9、/proc/sys/fs/file-max 是系统给出的建议值
10、/proc/PID/limists 中可以查看进程的文件限制