dubbo zkclient 啟動阻塞

公司網(wǎng)絡偶爾抖動,此時dubbo應用啟動時,會出現(xiàn)莫名奇妙的阻塞,無法啟動完成。

現(xiàn)象:
應用無法啟動,同時無多余日志輸出

猜測:

  1. 死循環(huán)了
  2. 線程阻塞

排查方法:
對于猜測1:
死循環(huán),cpu使用率應該上升,但看了下,cpu使用率并沒多大變化,排除

對于猜測2:
線程阻塞,直接想到的是查看線程堆棧,jdk提供了很好的工具jstack。
首先使用jps列出顯示當前的java進程號,
再根據(jù)進程號,使用jstack查看進程堆棧。

主要看下main線程的狀態(tài)

image.png

可以看到,main線程一直在等待,當前應用使用zkclient作為連接zookeeper的客戶端。

image.png

通過查看源碼第25行可以看到,dubbo直接使用不帶超時時間設置的zkclient構建方法。
進入到zkclient的實現(xiàn),可以看到,如果沒主動設置zkclient的超時時間,會默認使用Integer.MAX_VALUE作為默認超時時間。

image.png

如果因為網(wǎng)絡原因,在啟動時無法連上zk,就會一直阻塞了。

該問題在dubbo的github中已有issues[https://github.com/alibaba/dubbo/issues/287],但目前官方并未做調整。
如果想避免這個問題,可以采用curator作為zk客戶端,或者自己實現(xiàn)一個客戶端。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 一、多線程 說明下線程的狀態(tài) java中的線程一共有 5 種狀態(tài)。 NEW:這種情況指的是,通過 New 關鍵字創(chuàng)...
    Java旅行者閱讀 4,865評論 0 44
  • 青春不是年華,而是心境。每念及此,倍感韶華已逝,青春不再。心中一直有一個江南夢,煙雨中的小巷,撐油紙傘的姑...
    風前舞2閱讀 164評論 0 1
  • 上午和倆個女性朋友交流彼此的工作經驗,分享生活、興趣、等等...。她們非常優(yōu)秀,新時代女性代表。 漫漫人生路,就是...
    大醫(yī)美合伙人閱讀 394評論 0 3
  • 這兩周過完周日后總有點悵然若失的感覺,總覺得自己浪費了很多時間。可能是因為這兩個周日基本上沒有思考和看書的原因。應...
    問之成兮閱讀 169評論 0 0
  • 《解決沖突的關鍵技巧:如何增加你的有效社交》[美] 達納·卡斯帕森 感覺最近晨讀有“類似重復嫌疑”,才思枯竭的我,...
    映月黑珍珠閱讀 115評論 1 2

友情鏈接更多精彩內容