這篇文章給大家介紹怎么在IIS 7.x應用程序池中排除高CPU,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
創(chuàng)新互聯(lián)主營陽原網站建設的網絡公司,主營網站建設方案,APP應用開發(fā),陽原h(huán)5小程序制作搭建,陽原網站營銷推廣歡迎陽原等地區(qū)企業(yè)咨詢
調試診斷1.2
性能監(jiān)視器
此材料僅供參考。Microsoft不作任何明示或暗示的保證。
此問題排查工具將幫助您識別IIS應用程序池中持續(xù)存在的高CPU的原因。重要的是要記住,隨著Web應用程序提供請求,CPU使用率正常增加。但是,如果您始終認為CPU長時間保持在高水平(在80%或更高的區(qū)域),您的應用程序的性能將會受到影響。因此,了解持續(xù)高CPU的原因很重要,以便可以解決和糾正
IIS中的應用程序池遇到長時間超過90%的高CPU。當測試應用程序時,不會遇到任何問題。然而,一旦應用程序遇到實際的用戶負載,CPU將爬升到很高的百分比并保持不變。要恢復,應該重新啟動應用程序池,但是在這樣做之后,CPU再次爬上高層。
遇到高CPU時,首先應該做的是確定正在消耗CPU的進程。您可以使用任務管理器中的進程選項卡來執(zhí)行此操作。確保您檢查顯示所有用戶的進程復選框。圖1顯示了此框,并顯示了w3wp.exe進程(承載IIS應用程序池的進程),消耗高級別的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進程的用戶模式內存轉儲。
這些都將需要在高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ù)收集器集,請按照下列步驟操作。
從Windows控制面板打開管理工具。
雙擊性能監(jiān)視器。
展開“數(shù)據(jù)收集器集”節(jié)點。
右鍵單擊“用戶定義”,然后選擇“新建”,“數(shù)據(jù)收集器集”。
輸入高CPU作為數(shù)據(jù)采集器的名稱。
選擇手動創(chuàng)建(高級)單選按鈕。
點擊下一步。
選擇創(chuàng)建數(shù)據(jù)日志單選按鈕。
檢查性能計數(shù)器復選框。
點擊下一步。
單擊添加按鈕。
如果您的應用程序不是ASP.NET應用程序,請繼續(xù)執(zhí)行步驟19。
滾動到計數(shù)器列表的頂部,然后選擇.NET CLR內存。
在實例列表中,選擇
單擊添加按鈕將計數(shù)器添加到添加的計數(shù)器列表。
從計數(shù)器列表中選擇ASP.NET,然后單擊添加。
從計數(shù)器列表中選擇ASP.NET應用程序。
從實例列表中選擇
單擊添加。
從計數(shù)器列表中展開“處理”。(確保展開Process而不是處理器。)
從Process對象中選擇%Processor Time。
從實例列表中選擇
單擊添加。
從計數(shù)器列表中展開線程。
從Thread對象中選擇%Processor Time。
從實例列表中選擇
單擊添加。
從實例列表中選擇ID線程。
單擊添加。
您的對話框現(xiàn)在應該如圖2所示。
圖2 - 創(chuàng)建數(shù)據(jù)收集器集。
單擊確定按鈕,然后單擊下一步按鈕。記下保存數(shù)據(jù)收集器的位置。(如果需要,可以更改此位置。)然后單擊完成。
數(shù)據(jù)收集器集尚未運行。要啟動它,請右鍵單擊用戶定義節(jié)點下的高CPU,然后從菜單中選擇開始。
創(chuàng)建調試診斷1.2規(guī)則
發(fā)生高CPU狀況時收集用戶模式進程轉儲的最簡單方法是使用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ī)則。
選擇性能并單擊下一步。
選擇性能計數(shù)器,然后單擊下一步。
單擊添加Perf觸發(fā)器。
展開Processor(而不是Process)對象并選擇%Processor Time。請注意,如果您在Windows Server 2008 R2上,并且有超過64個處理器,請選擇Processor Information對象而不是Processor對象。)
在實例列表中,選擇_Total。
單擊添加,然后單擊確定。
選擇新添加的觸發(fā)器,然后單擊編輯閾值,如圖3所示。
在下拉列表中選擇上方。
將閾值更改為80。
輸入20秒的秒數(shù)。(如果需要,您可以調整此值,但請注意不要指定少量秒鐘以防止發(fā)生錯誤觸發(fā)。)
單擊確定。
點擊下一步。
單擊添加轉儲目標。
從下拉列表中選擇Web應用程序池。
從應用程序池列表中選擇您的應用程序池。
單擊確定。
點擊下一步。
再次點擊下一步。
如果您希望輸入規(guī)則的名稱,并記下要保存轉儲的位置。如果需要,您可以更改此位置。
點擊下一步。
選擇激活規(guī)則,然后單擊完成。
小費
您可以使用與步驟13-15中使用相同的技術添加多個轉儲目標來創(chuàng)建多個應用程序池的轉儲。
圖3 - 在DebugDiag中添加perf觸發(fā)器。
此規(guī)則將創(chuàng)建11個轉儲文件。前10名將是“小型轉儲”,規(guī)模相當小。最后的轉儲將是一個具有完整內存的轉儲,并且轉儲將會更大。
一旦發(fā)生高CPU問題,您將要停止收集數(shù)據(jù)的Perfmon數(shù)據(jù)收集器集。為此,請右鍵單擊用戶定義節(jié)點下列出的高CPU數(shù)據(jù)收集器集,然后選擇停止。
在高CPU事件之后,您將有兩組要查看的數(shù)據(jù); Perfmon數(shù)據(jù)收集器集和內存轉儲。我們先來看一下Perfmon的數(shù)據(jù)。
分析性能數(shù)據(jù)
要查看您的問題的Perfmon數(shù)據(jù),請右鍵單擊用戶定義節(jié)點下列出的高CPU數(shù)據(jù)收集器集,然后選擇最新報告。您會看到類似于圖4所示的屏幕。
圖4 - Perfmon顯示高CPU數(shù)據(jù)。
首先要刪除所有當前的計數(shù)器,以便您可以添加要查看的顯式計數(shù)器。選擇列表中的第一個計數(shù)器。然后滾動到列表的底部,然后在按住鍵盤上的Shift鍵的同時單擊最后一個計數(shù)器。選擇所有計數(shù)器后,按鍵盤上的Delete鍵將其刪除。
現(xiàn)在使用這些步驟添加Process /%Processor Time計數(shù)器。
右鍵單擊Perfmon右窗格中的任意位置,然后選擇添加計數(shù)器。
展開Process對象。
從列表中選擇%Processor Time。
從實例列表中選擇
單擊添加。
單擊確定。
現(xiàn)在將顯示一個顯示數(shù)據(jù)收集器集運行時計算機上每個進程使用的處理器時間的圖形。隔離哪個進程使用最高級別CPU的最簡單的方法是啟用Perfmon的高亮功能。
為此,請選擇列表中的第一個計數(shù)器,然后按Ctrl + H。完成此操作后,所選的過程將在圖形上顯示為粗體黑線。
使用鍵盤上的向下箭頭向下移動進程列表,直到找到顯示最多CPU使用率的進程。在圖5中,您可以清楚地看到w3wp.exe進程在計算機上使用了大量的CPU。這證實IIS應用程序池在計算機上造成高CPU利用率。
圖5 - 顯示w3wp.exe的CPU使用情況的Perfmon。
小費
Perfmon可以在確定應用程序中的性能問題方面非常有用。Perfmon日志中收集的數(shù)據(jù)可以顯示您正在執(zhí)行的請求數(shù)量(使用ASP.NET和ASP.NET應用程序對象),還可以向您顯示有關應用程序執(zhí)行情況的其他重要性能數(shù)據(jù)。
要解決導致高CPU問題的根源,我們來看看使用DebugDiag創(chuàng)建的轉儲。
使用DebugDiag進行轉儲分析
DebugDiag可以通過進行自動轉儲分析來識別許多問題。對于這個特殊問題,DebugDiag的性能分析器非常適合幫助確定高CPU問題的根本原因。要使用分析儀,請按照下列步驟操作
選擇DebugDiag中的Advanced Analysis選項卡。
選擇性能分析儀。
單擊添加數(shù)據(jù)文件。
瀏覽到創(chuàng)建轉儲的位置。默認情況下,這將是文件夾的子C:\Program Files\DebugDiag\Logs文件夾。
選擇一個轉儲,然后按Ctrl + A選擇該文件夾中的所有轉儲。
單擊打開。
單擊開始分析。
DebugDiag將需要幾分鐘的時間來解析轉儲并提供分析。完成分析后,您將看到類似于圖6所示的頁面。
圖6 - DebugDiag分析報告。
請注意,報告的頂部告訴您檢測到高CPU。在右欄中,您會看到建議,其中包括平均CPU時間前7位線程的鏈接。點擊該鏈接,您將看到有關這些頂級CPU消費者在做什么的信息。圖7顯示了我的應用程序中這些線程正在做什么。
圖7 - 高CPU線程的詳細信息。
從此分析可以看出,F(xiàn)astApp應用程序中的default.aspx頁面正在運行。如果我進一步向下調用堆棧(在頁面的底部),我可以看到這個線程正在進行字符串連接。(請注意在調用堆棧上調用System.String.Concat。)如果我分析其他頂級的CPU線程,我看到相同的模式。
下一步是查看FastApp應用程序的default.aspx頁面中的Page_Load事件。當我這樣做,我找到以下代碼。
HTML復制
htmlTable += "<< 5000; x++) { htmlTable += "" + " " + "Cell A" + x.ToString() + "< 結論通過使用Perfmon和DebugDiag,您可以輕松收集有助于確定應用程序池中高CPU的原因的數(shù)據(jù)。如果您無法使用這些技術找到根本原因,您可以通過https://support.microsoft.com/與Microsoft打開支持票據(jù),我們可以幫助您確定問題的原因。當您打開案例時,通過將Perfmon數(shù)據(jù)和轉儲準備給我們,您將大大減少我們協(xié)助您所需的時間。 其他資源 排除高CPU利用率 排除高CPU性能問題 什么收集排除高CPU或掛起 .NET調試演示 IIS工作進程性能監(jiān)控提示
關于怎么在IIS 7.x應用程序池中排除高CPU就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
網站欄目:怎么在IIS7.x應用程序池中排除高CPU
當前URL:http://weahome.cn/article/pjhjjh.html其他資訊