用友雲開發者中心助你上雲系列之在線調試
當我們談論服務高可用的時候,我們通常聚焦在高並發、大流量、高可用性等關鍵字,企業上雲,這些問題也是不可避免的。互聯網應用正在由單體應用架構演變為微服務架構,服務的拆分,使得部署在雲的運行實例也指數級的增加。
但是!測試再充分的服務,在線上運行起來後,都可能會出現問題。這些問題可能跟架構設計有關,也可能是為了快速響應用戶需求在快速叠代中帶來的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獲得的端口
至此,大功告成,你可以輕松的進行問題排查了。此過程也可以用於日常開發過程中的在線定位問題,面對眾多的微服務,無需再煩惱了。
用友雲開發者中心助你上雲系列之在線調試