linux執行緒數限制與zabbix監控
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,看能不能接到告警郵件