Windows

你怎麼知道 w3wp.exe 在做什麼?(或如何診斷性能問題)

  • May 25, 2014

我在我們製作的網站中遇到了性能問題,我不確定如何開始診斷它。

簡短的描述是:我們有一個非常小的站點(http://hearablog.com),流量非常小,在一個蹩腳的專用伺服器中,CPU 總是很高,有時它會保持在 100% 數分鐘,而 w3wp.exe佔了大部分。一個典型的場景是 w3wp.exe 佔用 60%,SQL Server 佔用大約 30%。我們的數據庫也很小。

詳細說明和更多詳細資訊:

  • 該站點由 Cari.Net 託管在一個非常糟糕的伺服器中。從一開始我們就覺得伺服器的行為不太正確,好像有些事情需要太長時間,所以這可能是從一開始就存在配置問題。也可能是我們得到了一個虛擬伺服器,而我們應該有一個專用的,儘管我們沒有證據表明這一點,除了伺服器往往很慢的事實。
  • 伺服器是 Windows 2008 Standard 64 位,帶有 SQL 2008 Express
  • 硬體是 Celeron 2.80 GHz,1Gb RAM
  • 該網站是在 ASP.Net MVC 中開發的,使用實體框架進行數據訪問。
  • 現在,這是一個相當糟糕的硬體,但我和這些傢伙有其他伺服器,硬體相當(或更差),性能比這個好得多。也就是說,其他伺服器有 W2003 和 SQL2005,我使用的是 ASP.Net “WebForms” 2.0,沒有 MVC,沒有 LINQ,沒有 EF;所以我不確定到 2008 年 / 其他東西是否意味著預期會有很大的性能損失。
  • 我定期提供 MP3 文件(5-20​​ Mb),這是一個稍微不尋常的負載,也許這會導致某種問題?

這會導致 w3wp 使用大量 CPU 嗎?

  • 磁碟使用率似乎很低。記憶體通常在 90% 左右,但磁碟使用率似乎表明它沒有太多分頁。
  • 我每天都會收到大量關於 SQL 超時的電子郵件,查詢時間超過 30 秒,儘管我們所有的查詢都非常簡單(或者應該是,但 EF 可能搞砸了)。

這就是資源監視器在這些 100% CPU 的“衝刺”之一中的樣子,以防那裡有任何有用的東西。

替代文字

以及一些性能計數器的快照: 替代文字

現在,讓我非常困惑的是 w3wp 的 CPU 使用率是如此之高。它不應該做太多真的……所以我的問題是……

  • 有沒有辦法找出它在做什麼?也許甚至簡介它?
  • 我應該查看任何性能計數器嗎?
  • 考慮到這種硬體/軟體配置,這是可以預期的嗎?
  • 這可能是由某種配置失敗引起的,你會從哪裡開始尋找?

非常感謝你。

丹尼爾·馬廖拉

您還可以使用 IIS 管理器中的工作程序 UI 並檢查目前正在執行的請求,並查看它們在哪里卡住(如果有)。打開IIS管理器->點擊樹中的伺服器->點兩下工作程序圖示->點兩下正在消耗CPU的工作程序,可以實時查看目前正在執行的請求,這樣就可以看到哪個模組佔用了時間。

還可以考慮使用失敗的請求跟踪來跟踪每個請求的某些時間,以查看它們在哪里花費了很長時間。

引用自:https://serverfault.com/questions/195306