The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

透過 logman 指令有效率的操作效能監視器

這個星期都忙碌於一個大型網站的效能調校,而效能調校首重數據分析,透過數據分析進一步瞭解應用程式所遇到的效能瓶頸,最常使用的工具不外乎就是 效能監視器 ( Performance Monitor ),但由於有多台主機,每壹台都要重新選取一次這些 效能計數器 (Performance Counter) 實在很麻煩,所以若能透過指令列工具建立效能監視集合就會十分方便。

備註: 在 Windows Server 2008 的名稱為 可靠性和效能監視器

透過指令列取得所有系統中可用的效能計數器,並另存於文字檔中

typeperf -q -o PerfMon_Counters_All.txt

取得的 PerfMon_Counters.txt 共有數千筆效能計數器物件,如何挑選適當的計數器就是門大學問了,我這裡僅列出與 ASP.NET 相關的計數器如下:

\System\*
\Memory\*
\PhysicalDisk(*)\*
\Process(*)\*
\Processor(*)\*
\Thread(*)\*
\.NET CLR Data(*)\*
\.NET CLR Networking(*)\*
\.NET CLR Memory(*)\*
\.NET CLR Interop(*)\*
\.NET CLR Exceptions(*)\*
\.NET CLR Loading(*)\*
\.NET CLR LocksAndThreads(*)\*
\.NET CLR Jit(*)\*
\.NET CLR Remoting(*)\*
\.NET CLR Security(*)\*
\ASP.NET\*
\ASP.NET Applications(*)\*
\ASP.NET v2.0.50727\*
\ASP.NET Apps v2.0.50727(*)\*
\ASP.NET State Service\*
\Web Service(*)\*

你也可以將以上計數器清單另存成一個文字檔,方便後續載入。

注意: 載入的效能計數器越多對系統的衝擊越大,因此請千萬小心,不要載入過多的效能計數器。

透過指令列建立資料收集器集合工具的使用者定義集合

logman create counter ASP.NET_PerfMon -cf PerfMon_Counters.txt

執行過以上指令後,就會自動在 效能監視器 的 [效能] / [資料收集器集合工具] / [使用者定義] 下方新增一個新的資料即可,如下圖示:

若要修改預設 15 秒的抽樣間隔,可以在建立時多加上 -si 的參數,如下指令為每 60 秒收錄一次效能數據

logman create counter ASP.NET_PerfMon2 -cf PerfMon_Counters.txt -si 60

這個步驟是我覺得最繁瑣的地方,透過指令自動化就會很方便,相較之下其他的指令列參數的用法就變的不那麼重要,可以直接透過 效能監視器 的視窗介面操作比較簡易且直覺,如果有興趣研究其他參數可以執行 logman /? 查詢。

透過指令列啟動剛剛建立的資料收集器

logman start ASP.NET_PerfMon

啟動之後你可以從 效能監視器 的視窗看見該資料集合已經啟動,並開始收集效能數據,如下圖示:

透過指令列停止剛剛建立的資料收集器

logman stop ASP.NET_PerfMon

透過效能監視器查看效能數據報表

由於我收錄的 ASP.NET 相關計數器非常之多,因此你會看到畫面密密麻麻的線條(如下圖點圖可放大)

你也可以考慮將還沒分析到的計數器暫時隱藏 ( 註: 按下 Ctrl + A 可全選 )

也可以點選 選定項目 將選取到的效能計數器特別高亮度顯示

也可以利用不同的檢視查看這些效能數據

 

相關連結