Windows Server 2008 效能監測及 Email 通知報警

溫謙發表於2013-04-16

對於網站來說,效能問題是至關重要的。關於效能,最重要的有兩點:

  • 需要不斷地發現速度或資源瓶頸的位置,然後採取針對性的措施進行優化。
  • 對於執行中的伺服器,隨時瞭解執行的狀態。當伺服器出現問題的時候,儘早發現,儘早恢復。比如訪問量由於某些原因增大,導致 CPU 升高,這有可能導致整臺伺服器的當機,這是如果沒有及時發現,就可能帶來很大的麻煩。

當然效能監測有大量專業工具可以選擇。不過最簡單的情況下,基於作業系統自帶的功能,也可以方便滴實現這面的功能。這裡記錄一下最基本的幾個功能:

效能監視器

執行: 開始 -> 控制皮膚 -> 管理工具 -> 效能監視器

在效能監視器中,可以監測大量各種不同的“效能計數器”,它們分別指示不同的效能指標。例如,最基本的CPU的使用率、網站的請求數量等等。

最常用的可能有下面幾個:

  • CPU 佔用率 (Processor -> % Processor Time)
  • 平均每秒執行的請求數(ASP.NET Applications -> Requests / Sec)
  • 執行最近的請求使用的時間(ASP.NET Applications -> Request Execution Time):
  • 當前正在執行的請求數(ASP.NET Applications -> Requests Executing)
  • 等待處理的請求數量(ASP.NET -> Requests Queued)

效能監視器

注意可以通過選項設定取樣間隔和持續時間,預設為1秒和100秒。我理解持續時間用於計算平均值,例如上圖中,我設定為取樣間隔為5秒鐘,持續時間為5分鐘,那麼選中“執行最近的請求使用的時間”這一行,曲線圖的下面會顯示:最新的一個請求用了62毫秒,最近5分鐘裡的所有請求平均使用102毫秒,這裡可以看出“持續時間”這個選項的作用。從這裡也可以看出有一些請求的處理時間相當長,它們都是植的優化的地方。

自動傳送 Email 通知

此外,對於小網站來說,不可能有人分分秒秒盯著CPU曲線。因此,設定一些限值,能夠自動提醒是很必要的功能。而效能監視器提供了大量了資料,包括處理器、記憶體、硬碟、網路、資料庫以及其他各種服務的效能指標,你可以找到你需要監視的指標,並設定一定值限值,當超過該值時,就發出電子郵件,通知負責的人員。

在 Windows Server 2003 上,效能監視器可以直接掛上報警的操作,而在 Windows Server 2008 中,需要把相關的操作移到“任務計劃程式”中,因此二者不太一樣,這裡記錄一下操作步驟,以備後查。

Step 1: 使用命令列傳送郵件程式,設定發郵件指令碼

1: 下載一個可以通過命令列方式傳送 Email 的程式,我使用的是SmtpMailSender :http://www.snapfiles.com/downloads/smtpmailsender/dlsmtpmailsender.html

2: 把下載的 .exe 檔案下載到一個資料夾中,例如:d:\smtpmailsender\smtpmailsender.exe

3: 首先執行這個程式,點選“設定”按鈕,在對話方塊中設定 smtp、使用者名稱、埠、密碼等等,和普通的郵件客戶端程式沒有區別。然後關閉程式。

4: 測試這個程式是否正常。建立一個文字檔案,命名為 perfalert.cmd,同樣儲存在 d:\smtpmailsender\ 目錄中,其內容為

smtpmailsender.exe -f "發件人地址"  -t "收件人地址" -s "郵件標題" -b "郵件正文" -send

5: 然後進入命令列視窗,執行 perfalert.cmd,如果你的郵箱收到這個郵件就說明發郵件的程式配置好了。下面開始設定任務計劃。

Setp 2: 設定任務計劃

6: 執行: 開始 -> 附件 -> 系統工具 -> 任務計劃程式

7: 右側窗格 -> 建立任務(不是建立基本任務)

8: 在“名稱”選項卡,輸入一個名稱,例如“PerfAlert”

9: 在“操作”選項卡,按“新建”按鈕,選擇“啟動程式”,然後下面按瀏覽按鈕,找到剛才儲存好的 perfalert.cmd 檔案。注意一定要在下面的“起始於”文字框中輸入儲存上面這個檔案的目錄路徑,例如:d:\smtpmailsender\ 。

10: 一路確定儲存,這樣就把任務計劃設定好了。下面就要設定效能監視器的報警了。

Setp 3: 設定效能監視器的報警選項

11: 在任務監視器左側窗格中,選擇 資料收集器 -> 使用者定義,滑鼠右鍵,選擇 新建 -> 收集資料,在彈出的對話方塊中輸入一個名字,然後選擇“手動建立”,然後“下一步” -> “效能計數器報警” -> “下一步” -> 選擇某一個效能計數器,比如選擇“Processor -> % Processor Time”,然後在下面選擇“大於”,並輸入一個限值,為了便於測試,可以輸入一個低一些的數值,這樣保證很快就會觸發,然後完成關閉對話方塊。

12: 在右側可一看到剛才建立的這個報警對應於一個專案,滑鼠右鍵單擊它,出現對話方塊,在“警報”頁面,輸入一個取樣間隔,比如2分鐘,在“警告操作”頁面,下拉框中選中對應的那個資料收集器集,然後在“警告任務”頁面,最上面的文字框輸入在任務計劃中建立的任務名稱,例如上面的 PerfAlert。然後確定,關閉對話方塊。

13: 滑鼠右鍵單擊建立的資料收集器集,在彈出選單中選擇“開始”。這樣的這個監視才開始執行,它兩分鐘取樣一次,如果CPU使用率超過設定的數值,就會啟動任務計劃中設定的傳送郵件的任務。

好了,一切OK!

相關文章