2019獨角獸企業重金招聘Python工程師標準>>>
最近公司的一個賬單推送的服務,發現有延遲。我排查的時候發現,有一個程序日志不動了(采用消息隊列,部署了兩臺服務器來負載均衡)。 網上說: jstack 可以來排查。
可以觀察到jvm中當前所有線程的運行情況和線程當前狀態. sudo jstack -F 進程ID 輸出內容如下: 從上面的圖我們可以看到tomcat進程里面沒有死鎖的情況,而且每個線程都處理等待的狀態。這個時候我們可以telnet命令連上tomcat的端口查看tomcat進程是否有任務回應。這時發現tomcat沒有任何回應可以證明tomcat應用已沒有響應處理假死狀態。
分析java進程假死狀況
但是一臺服務器可以,一臺服務器不可以。
因為一臺服務器采用的是oracle的jdk,一臺采用的是openjdk (都是linux ubuntu服務器)
網上說得安裝 sudo apt-get install openjdk-8-dbg
不過得重啟一下應用,不然還是不能用的jstack