現(xiàn)在,大家開始越來越多的談?wù)摰礁呖捎眉軜?gòu)的互聯(lián)網(wǎng)應(yīng)用。什么是高可用?高可用HA(High Availability)是分布式系統(tǒng)架構(gòu)設(shè)計(jì)中必須考慮的因素之一,它通常是指,通過設(shè)計(jì)減少系統(tǒng)不能提供服務(wù)的時(shí)間。 當(dāng)我們談?wù)摲?wù)高可用的時(shí)候,我們通常聚焦在高并發(fā)、大流量、高可用性等關(guān)鍵字,企業(yè)上云,這些問題也是不可避免的?;ヂ?lián)網(wǎng)應(yīng)用正在由單體應(yīng)用架構(gòu)演變?yōu)槲⒎?wù)架構(gòu),服務(wù)的拆分,使得部署在云的運(yùn)行實(shí)例也指數(shù)級的增加。 但是!測試再充分的服務(wù),在線上運(yùn)行起來后,都可能會(huì)出現(xiàn)問題。這些問題可能跟架構(gòu)設(shè)計(jì)有關(guān),也可能是為了快速響應(yīng)用戶需求在快速迭代中帶來的BUG.這些缺陷如同大堤上的蟻穴,隨時(shí)可能會(huì)引起線上服務(wù)的整體崩潰。 用友云開發(fā)者中心助你上云系列之在線調(diào)試 什么是Java遠(yuǎn)程調(diào)試? Java遠(yuǎn)程調(diào)試的原理是兩個(gè)Java VM之間通過debug協(xié)議進(jìn)行通信,然后以達(dá)到遠(yuǎn)程調(diào)試的目的。兩者之間可以通過socket進(jìn)行通信,被debug程序的Java虛擬機(jī)在啟動(dòng)時(shí)開啟debug模式,啟動(dòng)debug監(jiān)聽程序。JDWP是Java Debug Wire Protocol的縮寫,它定義了調(diào)試器(debugger)和被調(diào)試的Java虛擬機(jī)(target vm)之間的通信協(xié)議。 target vm中運(yùn)行著我們希望要調(diào)試的程序,它與一般運(yùn)行的Java虛擬機(jī)沒有什么區(qū)別,只是在啟動(dòng)時(shí)加載了Agent JDWP從而具備了調(diào)試功能。而debugger就是我們熟知的調(diào)試器,它向運(yùn)行中的target vm發(fā)送命令來獲取 target vm運(yùn)行時(shí)的狀態(tài)和控制Java程序的執(zhí)行。Debugger和target vm分別在各自的進(jìn)程中運(yùn)行,他們之間的通信協(xié)議就是JDWP。 如果你已經(jīng)使用了開發(fā)者中心部署應(yīng)用(上云),那么,可以非常榮幸的告訴你,看完下面的步驟,只需幾秒鐘的配置,就可以解救你于水火之中。 應(yīng)用屬性增加環(huán)境變量 CATALINA_OPTS = -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n 如圖: 如圖: 在實(shí)例控制臺(tái)中輸入echo $PORT0,$PORT1,輸出信息為應(yīng)用放開的端口對應(yīng)該實(shí)例的數(shù)組,PORT0對應(yīng)8080端口,PORT1對應(yīng)實(shí)例的8000端口(即遠(yuǎn)程調(diào)試使用的端口號) 至此,大功告成,你可以輕松的進(jìn)行問題排查了。此過程也可以用于日常開發(fā)過程中的在線定位問題,面對眾多的微服務(wù),無需再煩惱了。 |
|