首先我们可以通过ulimit –a命令来查看系统的一些资源限制情况,如下:
# ulimit -a core file size (blocks, -c) 1024 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 127422 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 20480 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) unlimited cpu time (seconds, -t) unlimited max user processes (-u) 81920 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
这里重点关注open files和max user processes。分别表示:单个进程打开的最大文件数;系统可以申请最大的进程数。
1、查看、修改文件数(当前session有效):
# ulimit -n 20480 # ulimit -n 20480
2、查看、修改进程数(当前session有效):
# ulimit -u 81920 # ulimit -u 81920
3、永久设置文件数、最大进程:
可以编辑# vim /etc/security/limits.conf在其中指定最大设置;
或者在/etc/profile文件指定;
一、最大进程数:
最近在Linux服务器上发布应用时碰到一个如下的异常:
Caused by: java.lang.OutOfMemoryError: unable to create new native thread at java.lang.Thread.start0(Native Method) at java.lang.Thread.start(Thread.java:640)
初看可能会认为是系统的内存不足,如果这样想的话就被这段提示带到沟里面去了。上面这段错误提示的本质是Linux操作系统无法创建更多进程,导致出错。因此要解决这个问题需要修改Linux允许创建更多的进程。
1、临时设置:
我们可以使用 ulimit -u 81920 修改max user processes的值,但是只能在当前终端的这个session里面生效,重新登录后仍然是使用系统默认值。
2、永久设置:
1)编辑# vim /etc/security/limits.conf
在文件中添加如下内容:
soft nproc 81920 hard nproc 81920 注: *表示所有用户,soft、hard表示软限制、硬限制。(软限制<=硬限制)
2)或者在/etc/profile文件中添加:
ulimit -u 81920
这样每次用户登录就可以设置最大进程数。
二、最大打开文件数:
最大文件打开数在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。








