- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業(yè)務(wù)經(jīng)營許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯(lián)網(wǎng)協(xié)會理事單位
- 安全聯(lián)盟認(rèn)證網(wǎng)站身份V標(biāo)記
- 域名注冊服務(wù)機(jī)構(gòu)許可:滇D3-20230001
- 代理域名注冊服務(wù)機(jī)構(gòu):新網(wǎng)數(shù)碼
歡迎來到藍(lán)隊(duì)云技術(shù)小課堂,每天分享一個技術(shù)小知識。
在 IIS 服務(wù)器上,特別是運(yùn)行虛擬主機(jī)環(huán)境時(shí),很多管理員都會遇到 CPU 占用 100% 或系統(tǒng)資源異常的情況,但往往不知道是哪個網(wǎng)站導(dǎo)致了問題。以下方法可以幫助我們快速定位每個站點(diǎn)的資源使用情況(主要是內(nèi)存和 CPU 占用)。
步驟一:將每個網(wǎng)站設(shè)置為獨(dú)立進(jìn)程
1.打開 IIS 管理器
選擇具體的站點(diǎn),右鍵點(diǎn)擊 “屬性”。
切換到 “主目錄” 選項(xiàng)卡,將 “應(yīng)用程序保護(hù)” 改為 “高(獨(dú)立)”。
這樣會為每個站點(diǎn)啟動一個獨(dú)立的 dllhost.exe 進(jìn)程。
2.查看獨(dú)立進(jìn)程的資源占用
打開 任務(wù)理器,切換到 “進(jìn)程” 選項(xiàng)卡。
你會看到多個 dllhost.exe 進(jìn)程,每個進(jìn)程對應(yīng)一個獨(dú)立的站點(diǎn)。
此時(shí)可以看到這些進(jìn)程的 CPU 占用 和 內(nèi)存使用量。
步驟二:找到每個站點(diǎn)對應(yīng)的進(jìn)程(dllhost.exe)
接下來,我們需要確認(rèn)每個 dllhost.exe 進(jìn)程對應(yīng)的是哪個網(wǎng)站。
1.打開組件服務(wù)管理器
在 運(yùn)行 中輸入 dcomcnfg,按回車打開 組件服務(wù)。
依次展開:組件服務(wù) → 計(jì)算機(jī) → 我的電腦 → COM+ 應(yīng)用程序。
2.查看站點(diǎn)與進(jìn)程的關(guān)聯(lián)
在 COM+ 應(yīng)用程序 下,你會看到類似于 IIS-{domain.com//Root} 這樣的條目。
每個條目代表一個 IIS 網(wǎng)站,名稱中包含對應(yīng)的域名或站點(diǎn)路徑。
點(diǎn)擊頂部工具欄中的 “狀態(tài)查看”,你會看到如下信息:
名稱 運(yùn)行狀態(tài) PID
IIS-{example.com//Root} 是 1688
PID 就是對應(yīng)的 dllhost.exe 進(jìn)程 ID,可以在任務(wù)管理器中找到。
3.確認(rèn)資源占用
打開任務(wù)管理器 → “詳細(xì)信息” 選項(xiàng)卡。
找到對應(yīng)的 dllhost.exe,對比進(jìn)程 ID(PID),即可查看該網(wǎng)站的 CPU 占用 和 內(nèi)存使用量。
這樣就能快速定位是哪個網(wǎng)站導(dǎo)致了資源占用異常。
步驟三:通過 PowerShell 腳本快速定位
如果服務(wù)器站點(diǎn)較多,手動排查效率低,可以通過 PowerShell 腳本實(shí)現(xiàn)快速定位。
# 加載 IIS 模塊
Import-Module WebAdministration
# 獲取所有運(yùn)行的 w3wp.exe 進(jìn)程和對應(yīng)的資源占用
$Processes = Get-Process w3wp -ErrorAction SilentlyContinue
$AppPools = Get-WebAppPoolState | Where-Object { $_.Value -eq "Started" }
# 遍歷應(yīng)用程序池,輸出內(nèi)存和 CPU 占用
foreach ($AppPool in $AppPools) {
$AppPoolName = $AppPool.ItemXPath.Split("/")[-1]
$PID = (Get-WmiObject Win32_Process | Where-Object { $_.Name -eq "w3wp.exe" -and $_.CommandLine -match $AppPoolName }).ProcessId
if ($PID) {
$Process = $Processes | Where-Object { $_.Id -eq $PID }
Write-Output "App Pool: $AppPoolName | PID: $PID | Memory: $($Process.WorkingSet / 1MB) MB | CPU: $($Process.CPU)"
}
}
腳本功能:
列出每個 IIS 應(yīng)用程序池的進(jìn)程 ID、內(nèi)存使用量和 CPU 使用率。
適用于需要快速定位資源占用高的站點(diǎn)。
步驟四:結(jié)合 Perfmon 進(jìn)行深入分析
1.打開 性能監(jiān)視器(Perfmon):
在 運(yùn)行 中輸入 perfmon.msc 并回車。
2.添加 w3wp 或 dllhost 進(jìn)程的監(jiān)控:
在左側(cè)面板中,選擇 “性能監(jiān)視器”,然后點(diǎn)擊 “添加計(jì)數(shù)器”。
添加 Process → Working Set(內(nèi)存占用) 和 % Processor Time(CPU 占用)。
選中對應(yīng)的進(jìn)程,查看資源占用情況。
藍(lán)隊(duì)云官網(wǎng)上擁有完善的技術(shù)支持庫可供參考,大家可自行查閱,更多技術(shù)問題,可以直接咨詢。同時(shí),藍(lán)隊(duì)云整理了運(yùn)維必備的工具包免費(fèi)分享給大家使用,需要的朋友可以直接咨詢。
更多技術(shù)知識,藍(lán)隊(duì)云期待與你一起探索。
售前咨詢
售后咨詢
備案咨詢
二維碼
TOP