中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么解決Dubbo服務啟動兩個小時問題

發布時間:2021-11-16 13:46:26 來源:億速云 閱讀:136 作者:iii 欄目:大數據

這篇文章主要講解了“怎么解決Dubbo服務啟動兩個小時問題”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么解決Dubbo服務啟動兩個小時問題”吧!

現象

現象是這樣的,有一天測試在測試環境重新部署一個 dubbo 應用的時候發現應用“啟動不起來”

但過幾個小時候之后又能自己慢慢恢復,并能夠對外提供 dubbo 服務。

但其實經過我后續排查發現剛開始其實并不是啟動不起來,而是啟動速度非常緩慢,所以當應用長時間啟動后才會對外提供服務。

怎么解決Dubbo服務啟動兩個小時問題

而這個速度慢到居然要花費 2 個小時

導致的一個結果是測試完全不敢在測試環境發版驗證了,每驗證一個功能修復一個 bug 就得等上兩個小時,這誰受得了????。

而且經過多次觀察,確實每次都是花費兩小時左右應用才能啟動起來。

嘗試解決

最后測試頂不住了,只能讓我這個“事故報告撰寫專家”來看看。

當我得知這個問題的現象時其實完全沒當一回事:

都不用想,這不就是主線程阻塞了嘛,先看看是否在初始化的時候數據庫、Zookeeper 之類的連不上導致阻塞了-------來之多次事故處理的經驗告訴我。

于是我把這事打回給測試讓他先找運維排查下,不到萬不得已不要影響我 Touch fish????。

第二天一早看到測試同學的微信頭像跳動時我都已經準備接受又一句 “膜拜大佬????” 的回復時,卻收到 “網絡一切正常,沒人動過,再不解決就要罷工了????”。

好吧,忽悠不過去了。

首先這類問題的排查方向應該不會錯,就是主線程阻塞了,至于是啥導致的阻塞就不能像之前那樣瞎猜了。

我將應用重啟后用 jstack pid 將線程快照打印到終端,直接拉到最后看看 main 線程到底在干啥。

前幾次的快照都是很正常:

加載 Spring ---->連接 Zookeeper ---> 連接 Redis,都是依次執行下來沒有阻塞。

隔了一段后應用確實還沒起來,我再次 jstack 后得到如下信息:

怎么解決Dubbo服務啟動兩個小時問題

翻源碼

我一直等了十幾分鐘再多次 jstack 得到的快照得到的信息都是一樣的。

怎么解決Dubbo服務啟動兩個小時問題

如圖所示可見主線程是卡在了 dubbo 的某個方法 ServiceConfig.java 的 303 行中。

于是我找到此處的源碼:

怎么解決Dubbo服務啟動兩個小時問題

簡單來說這里的邏輯就是要獲取本機的 IP 將其注冊到 Zookeeper 中用于其他服務調用。

怎么解決Dubbo服務啟動兩個小時問題

再往下跟就如堆棧中一樣是卡在了 Inet4AddressImpl.getLocalHostName 處。

但這是一個 native 方法,我們應用也根本干涉不了,最終的現象就是調用這個本地方法非常耗時。

于是這問題貌似也阻塞在這兒了,沒有太多辦法。

最終解決

既然這是一個 native 方法,那說明和應用本身沒有啥關系(確實也是這樣,這個問題是突然間出現的。)

那是否是服務器本身的問題呢,想到在 native 方法里是獲取本機的 hostname,那是否和這個 hostname 有關系呢。

怎么解決Dubbo服務啟動兩個小時問題

這是在我自己的阿里云服務器上測試,真正的測試環境不是這個名字。

拿到服務器 hostname 后再嘗試 ping 這個 hostname,奇怪的現象發生了:

命令剛開始會卡住一段時間(大概幾十秒),然后才會輸出 hostname 對應的 ip 以及對應的延遲。

而當我直接 ping 這個 ip 時卻能快速響應后面的輸出。

最后我嘗試在 /etc/hosts 配置文件中加入了對應的 host 配置:

xx.xx.xx.xx(ip) hostname

再次 ping hostname 的效果就和直接 ping ip 一樣了。

感謝各位的閱讀,以上就是“怎么解決Dubbo服務啟動兩個小時問題”的內容了,經過本文的學習后,相信大家對怎么解決Dubbo服務啟動兩個小時問題這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

吉木萨尔县| 龙川县| 吴江市| 铜鼓县| 临海市| 民丰县| 登封市| 台中县| 紫金县| 永仁县| 克什克腾旗| 观塘区| 屯留县| 资溪县| 名山县| 敦煌市| 阜城县| 牡丹江市| 麻城市| 碌曲县| 天祝| 伊宁市| 天峻县| 融水| 林芝县| 临沧市| 夹江县| 浏阳市| 汝州市| 辽中县| 镇巴县| 诸暨市| 吉木萨尔县| 巫山县| 界首市| 富源县| 崇义县| 营山县| 滦平县| 肥东县| 大渡口区|