用友雲開發者中心助你上雲系列之線上除錯

用友雲平臺發表於2019-02-14

現在,大家開始越來越多的談論到高可用架構的網際網路應用。什麼是高可用?高可用HA(High Availability)是分散式系統架構設計中必須考慮的因素之一,它通常是指,通過設計減少系統不能提供服務的時間。

當我們談論服務高可用的時候,我們通常聚焦在高併發、大流量、高可用性等關鍵字,企業上雲,這些問題也是不可避免的。網際網路應用正在由單體應用架構演變為微服務架構,服務的拆分,使得部署在雲的執行例項也指數級的增加。

但是!測試再充分的服務,線上上執行起來後,都可能會出現問題。這些問題可能跟架構設計有關,也可能是為了快速響應使用者需求在快速迭代中帶來的BUG.這些缺陷如同大堤上的蟻穴,隨時可能會引起線上服務的整體崩潰。

用友雲開發者中心助你上雲系列之線上除錯

在這種情況下,我們就需要研發人員能迅速定位問題,並將修復問題後的版本在使用者無感知的情況下快速上線,將缺陷的負面影響最小化。而線上問題的快速定位無非從日誌分析、效能監控、線上環境的遠端除錯等幾個方面入手。不同的方式適用於不同狀況,各有千秋。但在這些解決方案中,基於線上環境的遠端除錯往往能夠迅速分析出原因並解決,問題的解決速度脫穎而出。

什麼是Java遠端除錯?

Java遠端除錯的原理是兩個Java VM之間通過debug協議進行通訊,然後以達到遠端除錯的目的。兩者之間可以通過socket進行通訊,被debug程式的Java虛擬機器在啟動時開啟debug模式,啟動debug監聽程式。JDWP是Java Debug Wire Protocol的縮寫,它定義了偵錯程式(debugger)和被除錯的Java虛擬機器(target vm)之間的通訊協議。

target vm中執行著我們希望要除錯的程式,它與一般執行的Java虛擬機器沒有什麼區別,只是在啟動時載入了Agent JDWP從而具備了除錯功能。而debugger就是我們熟知的偵錯程式,它向執行中的target vm傳送命令來獲取 target vm執行時的狀態和控制Java程式的執行。Debugger和target vm分別在各自的程式中執行,他們之間的通訊協議就是JDWP。

用友雲開發者中心助你上雲系列之線上除錯

如何使用開發者中心進行線上除錯?

如果你已經使用了開發者中心部署應用(上雲),那麼,可以非常榮幸的告訴你,看完下面的步驟,只需幾秒鐘的配置,就可以解救你於水火之中。

用友雲開發者中心助你上雲系列之線上除錯

拋開一切煩惱,掏出你的膝上型電腦,準備開始具體的配置吧。

操作步驟

應用屬性增加環境變數

CATALINA_OPTS = -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n

如圖:

用友雲開發者中心助你上雲系列之線上除錯

應用增加除錯埠,需和步驟1中的屬性address=8000一致,如8000

如圖:

用友雲開發者中心助你上雲系列之線上除錯

儲存並重啟例項

用友雲開發者中心助你上雲系列之線上除錯

例項重啟完畢後,點選需要遠端除錯的例項控制檯

在例項控制檯中輸入echo $PORT0,$PORT1,輸出資訊為應用放開的埠對應該例項的陣列,PORT0對應8080埠,PORT1對應例項的8000埠(即遠端除錯使用的埠號)

用友雲開發者中心助你上雲系列之線上除錯

檢視例項執行的主機

用友雲開發者中心助你上雲系列之線上除錯

配置開發工具IDE的遠端除錯資訊為步驟6的IP地址和步驟5獲得的埠

用友雲開發者中心助你上雲系列之線上除錯

至此,大功告成,你可以輕鬆的進行問題排查了。此過程也可以用於日常開發過程中的線上定位問題,面對眾多的微服務,無需再煩惱了。


相關文章