開始以為是記憶體不足導致無法建立執行緒,把jvm的-xms,-xmx的2個引數都加大一倍:-xms2048m -xmx2048m。把-xss引數調小,還是啟動失敗。應該是系統方面的限制了,這台機器上搞了100個過tomcat程序,還有不少其他軟體,東西比較多且雜。確認過機器的記憶體還是足夠的,先排查系統引數,之後再清理垃圾資源了。
系統可生成最大執行緒數
cat /proc/sys/kernel/threads-max
這個值很大,tomcat程序的全部執行緒數肯定沒有超過它,如果實際執行緒數比它大可改大(實際可能是**問題,開啟了太多執行緒)。
程序最大執行緒數
ps -elf | grep 專案名 | wc -l 檢視單個專案執行緒數,啟動失敗的這個專案執行緒數一般在600左右
cat /proc/sys/vm/max_map_count
65530
這個值沒有問題,jvm的啟動引數為-dconfig.server.maxthreads=3000,也沒有問題
使用者最大程序數
ulimit -a
其中max user processes就是表示使用者的最大程序數,我的這個值很大,程序數也沒有超過它。如果超過的話,可以修改最大程序數的配置
vi /etc/security/limits.d/90-nproc.conf
* soft nproc 1024
root soft nproc unlimited
上面可以看除了root使用者外的所有使用者均限制為1024,因此通過可以注釋此行或者將值改大,儲存後修改立刻生效
#* soft nproc 1024
root soft nproc unlimited
整個系統已用的執行緒或程序數
cat /proc/sys/kernel/pid_max
該值是32678(32位linux系統可建立的最大pid數是32678),查詢當前整個系統已用的執行緒或程序數:pstree -p | wc -l,結果比32678稍小,問題就在這了
vim /proc/sys/kernel/pid_max,改為65535儲存退出的時候報錯如下
/proc/sys/kernel/pid_max e667 fsync failed
改成下面方式即可:
echo "65535" > /proc/sys/kernel/pid_max
不需要重啟,儲存後立刻生效,重啟專案終於好了
Linux下能夠建立的最大執行緒數
1.首先可以執行下面的程式檢查,檢查你現在的系統總共能建立多少個執行緒。我的系統上是i 380,也就是最多能建立380個執行緒。後面分析為什麼是它。maxthread.cc compile gcc maxthread.cc o thread lpthread include include incl...
Linux 系統開啟最大執行緒數 調優
系統最大執行緒數說明 系統可開啟的最大執行緒數,可根據系統本身負載配置進行調優。檢視系統最大執行緒數 1 檢視系統開啟的最大執行緒數。root node01 ulimit u 3818 2 查系統支援的最大執行緒數,一般會很大,相當於理論值。root node01 cat proc sys kern...
tomcat最大執行緒數 最大等待數和最大連線數
tomcat是目前較為常用的web容器,那麼怎麼配置tomcat才能使得自己的服務效率更高,今天我主要解釋一下tomcat的最大執行緒數 maxthreads 最大等待數 acceptcount 和最大連線數 maxconnections maxthreads 最大執行緒數 每一次http請求到達w...