假設我用普通用戶部署10個服務,線程數都用dubbo缺省值(100),部署到同一臺機器上,那麼這10個服務所佔用的線程也就是10*100 = 1000。會致使部署時,拋java.lang.OutOfMemoryError:unable to create new native thread異常。java
解決方案以下spa
#vi /etc/security/limits.d/90-nproc.conf 線程
能夠看出*號,也就是普通用戶,他的線程數限制是1024,而root用戶他是不限制的。這時候能夠對1024的值進行增長,那麼這個值咱們能設置成多少?能夠根據這臺機的內存去計算出來。blog
計算方式:
default_nproc = total_memory/128K;
$ cat /proc/meminfo |grep MemTotal內存
假設上面的cat /proc/meminfo |grep MemTotal結果爲3907380
$ echo "3907380 / 128"| bc
$ ulimit -u
ulimit -a # 顯示目前資源限制的設定
ulimit -u # 用戶最多可開啓的程序數目
重啓, 使之生效: # reboot資源