一種內(nèi)存監(jiān)控方法及服務(wù)器的制造方法
【技術(shù)領(lǐng)域】
[0001]本申請涉及互聯(lián)網(wǎng)領(lǐng)域,具體涉及到一種內(nèi)存監(jiān)控方法及服務(wù)器。
【背景技術(shù)】
[0002]計算機系統(tǒng)以及一些網(wǎng)絡(luò)設(shè)備的內(nèi)存不管容量有多大,均是有限的,因此有效的應(yīng)用這些內(nèi)存是一個十分重要的問題?;ヂ?lián)網(wǎng)中的系統(tǒng)開發(fā)者,例如java應(yīng)用系統(tǒng)開發(fā)者在一個新開發(fā)的應(yīng)用系統(tǒng)正式上線之前,都需要先對該系統(tǒng)的內(nèi)存使用情況進行監(jiān)控分析,以發(fā)現(xiàn)可能存在的問題,防止內(nèi)存泄露造成的宕機情況。有時候在系統(tǒng)中會出現(xiàn)內(nèi)存泄露問題,內(nèi)存泄漏并非指內(nèi)存在物理上的消失,而是應(yīng)用程序(即申請和使用內(nèi)存的實體)在分配某段內(nèi)存后,由于程序設(shè)計上的錯誤,例如,未設(shè)計釋放或者是主觀認為不必處理等原因,失去了對該段內(nèi)存的控制,因而造成了內(nèi)存的浪費。
[0003]其中,對內(nèi)存的監(jiān)控數(shù)據(jù)通常包括內(nèi)存區(qū)域、內(nèi)存對象、堆棧和線程信息、java進程句柄情況、系統(tǒng)被調(diào)用方法及相應(yīng)時間以及系統(tǒng)內(nèi)部方法執(zhí)行鏈路以及響應(yīng)時間等數(shù)據(jù),通過對內(nèi)存進行采樣,記錄快照并提供快照比較分析,以對系統(tǒng)存在的問題進行定位和預(yù)警。
[0004]現(xiàn)有技術(shù)中,存在的幾種內(nèi)存監(jiān)控組件,例如,java監(jiān)控和管理控制臺(JavaMonitoring and Management Console, Jconsole,)、性能測試監(jiān)控工具 Nmon 以及 Java 剖析工具(Java profiler, JprofiIe)等工具均可以對內(nèi)存的使用狀態(tài)信息進行采集,但是該些組件都不能夠提供詳細數(shù)據(jù),對內(nèi)存運行數(shù)據(jù)進行分析。
【發(fā)明內(nèi)容】
[0005]本申請的目的是提供一種內(nèi)存監(jiān)控方法,以實現(xiàn)通過客戶端監(jiān)控內(nèi)存運行狀態(tài)數(shù)據(jù),并生成日志文件,由服務(wù)器根據(jù)日志文件繪制內(nèi)存運行趨勢報告,對內(nèi)存狀態(tài)進行分析。
[0006]為實現(xiàn)上述目的,本申請?zhí)峁┝艘环N內(nèi)存監(jiān)控方法,該方法包括:
[0007]向服務(wù)器發(fā)送內(nèi)存監(jiān)控部署請求,所述內(nèi)存監(jiān)控部署請求用以請求所述服務(wù)器為所述客戶端部署監(jiān)控所述客戶端運行的應(yīng)用系統(tǒng)的內(nèi)存狀態(tài);
[0008]接收所述服務(wù)器發(fā)送的部署代理數(shù)據(jù),所述代理數(shù)據(jù)中包含所述服務(wù)器為所述客戶端生成的部署腳本;
[0009]根據(jù)所述部署腳本,下載內(nèi)存監(jiān)控代理程序;
[0010]運行所述內(nèi)存監(jiān)控程序,對所述內(nèi)存進行定時采樣,以獲取所述內(nèi)存的狀態(tài)數(shù)據(jù);
[0011]通過命令輸出格式將采樣到的所述內(nèi)存的狀態(tài)數(shù)據(jù)輸出,以生成日志數(shù)據(jù);
[0012]將所述日志數(shù)據(jù)同步至所述服務(wù)器,以便于所述服務(wù)器根據(jù)所述日志數(shù)據(jù)生成內(nèi)存狀態(tài)趨勢報告。
[0013]本申請還提供了一種內(nèi)存監(jiān)控方法,所述方法包括:
[0014]接收客戶端發(fā)送的內(nèi)存監(jiān)控部署請求,所述內(nèi)存監(jiān)控部署請求用以請求服務(wù)器為所述客戶端部署監(jiān)控所述客戶端運行的應(yīng)用系統(tǒng)的內(nèi)存狀態(tài);
[0015]向所述客戶端發(fā)送部署代理數(shù)據(jù),所述代理數(shù)據(jù)中包含所述服務(wù)器為所述客戶端生成的部署腳本,觸發(fā)所述客戶端根據(jù)所述部署腳本,下載內(nèi)存監(jiān)控代理程序,并根據(jù)所述內(nèi)存監(jiān)控程序,對所述內(nèi)存進行定時采樣,獲取所述內(nèi)存的狀態(tài)數(shù)據(jù);
[0016]接收所述客戶端發(fā)送的日志數(shù)據(jù),所述日志數(shù)據(jù)由所述客戶端通過命令輸出格式將所述客戶端采樣到的所述內(nèi)存的狀態(tài)數(shù)據(jù)輸出后生成;
[0017]根據(jù)所述日志數(shù)據(jù),提取所述日志數(shù)據(jù)中的所述內(nèi)存的狀態(tài)數(shù)據(jù);
[0018]根據(jù)所述狀態(tài)數(shù)據(jù),繪制內(nèi)存狀態(tài)趨勢報告圖。
[0019]本申請還提供了一種內(nèi)存監(jiān)控客戶端,所述客戶端包括:
[0020]部署請求單元,用于向服務(wù)器發(fā)送內(nèi)存監(jiān)控部署請求,所述內(nèi)存監(jiān)控部署請求用以請求所述服務(wù)器為所述客戶端部署監(jiān)控所述客戶端運行的應(yīng)用系統(tǒng)的內(nèi)存狀態(tài);
[0021]接收單元,用于接收所述服務(wù)器發(fā)送的部署代理數(shù)據(jù),所述代理數(shù)據(jù)中包含所述服務(wù)器為所述客戶端生成的部署腳本;
[0022]下載單元,用于根據(jù)所述部署腳本,下載內(nèi)存監(jiān)控代理程序;
[0023]運行單元,用于運行所述內(nèi)存監(jiān)控程序,對所述內(nèi)存進行定時采樣,以獲取所述內(nèi)存的狀態(tài)數(shù)據(jù);
[0024]生成單元,用于通過命令輸出格式將采樣到的所述內(nèi)存的狀態(tài)數(shù)據(jù)輸出,以生成日志數(shù)據(jù);
[0025]同步單元,用于將所述日志數(shù)據(jù)同步至所述服務(wù)器,以便于所述服務(wù)器根據(jù)所述日志數(shù)據(jù)生成內(nèi)存狀態(tài)趨勢報告。
[0026]本申請實施例最后提供了一種內(nèi)存監(jiān)控服務(wù)器,所述服務(wù)器包括:
[0027]部署請求接收單元,用于接收客戶端發(fā)送的內(nèi)存監(jiān)控部署請求,所述內(nèi)存監(jiān)控部署請求用以請求服務(wù)器為所述客戶端部署監(jiān)控所述客戶端運行的應(yīng)用系統(tǒng)的內(nèi)存狀態(tài);
[0028]發(fā)送單元,用于向所述客戶端發(fā)送部署代理數(shù)據(jù),所述代理數(shù)據(jù)中包含所述服務(wù)器為所述客戶端生成的部署腳本,觸發(fā)所述客戶端根據(jù)所述部署腳本,下載內(nèi)存監(jiān)控代理程序,并根據(jù)所述內(nèi)存監(jiān)控程序,對所述內(nèi)存進行定時采樣,獲取所述內(nèi)存的狀態(tài)數(shù)據(jù);
[0029]日志數(shù)據(jù)接收單元,用于接收所述客戶端發(fā)送的日志數(shù)據(jù),所述日志數(shù)據(jù)由所述客戶端通過命令輸出格式將所述客戶端采樣到的所述內(nèi)存的狀態(tài)數(shù)據(jù)輸出后生成;
[0030]提取單元,用于根據(jù)所述日志數(shù)據(jù),提取所述日志數(shù)據(jù)中的所述內(nèi)存的狀態(tài)數(shù)據(jù);
[0031 ] 報告生成單元,用于根據(jù)所述狀態(tài)數(shù)據(jù),繪制內(nèi)存狀態(tài)趨勢報告圖。
[0032]本申請實施例提供了一種內(nèi)存監(jiān)控方法,由客戶端向服務(wù)器發(fā)送內(nèi)存監(jiān)控部署請求,之后,客戶端接收所述服務(wù)器發(fā)送的部署代理數(shù)據(jù),并根據(jù)所述代理數(shù)據(jù)中包含的所述服務(wù)器為所述客戶端生成的部署腳本,下載內(nèi)存監(jiān)控代理程序;通過運行所述內(nèi)存監(jiān)控程序,對所述內(nèi)存進行定時采樣,以獲取所述內(nèi)存的狀態(tài)數(shù)據(jù);之后,通過命令輸出格式將采樣到的所述內(nèi)存的狀態(tài)數(shù)據(jù)輸出,以生成日志數(shù)據(jù);并且將所述日志數(shù)據(jù)同步至所述服務(wù)器,從而使得服務(wù)器可以根據(jù)所述日志數(shù)據(jù)生成內(nèi)存狀態(tài)趨勢報告,并將日志文件與快照文件對比,對系統(tǒng)內(nèi)存運行作出預(yù)警。
【附圖說明】
[0033]圖1是本申請實施例提供的內(nèi)存監(jiān)控方法的一種應(yīng)用系統(tǒng)架構(gòu)圖;
[0034]圖2為本申請實施例提供的內(nèi)存監(jiān)控方法的一種實施例的流程圖;
[0035]圖3為本申請實施例提供的內(nèi)存監(jiān)控方法的一種實施例的交互圖;
[0036]圖4為本申請實施例提供的內(nèi)存監(jiān)控方法的一種實施例的流程圖;
[0037]圖5是本申請實施例提供的一種內(nèi)存監(jiān)控客戶端的一種實施例的結(jié)構(gòu)圖;
[0038]圖6是本申請實施例提供的一種內(nèi)存監(jiān)控服務(wù)器的一種實施例的結(jié)構(gòu)圖;
[0039]圖7是本申請實施例生成的一種趨勢報告圖;
[0040]圖8是本申請實施例生成的另一種趨勢報告圖;
[0041]圖9是本申請實施例的一種使用狀態(tài)設(shè)置報告圖;
[0042]圖10是本申請實施例的一種使用狀態(tài)數(shù)據(jù)分析圖;
[0043]圖11是本申請實施例的一種使用狀態(tài)數(shù)據(jù)分析圖;
[0044]圖12是本申請實施例的一種使用狀態(tài)數(shù)據(jù)分析圖。
【具體實施方式】
[0045]下面通過附圖和實施例,對本申請的技術(shù)方案做進一步的詳細描述。
[0046]圖1為本申請實施例提供的內(nèi)存監(jiān)控方法的應(yīng)用架構(gòu)圖,其中包括客戶端10和服務(wù)器20,所述客戶端10上可以運行諸如JAVA系統(tǒng)、系統(tǒng)分析工具、瀏覽器等工具,所述服務(wù)器可以執(zhí)行分析功能,服務(wù)器20與客戶端10通過網(wǎng)絡(luò)或者其他通訊鏈路連接,實現(xiàn)數(shù)據(jù)傳輸。JAVA系統(tǒng)開發(fā)人員開發(fā)好JAVA應(yīng)用程序之后,需要對運行該Java系統(tǒng)的系統(tǒng)內(nèi)存狀態(tài)進行監(jiān)控,以避免JAVA系統(tǒng)原因造成的內(nèi)存泄露等問題。
[0047]圖2是本申請實施例提供的內(nèi)存監(jiān)控方法的流程圖,該實施例中執(zhí)行主體為客戶端,該客戶端中運行JAVA系統(tǒng),特別是Java虛擬機(Java Virtual Machine, JVM)??梢赃M一步結(jié)合圖3所示的交互狀態(tài),對本申請實施例做更進一步闡述。由圖2可見,該實施例中的方法可以包括:
[0048]步驟201,向服務(wù)器發(fā)送內(nèi)存監(jiān)控部署請求,所述內(nèi)存監(jiān)控部署請求用以請求所述服務(wù)器為所述客戶端部署監(jiān)控所述客戶端運行的應(yīng)用系統(tǒng)的內(nèi)存狀態(tài);
[0049]在該步驟中,用戶可以通過客戶端上的瀏覽器,向服務(wù)器的WEB層發(fā)送內(nèi)存監(jiān)控部署請求,請求服務(wù)器為客戶端部署監(jiān)控所述客戶端運行的應(yīng)用系統(tǒng)的內(nèi)存狀態(tài);例如,JAVA系統(tǒng),特別是Java虛擬機。
[0050]服務(wù)器端在接收到客戶端發(fā)送的內(nèi)存監(jiān)控部署請求,之后,由服務(wù)器的前端頁面生成部署代理數(shù)據(jù),部署代理數(shù)據(jù)中包含所述服務(wù)器為所述客戶端生成的部署腳本,之后,通過WEB層將生成的部署代理數(shù)據(jù)發(fā)送給客戶端,觸發(fā)所述客戶端根據(jù)所述部署腳本下載內(nèi)存監(jiān)控代理程序。
[0051]步驟202,接收所述服務(wù)器發(fā)送的部署代理數(shù)據(jù),所述代理數(shù)據(jù)中包含所述服務(wù)器為所述客戶端生成的部署腳本;
[0052]在該步驟中,客戶端接收服務(wù)器WEB層發(fā)送的部署代理數(shù)據(jù),并從中獲取所述服務(wù)器為所述客戶端生成的部署腳本。
[0053]例如,服務(wù)器的前端頁面負責(zé)為用戶生成部署腳本,大致如下:
[0054]cd $H0ME && rm -f securityts-core-engine