查看原文
其他

Dubbo服务治理篇——线程模型(Linux 用户线程数限制导致的 java.lang.OutOfMemoryError)

冰河 冰河技术 2022-09-10



本文解决的是Dubbo的线程模型中Linux 用户线程数限制导致的 java.lang.OutOfMemoryError: unable to create new native thread 异常。

类似于数据库的连接池

Linux 用户线程数限制导致的 Java.lang.OutOfMemoryError: unable to create new native thread异常
系统默认最大的线程数为1024个


[root@liuyazhuang131 ~]# 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 1024root soft nproc unlimited[root@liuyazhuang131 ~]# vi /etc/security/limits.d/90-nproc.conf 


调整时要注意:
1、 尽量不要使用 root 用户来部署应用程序,避免资源耗尽后无法登录操作系统。因为root用户默认没有限制线程数,如果线程过多,会使资源占用很多,导致不能关机,只能硬关机
2、 普通用户的线程数限制值要看可用物理内存容量来配置 


[root@liuyazhuang131 ~]# cat /proc/meminfo |grep MemTotal MemTotal: 2941144 kB[root@liuyazhuang131 ~]# echo "2941144/128"|bc22977[root@liuyazhuang131 ~]# ulimit -u1024[1]+ Stopped vi /etc/security/limits.d/90-nproc.conf[root@liuyazhuang131 ~]# vi /etc/security/limits.d/90-nproc.conf [root@liuyazhuang131 ~]# 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 12000root soft nproc unlimited[root@liuyazhuang131 ~]# 计算方式:default_nproc = total_memory/128K; $ cat /proc/meminfo |grep MemTotal$ echo "2941144/128"|bc$ ulimit -uulimit -a # 显示目前资源限制的设定 ulimit -u # 用户最多可开启的程序数目重启,使之生效:# reboot


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存