Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 伺服器技術 >> 關於伺服器

使用 iisapp.vbs 查詢應用程式集區 PID 解決 IIS CPU 飆高問題

編輯:關於伺服器

問題背景

IIS 6.0 (Windows Server 2003) 環境下,w3wp.exe 工作進程 CPU/記憶體異常飆高,導致網站回應緩慢或假死。需快速定位是哪個應用程式集區 (AppPool) 對應的進程造成問題。

核心工具:iisapp.vbs

位於 C:\Windows\System32\iisapp.vbs (或 C:\Inetpub\AdminScripts\iisapp.vbs),以 CScript 執行。

常用參數

指令說明
cscript iisapp.vbs -a列出所有執行中應用程式集區的 PID 與 AppPoolId
cscript iisapp.vbs -a <AppPoolName>查詢指定集區名稱的 PID
cscript iisapp.vbs -p <AppPoolId>查詢指定集區 ID 的 PID

實戰操作步驟

  1. 開啟「工作管理員」→ 「檢視」→ 「選擇資料行」→ 勾選 **PID (處理序識別碼)**。
  2. 觀察哪個 w3wp.exe 佔用高 CPU/記憶體,記下其 PID (例:4704)。
  3. 命令列切換至腳本目錄並執行:
    cd /d %systemroot%\system32
    cscript iisapp.vbs -a
    
    輸出範例:
    W3WP.exe PID: 2488   AppPoolId: AppPool #26
    W3WP.exe PID: 3008   AppPoolId: AppPool #2
    W3WP.exe PID: 4704   AppPoolId: AppPool #15   ← 目標進程
    W3WP.exe PID: 6388   AppPoolId: AppPool #19
    W3WP.exe PID: 6004   AppPoolId: AppPool #8
    
  4. 對應 AppPool #15 即為問題集區,進一步檢查該集區綁定的網站/應用程式代碼、資料庫查詢、無限迴圈等邏輯問題。

注意事項

  • 首次執行可能彈出「Windows Script Host 設定」視窗,點確定後再執行一次即可正常輸出至主控台。
  • 若出現「找不到指令碼檔案」,確認路徑或複製 iisapp.vbs 至 C:\Inetpub\AdminScripts。
  • Windows 2000 (IIS 5.0) 無 w3wp.exe,需將網站「應用程式保護」設為「高 (隔離)」,再透過「元件服務」→ 「COM+ 應用程式」→ 「狀態檢視」查看 PID 對應網站。

後續優化方向

  • 啟用應用程式集區「回收」機制 (定時/記憶體/請求數上限)。
  • 限制集區「最大工作進程數」(Web Garden) 為 1,避免 Session 狀態分散導致錯誤。
  • 程式碼層面:優化 SQL、加快取資料、釋放非受控資源、避免大物件佔用 LOH。
Copyright © Windows教程網 All Rights Reserved