怎么在IIS7.x應用程序池中排除高CPU-創(chuàng)新互聯(lián)

這篇文章給大家介紹怎么在IIS 7.x應用程序池中排除高CPU,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務領域包括:成都網(wǎng)站制作、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務,滿足客戶于互聯(lián)網(wǎng)時代的通城網(wǎng)站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡建設合作伙伴!

<h5 id="tools-used-in-this-troubleshooter" ">此疑難解答中使用的工具:

  • 調(diào)試診斷1.2

  • 性能監(jiān)視器

此材料僅供參考。Microsoft不作任何明示或暗示的保證。

概觀

此問題排查工具將幫助您識別IIS應用程序池中持續(xù)存在的高CPU的原因。重要的是要記住,隨著Web應用程序提供請求,CPU使用率正常增加。但是,如果您始終認為CPU長時間保持在高水平(在80%或更高的區(qū)域),您的應用程序的性能將會受到影響。因此,了解持續(xù)高CPU的原因很重要,以便可以解決和糾正

腳本

IIS中的應用程序池遇到長時間超過90%的高CPU。當測試應用程序時,不會遇到任何問題。然而,一旦應用程序遇到實際的用戶負載,CPU將爬升到很高的百分比并保持不變。要恢復,應該重新啟動應用程序池,但是在這樣做之后,CPU再次爬上高層。

數(shù)據(jù)采集

遇到高CPU時,首先應該做的是確定正在消耗CPU的進程。您可以使用任務管理器中的進程選項卡來執(zhí)行此操作。確保您檢查顯示所有用戶的進程復選框。圖1顯示了此框,并顯示了w3wp.exe進程(承載IIS應用程序池的進程),消耗高級別的CPU。

怎么在IIS 7.x應用程序池中排除高CPU

圖1 - 任務管理器顯示高CPU。

您還可以使用性能監(jiān)視器來確定使用CPU的進程。有關使用性能監(jiān)視器的更多信息,請參閱此故障排除程序中稍后分析性能數(shù)據(jù)。

小費

如果您需要確定哪個應用程序池與特定的w3wp.exe進程相關聯(lián),請打開管理命令提示符,切換到該%windir%\System32\inetsrv文件夾cd %windir%\System32\inetsrv并運行appcmd list wp。這將以引號顯示w3wp.exe進程的進程標識符(PID)。您可以將該PID與任務管理器中可用的PID相匹配。

一旦您確認w3wp.exe進程遇到高CPU,您將需要收集兩條信息,以確定導致問題的原因。

  • 性能監(jiān)視器數(shù)據(jù)收集器集。

  • w3wp.exe進程的用戶模式內(nèi)存轉(zhuǎn)儲。

這些都將需要在高CPU事件期間收集。

收集性能監(jiān)視器數(shù)據(jù)收集器集

性能監(jiān)視器(Perfmon)數(shù)據(jù)對于確定高CPU問題的原因往往至關重要。獲取應用程序執(zhí)行的“大圖”視圖也是非常有用的。

可以實時查看Perfmon數(shù)據(jù),也可以將其收集到數(shù)據(jù)收集器集中,以便稍后進行查看。為了排除高CPU問題,我們需要收集數(shù)據(jù)收集器集。要創(chuàng)建用于排除高CPU故障的數(shù)據(jù)收集器集,請按照下列步驟操作。

  1. 從Windows控制面板打開管理工具。

  2. 雙擊性能監(jiān)視器。

  3. 展開“數(shù)據(jù)收集器集”節(jié)點。

  4. 右鍵單擊“用戶定義”,然后選擇“新建”,“數(shù)據(jù)收集器集”。

  5. 輸入高CPU作為數(shù)據(jù)采集器的名稱。

  6. 選擇手動創(chuàng)建(高級)單選按鈕。

  7. 點擊下一步。

  8. 選擇創(chuàng)建數(shù)據(jù)日志單選按鈕。

  9. 檢查性能計數(shù)器復選框。

  10. 點擊下一步。

  11. 單擊添加按鈕。

    如果您的應用程序不是ASP.NET應用程序,請繼續(xù)執(zhí)行步驟19。

  12. 滾動到計數(shù)器列表的頂部,然后選擇.NET CLR內(nèi)存。

  13. 在實例列表中,選擇<all instances>。

  14. 單擊添加按鈕將計數(shù)器添加到添加的計數(shù)器列表。

  15. 從計數(shù)器列表中選擇ASP.NET,然后單擊添加。

  16. 從計數(shù)器列表中選擇ASP.NET應用程序。

  17. 從實例列表中選擇<all instances>。

  18. 單擊添加。

  19. 從計數(shù)器列表中展開“處理”。(確保展開Process而不是處理器。)

  20. 從Process對象中選擇%Processor Time。

  21. 從實例列表中選擇<all instances>。

  22. 單擊添加。

  23. 從計數(shù)器列表中展開線程。

  24. 從Thread對象中選擇%Processor Time。

  25. 從實例列表中選擇<all instances>。

  26. 單擊添加。

  27. 從實例列表中選擇ID線程。

  28. 單擊添加。

您的對話框現(xiàn)在應該如圖2所示。

怎么在IIS 7.x應用程序池中排除高CPU

圖2 - 創(chuàng)建數(shù)據(jù)收集器集。

單擊確定按鈕,然后單擊下一步按鈕。記下保存數(shù)據(jù)收集器的位置。(如果需要,可以更改此位置。)然后單擊完成。

數(shù)據(jù)收集器集尚未運行。要啟動它,請右鍵單擊用戶定義節(jié)點下的高CPU,然后從菜單中選擇開始。

創(chuàng)建調(diào)試診斷1.2規(guī)則

發(fā)生高CPU狀況時收集用戶模式進程轉(zhuǎn)儲的最簡單方法是使用Debug Diagnostics 1.2或DebugDiag。您可以從以下URL下載DebugDiag。

https://www.microsoft.com/download/en/details.aspx?id=26798

在您的服務器上安裝DebugDiag 1.2并運行它。(安裝后您將在開始菜單中找到它。)運行DebugDiag時,將顯示“選擇規(guī)則類型”對話框。按照以下步驟為應用程序池創(chuàng)建崩潰規(guī)則。

  1. 選擇性能并單擊下一步。

  2. 選擇性能計數(shù)器,然后單擊下一步。

  3. 單擊添加Perf觸發(fā)器。

  4. 展開Processor(而不是Process)對象并選擇%Processor Time。請注意,如果您在Windows Server 2008 R2上,并且有超過64個處理器,請選擇Processor Information對象而不是Processor對象。)

  5. 在實例列表中,選擇_Total。

  6. 單擊添加,然后單擊確定。

  7. 選擇新添加的觸發(fā)器,然后單擊編輯閾值,如圖3所示。

  8. 在下拉列表中選擇上方。

  9. 將閾值更改為80。

  10. 輸入20秒的秒數(shù)。(如果需要,您可以調(diào)整此值,但請注意不要指定少量秒鐘以防止發(fā)生錯誤觸發(fā)。)

  11. 單擊確定。

  12. 點擊下一步。

  13. 單擊添加轉(zhuǎn)儲目標。

  14. 從下拉列表中選擇Web應用程序池。

  15. 從應用程序池列表中選擇您的應用程序池。

  16. 單擊確定。

  17. 點擊下一步。

  18. 再次點擊下一步。

  19. 如果您希望輸入規(guī)則的名稱,并記下要保存轉(zhuǎn)儲的位置。如果需要,您可以更改此位置。

  20. 點擊下一步。

  21. 選擇激活規(guī)則,然后單擊完成。

小費

您可以使用與步驟13-15中使用相同的技術添加多個轉(zhuǎn)儲目標來創(chuàng)建多個應用程序池的轉(zhuǎn)儲。

怎么在IIS 7.x應用程序池中排除高CPU

圖3 - 在DebugDiag中添加perf觸發(fā)器。

此規(guī)則將創(chuàng)建11個轉(zhuǎn)儲文件。前10名將是“小型轉(zhuǎn)儲”,規(guī)模相當小。最后的轉(zhuǎn)儲將是一個具有完整內(nèi)存的轉(zhuǎn)儲,并且轉(zhuǎn)儲將會更大。

一旦發(fā)生高CPU問題,您將要停止收集數(shù)據(jù)的Perfmon數(shù)據(jù)收集器集。為此,請右鍵單擊用戶定義節(jié)點下列出的高CPU數(shù)據(jù)收集器集,然后選擇停止。

數(shù)據(jù)分析

在高CPU事件之后,您將有兩組要查看的數(shù)據(jù); Perfmon數(shù)據(jù)收集器集和內(nèi)存轉(zhuǎn)儲。我們先來看一下Perfmon的數(shù)據(jù)。

分析性能數(shù)據(jù)

要查看您的問題的Perfmon數(shù)據(jù),請右鍵單擊用戶定義節(jié)點下列出的高CPU數(shù)據(jù)收集器集,然后選擇最新報告。您會看到類似于圖4所示的屏幕。

怎么在IIS 7.x應用程序池中排除高CPU

圖4 - Perfmon顯示高CPU數(shù)據(jù)。

首先要刪除所有當前的計數(shù)器,以便您可以添加要查看的顯式計數(shù)器。選擇列表中的第一個計數(shù)器。然后滾動到列表的底部,然后在按住鍵盤上的Shift鍵的同時單擊最后一個計數(shù)器。選擇所有計數(shù)器后,按鍵盤上的Delete鍵將其刪除。

現(xiàn)在使用這些步驟添加Process /%Processor Time計數(shù)器。

  1. 右鍵單擊Perfmon右窗格中的任意位置,然后選擇添加計數(shù)器。

  2. 展開Process對象。

  3. 從列表中選擇%Processor Time。

  4. 從實例列表中選擇<all instances>。

  5. 單擊添加。

  6. 單擊確定。

現(xiàn)在將顯示一個顯示數(shù)據(jù)收集器集運行時計算機上每個進程使用的處理器時間的圖形。隔離哪個進程使用最高級別CPU的最簡單的方法是啟用Perfmon的高亮功能。

為此,請選擇列表中的第一個計數(shù)器,然后按Ctrl + H。完成此操作后,所選的過程將在圖形上顯示為粗體黑線。

使用鍵盤上的向下箭頭向下移動進程列表,直到找到顯示最多CPU使用率的進程。在圖5中,您可以清楚地看到w3wp.exe進程在計算機上使用了大量的CPU。這證實IIS應用程序池在計算機上造成高CPU利用率。

怎么在IIS 7.x應用程序池中排除高CPU

圖5 - 顯示w3wp.exe的CPU使用情況的Perfmon。

小費

Perfmon可以在確定應用程序中的性能問題方面非常有用。Perfmon日志中收集的數(shù)據(jù)可以顯示您正在執(zhí)行的請求數(shù)量(使用ASP.NET和ASP.NET應用程序?qū)ο螅€可以向您顯示有關應用程序執(zhí)行情況的其他重要性能數(shù)據(jù)。

要解決導致高CPU問題的根源,我們來看看使用DebugDiag創(chuàng)建的轉(zhuǎn)儲。

使用DebugDiag進行轉(zhuǎn)儲分析

DebugDiag可以通過進行自動轉(zhuǎn)儲分析來識別許多問題。對于這個特殊問題,DebugDiag的性能分析器非常適合幫助確定高CPU問題的根本原因。要使用分析儀,請按照下列步驟操作

  1. 選擇DebugDiag中的Advanced Analysis選項卡。

  2. 選擇性能分析儀。

  3. 單擊添加數(shù)據(jù)文件。

  4. 瀏覽到創(chuàng)建轉(zhuǎn)儲的位置。默認情況下,這將是文件夾的子C:\Program Files\DebugDiag\Logs文件夾。

  5. 選擇一個轉(zhuǎn)儲,然后按Ctrl + A選擇該文件夾中的所有轉(zhuǎn)儲。

  6. 單擊打開。

  7. 單擊開始分析。

DebugDiag將需要幾分鐘的時間來解析轉(zhuǎn)儲并提供分析。完成分析后,您將看到類似于圖6所示的頁面。

怎么在IIS 7.x應用程序池中排除高CPU

圖6 - DebugDiag分析報告。

請注意,報告的頂部告訴您檢測到高CPU。在右欄中,您會看到建議,其中包括平均CPU時間前7位線程的鏈接。點擊該鏈接,您將看到有關這些頂級CPU消費者在做什么的信息。圖7顯示了我的應用程序中這些線程正在做什么。

怎么在IIS 7.x應用程序池中排除高CPU

圖7 - 高CPU線程的詳細信息。

從此分析可以看出,F(xiàn)astApp應用程序中的default.aspx頁面正在運行。如果我進一步向下調(diào)用堆棧(在頁面的底部),我可以看到這個線程正在進行字符串連接。(請注意在調(diào)用堆棧上調(diào)用System.String.Concat。)如果我分析其他頂級的CPU線程,我看到相同的模式。

下一步是查看FastApp應用程序的default.aspx頁面中的Page_Load事件。當我這樣做,我找到以下代碼。

HTML復制

htmlTable += "<< 5000; x++)
{ htmlTable += "<tr>" + "<td>" + "Cell A" + x.ToString() + "</<</</</		結(jié)論通過使用Perfmon和DebugDiag,您可以輕松收集有助于確定應用程序池中高CPU的原因的數(shù)據(jù)。如果您無法使用這些技術找到根本原因,您可以通過https://support.microsoft.com/與Microsoft打開支持票據(jù),我們可以幫助您確定問題的原因。當您打開案例時,通過將Perfmon數(shù)據(jù)和轉(zhuǎn)儲準備給我們,您將大大減少我們協(xié)助您所需的時間。<h4 id="other-resources" ">其他資源
				排除高CPU利用率			
				排除高CPU性能問題			
				什么收集排除高CPU或掛起			
				.NET調(diào)試演示			
				IIS工作進程性能監(jiān)控提示			

關于怎么在IIS 7.x應用程序池中排除高CPU就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

名稱欄目:怎么在IIS7.x應用程序池中排除高CPU-創(chuàng)新互聯(lián)
網(wǎng)頁地址:http://bm7419.com/article2/ddjhoc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設計、小程序開發(fā)、靜態(tài)網(wǎng)站、軟件開發(fā)網(wǎng)站排名、品牌網(wǎng)站建設

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應式網(wǎng)站建設