Linux最大線程數限制及當前線程數查詢
最大線程數計算方式:
n = total_memory/128k;
Linux用戶線程數限制而導致的程序異常為 java.lang.OutOfMemoryError:unable to create new native thread
查詢系統支持的最大進程數與線程數,一般會很大,相當於理論值
/proc/sys/kernel/pid_max
/proc/sys/kernel/threads-max
系統限制某用戶下最多可以運行多少進程或線程
當前用戶可用最大線程數:ulimit -u
想要修改這個值:
centos 6.*可以修改/etc/security/limits.d/90-nproc.conf
centos 7.*可以修改/etc/security/limits.d/20-nproc.conf
查詢當前某程序的線程或進程數
# pstree -p `ps -e | grep java | awk '{print $1}'` | wc -l
# pstree -p 進程號 | wc -l
上面用的是管道,關於管道:管道符號"|"左邊命令的輸出作為右邊命令的輸入
查詢當前整個系統已用的線程或進程數
pstree -p | wc -l
以上參考https://www.cnblogs.com/nizuimeiabc1/p/5593637.html
zabbix監控當前使用線程數
客戶端:使用pstree -p | wc -l為鍵值
pstree以樹結構顯示進程,是linux很有用的一個命令,可打印系統當前各個進程父子關系。但是centos7默認並沒有安裝pstree,所以會有pstree:command not found
實際上在linux平台要安裝psmisc包,安裝方式使用命令即可:yum install psmisc -y
增加自定義監控項的鍵值:echo "UserParameter=thread.num,pstree -p | wc -l" >> /etc/zabbix/zabbix_agentd.conf
然后重啟zabbix_agentd客戶端
服務端:在Template OS Linux模板中添加監控項與觸發器,閥值8000
測試,服務端get一下數據,看能不能拿到
/usr/local/zabbix/bin/zabbix_get -s xxx.xxx.xxx.xxx -p 10050 -k 'thread.num'
把閥值臨時設為200,看能不能接到告警郵件