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,看能不能接到告警郵件

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM