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

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

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

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

```
typeperf -q -o PerfMon_Counters_All.txt
```

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

```sql
\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
```

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

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/44a822066391e671e6c1-image.png)

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

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

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

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

```
logman start ASP.NET_PerfMon
```

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

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/705173ab444cd43893b0-image.png)

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

```
logman stop ASP.NET_PerfMon
```

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

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

[![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/e3544d7e9a53b5bd6974-image_thumb.png)](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/c2de479f145701313e39-image.png)

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

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/cf6ca5c50c393548cade-image.png)

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

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/2679d7c10e2b9097f0c2-image.png)

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

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/d017d5c1b42ce5ae5789-image.png) 

**相關連結**

-   [Using PerfMon Efficiently and Effectively](https://web.archive.org/web/20130523103948/http://supportconnectw.ca.com:80/public/impcd/r11/optimization/Indicators%20for%20Performance%20Tuning.htm)
-   [Perfmon](http://technet.microsoft.com/en-us/library/cc731067\(WS.10\).aspx) ( Windows Server 2008 and Windows Server 2008 R2 )
-   [Logman](http://go.microsoft.com/fwlink/?LinkID=136332) ( Windows Server 2008 and Windows Server 2008 R2 )
-   [Collecting performance counters and using SQL Server to analyze the data](http://www.mssqltips.com/tip.asp?tip=1722)
