在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允许创建更多的进程。
如何修改Linux最大进程数?
推荐阅读:可以通过ulimit -a来查看当前Linux系统的一些系统参数。
在上面这些参数中,关注最多的是一个进程可打开的最大文件数,即open files。
linux操作系统允许创建的最大进程数量即是max user processes 这个参数。
可以使用 ulimit -u 4096 修改max user processes的值,但是只能在当前终端的这个session里面生效,重新登录后仍然是使用系统默认值。
正确的修改方式:
修改/etc/security/limits.d/90-nproc.conf文件中的值。
这个文件包含什么:
$ cat /etc/security/limits.d/90-nproc.conf
# Default limit for number of user's processes to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.
* soft nproc 4096
只要修改上面文件中的4096这个值就可以了。