Windows 莫名的效能問題如何追蹤?
這篇文章主要分享一個實際伺服器效能的案例,當系統遇到校能問題(跑得很慢)的時候,
可以做哪些初步的分析與資料的收集,有哪些工具可以使用,協助找到問題的原因。
效能問題情境
使與者回報:每天到了下午就會很慢,甚至程式執行不成功。
於是,系統工程師就查了該伺服器,該伺服器為 Windows file Server,發現檔案在拷貝到另外一台的時候確實變得很慢。
另外,描述很慢的特徵如下:
- 遠端連線到該電腦的時候,滑鼠操作很慢。狀況類似 CPU 100%的現象,但是實際CPU使用量最高卻是只有40%
- 檔案拷貝到另外一台電腦也變得很慢。原本五分鐘可以完成拷貝,變成超過30分鐘。
效能分析的四大天王
當這樣的效能提出現時,最關鍵的是可以不可以找出 Reproduce 的步驟。或是確切知道哪一個時段一定會發生。
如果找不出確切的步驟,又無法掌握確切問題發生的時間,那麼追蹤上就會有些困難。
這種情況下,就必須設定 Windows Performance Monitor Counters做比較長期的紀錄與追蹤。
根據校能分析所使用電腦資源的大類原則,做下列的分析
- CPU: User time & Kernel time。看看CPU 的使用效率。如果CPU很忙,多半是忙在application 還是 I/O。這個案例CPU的使用效率並非持續很高。只是偶爾最多40%。因此初步排除CPU的效能瓶頸。
- Disk: “Disk Queue Length” 主要看是不是有很多 disk的工作被排在queue 中。如果是 Disk 效能瓶頸這個值會高低震盪,或是經常會大於1 。這個案例中,Disk Queue length 都維持很低或是1以下。 於是又初步排除這個原因。
- 記憶體:”Available Memory”與 “Page In/Out”
- 網路:網路的資料量傳輸。另外,可以用 “netstat” 看當時 port listening/opening 的狀況。
建議Performance counters
Performance counters 有很多,哪些指標是筆者建議一定會加入的呢? 參考下圖所示:
還是一樣針對四大天王的效能瓶頸作分析。先釐清到底是網路的效能瓶頸、還是 CPU效能瓶頸、還是磁碟 or 記憶體。
細部追蹤 Process Monitor
當有了初步的方向之後,接著可以做細部的追蹤。這個工具process monitor 最大的優點是將整各系統所有的活動資訊都記錄下來,並且可以做事後的分析。
如下圖所示,我們可以知道當時 CPU最忙碌的是哪些 process。哪些 process 有存取網路或是 Disk I/O的狀況。
但是最大的缺點是該紀錄檔會在短時間內產生很大的檔案。有可能在十分鐘內就產生出 200MB的紀錄檔案。
如果可以知道發生效能問題的確切時間是最理想的狀況。因為我們就可以針對該時段,錄製這樣的process monitor 資訊。
但是如果發生效能問題的時間點很難掌握,需要長時間追蹤,筆者建議取一定時間的 sampling。例如,每隔一個小時,每次取連續十分鐘。
Process Monitor 如何設定一段時間的截取呢?
如果是晚上發生,我們不可能 24小時待命,每個小時都用人工啟動process monitor ,執行30分鐘後停止。
因此,如果該process monitor資訊的收集,可以設定成定期的啟動並且停止的話會對於效能資訊的收集更有幫助。
我們主要透過 Windows Scheduled Tasks來完成這件事情。
對於Process Monitor來說,必須要設定兩個 scheduled tasks。一個是啟動 Process Monitor的log 收集,另外一個是停止process Monitor的log 收集。
另外補充的是,該task的執行必須設定成為 System的使用者執行。相關畫面步驟如下:
啟動 Process Monitor
參數的部分,除了最後紀錄檔名可以自訂外,其他必須相同。
/accepteula /quiet /BackingFile c:\ProMon.plm
停止 Process Monitor
工具: C:\tools\procmon.exe
停止:/terminate
透過這個參數的設定,我們才有辦法將已經啟動的 process Monitor 終止
System Users
另外,不管是啟動或是停止 Scheduled Tasks,都必須要設定為 System 的執行。
Windows Performance Analyzer
download WPA by visiting http://go.microsoft.com/fwlink/?LinkID=293840.
上述的工具都是可以提供即時與事後分析的好工具,但是都有缺點。
即時分析的 process monitor 所收集的資料記錄檔案,檔案大小太大。
Process Explorer 只能看當下的資訊。
Performance monitor 只記錄 counters 比較難更進一步的追查與關連所有的系統活動
因此,Windows Performance analyzer 集大成於一身,解決上述所有問題。筆者十分建議使用!