java網絡異常情況導致的阻塞導致Kafka消息無法消費

最近碰到kafka消息無法消費,懷疑線程阻塞了。使用jvisualvm工具進行查看,查看的條件是項目需要設置開啓遠程調試功能。參考我之前的文章。設置成功後可以可視化查看線程情況:

對線程進行dump,按間隔5秒一次採樣10次,發現堆棧一直停留在獲取高德GPS位置信息裏,查看相關代碼發現http請求沒有設置超時時間,查找相關資料默認請求不超時,所以可能由於網絡異常情況導致虛擬機不知道線程狀態,所以此時儘管當前線程實際上也是阻塞的狀態,但實際上顯示出來的還是Runnable狀態,這種情況下是不消耗CPU的。也就是說,Runnable狀態不意味這個線程正在消耗CPU。表現在圖表就是一直是Runable正常情況線程會有狀態變化,因爲要涉及到IO和CPU資源的競爭。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章