WEB服務(wù)器日志分析工具
WEB服務(wù)器日志分析工具
南京都昌信息科技有限公司 袁永福 2020-6-18
本文中配套的C#源代碼下載地址”https://files.cnblogs.com/files/xdesigner/DCWebLogDemo2020-6-23.zip”
》》前言
一些BS系統(tǒng)運(yùn)行緩慢但長(zhǎng)期得不到解決,這是很多IT部門面臨的老大難的問題,此時(shí)堆砌服務(wù)器硬件沒多大效果,必須改進(jìn)軟件本身才能根治問題。
而一個(gè)大型的基于WEB的應(yīng)用軟件,可能包含數(shù)百萬行代碼,數(shù)百個(gè)頁面,幾十個(gè)對(duì)外接口。在其中快速精確的定位錯(cuò)誤點(diǎn)或者性能瓶頸,這是大海撈針的任務(wù)。如果沒有有力的輔助軟件工具,這是一個(gè)很耗時(shí)間的操作,這可能會(huì)導(dǎo)致項(xiàng)目延期,侵蝕軟件公司的利潤(rùn),消磨客戶的耐心。
而本文就提出這個(gè)問題的一種解決方法。
》》現(xiàn)狀
在目前的BS系統(tǒng)的開發(fā)和運(yùn)維中,遇到WEB服務(wù)器軟件的性能調(diào)優(yōu)和錯(cuò)誤排查的一個(gè)重要技術(shù)手段就是對(duì)WEB服務(wù)器日志的事后分析。例如目前很多系統(tǒng)是用ASP.NET開發(fā),運(yùn)行在IIS中,而IIS的日志文件格式大體如下圖所示:

JAVA或者PHP服務(wù)器都有類似的日志文件。如果手工查看這種日志文件將非常艱巨,是不可持續(xù)的工作。此時(shí)微軟提供LPS工具對(duì)日志文件進(jìn)行查詢分析,其界面如下圖所示:

這也能減輕一點(diǎn)工作量,但仍然還有大量的手工操作,工作效率還是低下。
》》都昌WEB服務(wù)器日志分析工具
我們南京都昌團(tuán)隊(duì)專業(yè)從事生產(chǎn)力工具的研發(fā)推廣,立志賦能整個(gè)HIT行業(yè)。行業(yè)內(nèi)有大量的來自不同公司的實(shí)施團(tuán)隊(duì)反饋遇到WEB服務(wù)器日志分析的難題。結(jié)合我們自身的WEB版電子病歷編輯器的實(shí)際需求,特別開發(fā)了WEB服務(wù)器日志分析工具。其界面如下:

這個(gè)界面主要分為兩個(gè)部分
第一,功能模塊總體統(tǒng)計(jì)數(shù)據(jù),其界面如下:

這個(gè)表格各列的說明如下:
第一列,這是一個(gè)顏色主題列,對(duì)于各個(gè)功能模塊,分配不同的顏色。顏色主題有6個(gè)顏色,循環(huán)分配。
第二列,是各個(gè)軟件模塊的名稱,一般而言就是WEB服務(wù)器頁面的名稱,不含路徑名。一些頁面功能很多,可以將一個(gè)頁面拆分成多個(gè)模塊來顯示。
第三列,是在整個(gè)統(tǒng)計(jì)時(shí)間區(qū)間中功能模塊的執(zhí)行總次數(shù)。此時(shí)數(shù)值具有淺紅色背景進(jìn)度條。以該列中最大值為基準(zhǔn),各個(gè)單元格的淺紅色進(jìn)度條的寬度等比于該單元格數(shù)值相對(duì)最大值的百分比。
第三列,是該功能模塊第一次調(diào)用和最后一次調(diào)用的時(shí)刻。
第四列,該模塊的累計(jì)運(yùn)行所消耗的CPU毫秒數(shù),該欄有淺紅色背景進(jìn)度條。注意,這里是真正消耗CPU核心的毫秒數(shù),而不是運(yùn)行耗時(shí)。
WEB服務(wù)器都采用多線程的方式來同時(shí)并發(fā)執(zhí)行多個(gè)頁面模塊,則頁面的運(yùn)行耗時(shí)是超過CPU消耗時(shí)長(zhǎng)。服務(wù)器越繁忙,運(yùn)行模塊的線程受到的干擾越大,這個(gè)時(shí)間差距越大。從軟件模塊性能調(diào)優(yōu)來說,CPU耗時(shí)要比頁面運(yùn)行耗時(shí)科學(xué)。更能幫助快速準(zhǔn)確的定位性能瓶頸。聚焦CPU耗時(shí)是本軟件工具的一大特色。
第五列,該模塊最大一次的CPU耗時(shí)毫秒數(shù)。
第六列,該模塊最小的一次CPU耗時(shí)毫秒數(shù)。
第七列,該模塊平均CPU耗時(shí)毫秒數(shù)。
第八列,列出該模塊的HTTP請(qǐng)求的數(shù)據(jù)量,包括最大值、最小值和平均值。
第九列,列出該模塊的HTTP響應(yīng)返回的數(shù)據(jù)量,包括最大值、最小值和平均值。
本軟件工具第二部分界面如下:

該表格各個(gè)欄目說明如下:
第一列,記錄時(shí)刻,以秒為單位。如果出現(xiàn)錯(cuò)誤,則單元格為紅色。鼠標(biāo)移上去有錯(cuò)誤提示文本。例如:

第二列,CPU核心占用情況。標(biāo)題中列出最大的占用率。如果超過100%,表示某個(gè)時(shí)刻有多個(gè)CPU核心用于處理WEB請(qǐng)求。該列中內(nèi)容列出本秒中各個(gè)模塊的CPU核心占用率。水平層疊了多個(gè)色塊,色塊的顏色和第一個(gè)表格的模塊的主題色對(duì)應(yīng)。色塊寬度表示了CPU核心占用率,鼠標(biāo)移上去就會(huì)顯示如下的提示文本:

該提示文本列出的該模塊在本秒鐘的同時(shí)處理次數(shù)和消耗CPU毫秒數(shù)。下面還列出各個(gè)請(qǐng)求的頁面參數(shù)和單次CPU耗時(shí)。
通過這種色塊疊加,各個(gè)功能模塊的CPU耗時(shí)情況一目了然,可以快速找到性能瓶頸。同時(shí)也能幫助理解WEB服務(wù)器高峰時(shí)的運(yùn)行情況
例如下圖的一個(gè)分析結(jié)果:

在時(shí)刻01:06:58。CPU核心使用率高達(dá)1500%。另外緊跟著"持續(xù)24"秒,表示這個(gè)高能耗狀態(tài)持續(xù)了24秒,這是一個(gè)比較嚴(yán)重的CPU長(zhǎng)期占用情況。是一個(gè)性能瓶頸,需要做針對(duì)性處理。
第三列,列出各個(gè)模塊HTTP請(qǐng)求的上傳數(shù)據(jù)量。標(biāo)題列出最大數(shù)據(jù)傳輸速度。各個(gè)色塊表示了數(shù)據(jù)量。鼠標(biāo)移上去會(huì)顯示如下的提示文本:

該提示文本列出了模塊的名稱和各次請(qǐng)求的參數(shù)和上傳數(shù)據(jù)量。
第四列,列出了各個(gè)功能的下載(HTTP響應(yīng)輸出)的數(shù)據(jù)量信息。
第五列列出了WEB服務(wù)器軟件的內(nèi)存占用情況。也是有淺紅色背景進(jìn)度條。
第六列,列出了ASP.NET SESSION數(shù)量。也就是同時(shí)連接WEB服務(wù)器的客戶端數(shù)量。
第七列,列出了當(dāng)前DCWriter授權(quán)的并發(fā)數(shù)。
第八列,列出了CPU使用率。疊加了紅色塊和淺綠色塊。紅色塊表示W(wǎng)EB服務(wù)器進(jìn)程(可能為c:\windows\system32\svchost.exe –k iissvcs)的CPU使用率。這個(gè)使用率已經(jīng)包括了多核CPU的情況。淺綠色表示操作系統(tǒng)中返回的CPU使用率。鼠標(biāo)移上去會(huì)顯示如下提示文本:

在這里,25%為WEB服務(wù)器進(jìn)程的CPU使用率,34%是操作系統(tǒng)的CPU使用率。操作系統(tǒng)的CPU使用率包含了WEB服務(wù)器進(jìn)程的CPU使用率。
》》應(yīng)用
本軟件工具的完整版可提供在線實(shí)時(shí)分析而無需導(dǎo)出IIS日志文件。目前只支持ASP.NET/ASP.NET Core開發(fā),只需要引用都昌公司提供的DCSoft.Writer.dll,然后編寫以下代碼即可完成記錄操作。

對(duì)于ASP.NET CORE需要在Startup.cs中添加以下代碼:

使用以下代碼即可進(jìn)行數(shù)據(jù)分析,生成報(bào)表:

也可訪問都昌控件服務(wù)器頁面地址查看當(dāng)前實(shí)時(shí)分析數(shù)據(jù)。比如"http://server/app/svp.aspx?serverlog=1"。
》》分析IIS日志文件
本軟件工具可用于分析IIS日志文件,其分析結(jié)果如下:


由于IIS日志中最關(guān)鍵的頁面運(yùn)行耗時(shí)是采用時(shí)間差,而不是CPU耗時(shí),因此在本報(bào)表中關(guān)于CPU耗時(shí)的計(jì)算有誤差。但也比微軟LPS工具好用多了。
獲取本工具軟件,請(qǐng)?jiān)L問網(wǎng)站【http://www.dcwriter.cn】。
posted on 2020-06-23 16:24 袁永福 電子病歷,醫(yī)療信息化 閱讀(1014) 評(píng)論(0) 收藏 舉報(bào)
浙公網(wǎng)安備 33010602011771號(hào)