前幾天在測試環境碰到一個非常奇怪的與 dubbo 相關的問題,事後我在網上搜索了一圈並沒有發現類似的帖子或文章,於是便有了這篇。
dubbo
現象是這樣的,有一天測試在測試環境重新部署一個 dubbo 應用的時候發現應用「啟動不起來」。但過幾個小時候之後又能自己慢慢恢復,並能夠對外提供 dubbo 服務。
「啟動不起來」
而這個速度慢到居然要花費 2 個小時。
2 個小時
bug
最後測試頂不住了,只能讓我這個「事故報告撰寫專家」來看看。
「事故報告撰寫專家」
當我得知這個問題的現象時其實完全沒當一回事:
Touch fish
第二天一早看到測試同學的微信頭像跳動時我都已經準備接受又一句 「膜拜大佬??」 的回復時,卻收到 「網路一切正常,沒人動過,再不解決就要罷工了」。
「膜拜大佬??」
jstack pid
main
Spring
Zookeeper
Redis
jstack
我一直等了十幾分鐘再多次 jstack 得到的快照得到的信息都是一樣的。
ServiceConfig.java
IP
Inet4AddressImpl.getLocalHostName
但這是一個 native 方法,我們應用也根本干涉不了,最終的現象就是調用這個本地方法非常耗時。
native
既然這是一個 native 方法,那說明和應用本身沒有啥關係(確實也是這樣,這個問題是突然間出現的。)
hostname
ping
ip
而當我直接 ping 這個 ip 時卻能快速響應後面的輸出。
ping hostname
ping ip
最後根據我調整的內容嘗試分析下本次問題的原因:
Dubbo
dns
host
雖然問題得到解決了,但還是有幾個疑問:
DNS
小編在這裡準備了相關的學習資料給大家,還有面試資料和編程書籍。(適合所有Java工程師學)資料圖和麪試資料,架構資料!
資料獲取方式後臺私信【資料】免費獲取資料和麪試心得以及自己學習和經驗分享給大家,希望對大家可以有幫助。覺得有所收穫的話可以關注我和轉發分享給更多的程序猿們。