准备在之前的服务器上部署另外一个应用程序,该程序部署好后已启动就报
java.lang.OutOfMemoryError : unable to create new native Thread
ulimit -a
max user processes (-u) 1024,这也太小了。
32g内存 8核cpu, 。设置的太小了简直浪费资源。后面修改到
409600 就能 正常启动了
另外如果
open files(-n)设置太小默认1024 会导致
java.net.SocketException: Too many open files
文件系统及程序的限制关系: ulimit
ulimit 限制用户的某些系统资源
包括可以开启的档案数量
可以使用的 CPU 时间
可以使用的内存总量等。
[root@www ~]# ulimit [-acdfHlmnpsStvw] [size]
选项与参数:
-H : hard limit ,严格的设定,必定不能超过这个设定的数值
-S : soft limit ,警告的设定,可以超过这个设定值,但是若超过则有警告讯息
-a : 后面不接任何选项与参数,可列出所有的限制额度
-c : 当某些程序发生错误时,系统可能会将该程序在内存中的信息写成档案,这种档案就被称为核心档案(core file)。
-f : 此 shell 可以建立的最大档案容量(一般可能设定为 2GB)单位为 Kbytes
-d : 程序可使用的最大断裂内存(segment)容量
-l : 可用于锁定 (lock) 的内存量
-m : 设置可以使用的常驻内存的最大值.单位:kbytes
-n : 设置内核可以同时打开的文件描述符的最大值.单位:n
-p : 设置管道缓冲区的最大值.单位:kbytes
-s : 设置堆栈的最大值.单位:kbytes
-v : 设置虚拟内存的最大值.单位:kbytes
-t : 可使用的最大 CPU 时间 (单位为秒)
-u : 单一用户可以使用的最大程序(process)数量
一般简单设置:ulimit -SHn 65535
让其永久生效:
[root@www ~]# vi /etc/security/limits.conf
* soft noproc 65535
* hard noproc 65535
* soft nofile 409600
* hard nofile 409600
* 代表针对所有用户
noproc 是代表最大进程数
nofile 是代表最大文件打开数
生产环境的案例:
[root@www ~]# vi /etc/security/limits.conf
# End of file
* soft core unlimit
* hard core unlimit
* soft fsize unlimited
* hard fsize unlimited
* soft data unlimited
* hard data unlimited
* soft nproc 65535
* hard nproc 63535
* soft stack unlimited
* hard stack unlimited
* soft nofile 409600
* hard nofile 409600
ulimit 限制用户的某些系统资源
包括可以开启的档案数量
可以使用的 CPU 时间
可以使用的内存总量等。
[root@www ~]# ulimit [-acdfHlmnpsStvw] [size]
选项与参数:
-H : hard limit ,严格的设定,必定不能超过这个设定的数值
-S : soft limit ,警告的设定,可以超过这个设定值,但是若超过则有警告讯息
-a : 后面不接任何选项与参数,可列出所有的限制额度
-c : 当某些程序发生错误时,系统可能会将该程序在内存中的信息写成档案,这种档案就被称为核心档案(core file)。
-f : 此 shell 可以建立的最大档案容量(一般可能设定为 2GB)单位为 Kbytes
-d : 程序可使用的最大断裂内存(segment)容量
-l : 可用于锁定 (lock) 的内存量
-m : 设置可以使用的常驻内存的最大值.单位:kbytes
-n : 设置内核可以同时打开的文件描述符的最大值.单位:n
-p : 设置管道缓冲区的最大值.单位:kbytes
-s : 设置堆栈的最大值.单位:kbytes
-v : 设置虚拟内存的最大值.单位:kbytes
-t : 可使用的最大 CPU 时间 (单位为秒)
-u : 单一用户可以使用的最大程序(process)数量
一般简单设置:ulimit -SHn 65535
让其永久生效:
[root@www ~]# vi /etc/security/limits.conf
* soft noproc 65535
* hard noproc 65535
* soft nofile 409600
* hard nofile 409600
* 代表针对所有用户
noproc 是代表最大进程数
nofile 是代表最大文件打开数
生产环境的案例:
[root@www ~]# vi /etc/security/limits.conf
# End of file
* soft core unlimit
* hard core unlimit
* soft fsize unlimited
* hard fsize unlimited
* soft data unlimited
* hard data unlimited
* soft nproc 65535
* hard nproc 63535
* soft stack unlimited
* hard stack unlimited
* soft nofile 409600
* hard nofile 409600
参考文档:
http://docs.mongodb.org/manual/reference/ulimit/
https://access.redhat.com/site/documentation/en-US/Red_Hat_Directory_Server/8.2/html/Performance_Tuning_Guide/system-tuning.html
https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/5/html/Tuning_and_Optimizing_Red_Hat_Enterprise_Linux_for_Oracle_9i_and_10g_Databases/chap-Oracle_9i_and_10g_Tuning_Guide-Setting_Shell_Limits_for_the_Oracle_User.html
https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/5/html/Tuning_and_Optimizing_Red_Hat_Enterprise_Linux_for_Oracle_9i_and_10g_Databases/sect-Oracle_9i_and_10g_Tuning_Guide-Setting_Shell_Limits_for_the_Oracle_User-Limiting_Maximum_Number_of_Processes_Available_for_the_Oracle_User.html