2018-06-25

解決無法使用 IIS Manager 及 AppCmd.exe 列出 Worker Processes 的 Request

最近監控 IIS 上的 application 時發現部份 server 無法列出 request queue,以我的經驗一般情況下並不會特別去看 request queue 的內容,一旦需要看就一定有 server 或是 application 警示出現,如果看不到內容對於除錯就少了可以快速定位發生原因的手段,也就增加偵錯的時間

原本以為是 IIS Manager GUI 的問題,改用 AppCmd.exe 來看內容也出現錯誤,就來看看如何解決吧


關於 AppCmd.exe

從 IIS 7 開始加入的命令列工具,可以用來管理 IIS 的重要功能

  1. 建立及設定 sites, apps, application pools, 跟 virtual directories
  2. 啟動及停止 sites 與回收 application pools
  3. 列出執行中的 worker processes 與檢查執行中的 request
  4. 搜尋、管理、匯出及匯入 IIS 與 ASP.NET 的設定
  • 路徑

    未加入環境變數,需切換至所在路徑或是使用完整路徑

    %systemroot%\system32\inetsrv\
    
  • 基本語法

    APPCMD (command) (object-type) <identifier> < /parameter1:value1 ... >*
    

    語法詳細介紹請參考 Getting Started with AppCmd.exe

問題描述

  • 使用 IIS Manager
    1. 開啟 IIS Manager --> 選擇目標 Server --> Worker Processes

      1openiis

    2. 點擊目標 Application Pool Name 無法顯示 Requests queue (完全沒有反應,也沒有錯誤提示)

      2workerprocesses

  • 使用 AppCmd.exe
    • 執行 appcmd.exe list requests TestTimeout
    • 錯誤訊息
      • 訊息內容
        ERROR ( hresult:80004001, message:Command execution failed.
        Not implemented
        )
        
      • 錯誤截圖

        3cmderror

解決方式

  • Windows 10
    1. 開啟 Turn Windows features on or off

      4feature

    2. Internet Information Services --> World Wide Web Services --> Health and Diagonostics --> Request Monitor , Tracing

      5monitoringandtracing

  • Windows Server
    1. Server Manage --> Manage --> AddRoles amd Features

      6rolefeature

    2. Installation Type --> Role-based or feature-based installation

      7rolebased

    3. Service Roles --> Web Server(IIS) --> Health and Diagnostics --> Request Monitor , Tracing

      8monitortracing

  • 效果
    • IIS Manage GUI

      9result

    • AppCmd.exe
      appcmd.exe list request /elapsed:3000
      

      10resultappcmd

心得

經過設定 IIS 的 Health and Diagnostics 後,已經確認解決問題了,也才還 IIS Manage GUI 的清白 XD 不過一開始發現 IIS Manage GUI 無法查詢又沒有任何訊息,純粹只是無法開啟 request queue 時我真心覺得是 IIS Manage GUI 的問題,直到 AppCmd.exe 拋出錯誤時我才覺得可能是資料來源出問題

雖然 google 一下就可以發現 Error hresult :80004001 , message : Command execution failed. Not implemented 有正確解決方法,但 IIS Manage GUI 沒有出現任何訊息與 AppCmd.exe 模糊的錯誤訊息,對於解決問題幫助不大呀

參考資訊

  1. Getting Started with AppCmd.exe
  2. Error hresult :80004001 , message : Command execution failed. Not implemented

沒有留言:

張貼留言