记一次解决Caused By:java.Lang.OutOfMemoryError: Unable To Create New Native Thread

这个异常问题本质原因是我们创建了太多的线程,而能创建的线程数是有限制的,导致了异常的发生。

java程序一直报错,并且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:717)

[root@app5 ~]# su kexie
su: failed to execute /bin/bash: Resource temporarily unavailable

首先查看linux系统设置的最大线程数 与 当前线程数,发现当前线程数远小于设置的最高配,所以不是这个原因

[root@app1 BMS]# sysctl kernel.pid_max
kernel.pid_max = 32768
[root@app1 BMS]# ps -eLf | wc -l
4544

查看当前linux用户所拥有创建最大的线程数 与 当前线程数,发现此用户已超过最大的线程数创建

[kexie@app5 root]$ ulimit -u
1024
[kexie@app5 ~]# ps -eLf | wc -l
5127

所以就需要增加此用户能创建的线程数来解决问题

vi /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     10240
root       soft    nproc     unlimited

查看当前用户可创建最大线程数设置成 max user processes 10240了,解决了问题。

[kexie@app5 root]$ 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) 127959
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 65535
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) 10240
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值