您好,欢迎来到爱够旅游网。
搜索
您的当前位置:首页记一次解决Caused By:java.Lang.OutOfMemoryError: Unable To Create New Native Thread

记一次解决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
44

查看当前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) 
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

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igbc.cn 版权所有 湘ICP备2023023988号-5

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务