Tomcat效能監控之Probe
目前採用java進行開發的系統居多,這些系統執行在java容器中,通過對容器的監控可以瞭解到java程序的執行狀況,分析java程式問題。目前市面上流行的中介軟體有很多(Tomcat、jetty、jboss、weblogic、websphere等),基本原理相似,都遵循Servlet規範。對容器的監控,實際上就是對JVM的監控,下面介紹一個Tomcat的監控工具Probe,Probe只需要一個war包就可以完成監控任務。
類別 | 計數器 | 描述 |
Tomcat | jvm記憶體 | 關注GC回收頻率,Full GC次數越少越好 |
最大執行緒數 | 執行緒池連線數長期大於百分之八十以上,建議優化 | |
資料庫連線數 | 活動連線數長期大於百分之八十以上,建議優化連線池 | |
請求數 請求狀態 |
執行緒數、執行緒狀態、大量Blocked狀態執行緒可以Dump執行緒棧資訊進行分析 |
1、下載Probe:https://github.com/psi-probe;放在tomcat的webapps目錄下
2、Probe相關配置
修改tomcat下conf/tomcat-users.xml檔案:
<tomcat-users>
<role rolename="manager"/>
<role rolename="tomcat"/>
<role rolename="manager-gui"/>
<user username="admin" password="admin" roles="manager,tomcat,manager-gui"/>
</tomcat-users>
開啟JVM遠端監控,新增set "JAVA_OPTS=$JAVA_OPTS -Dcom.sun.management.jmxremote",修改tomcat下bin/catalina.bat檔案:
3、RUNNABLE:系統正在執行;
WAITING:此狀態指執行緒擁有某個鎖,呼叫了wait方法,等待其他執行緒擁有者呼叫notify喚醒改執行緒繼續下一步操作;
TIME_WAITING:有限制的waiting,一般出現在呼叫wait、join等情況,另外執行緒sleep後,也會進入time_waiting狀態;
BLOCKED:阻塞狀態,代表執行緒繁忙正在執行中,可能有資源等待情況,我們需要長期關注blocked狀態執行緒,Dump執行緒棧以找到程式,從而分析出做什麼操作,等待那些資源;
TERMINATED:表示run方法已經執行完畢,進入死亡狀態,如果執行緒長時間持有可能不會被回收。