IIS 請求主要模塊
當客戶端向 IIS 發出 HTTP 請求時,會有很多事情發生。 有許多內核模式和本機模式組件,用於將請求路由到最終響應請求的 W3WP 進程。
響應一個 HTTP 請求主要的組件:
| Component | Description |
| HTTP.sys | Kernel level HTTP/HTTPS protocol listener |
| W3SVC | World Wide Web Publishing Service – User level listener adapter for HTTP.sys |
| WAS | Windows Process Activation Service – Worker Process (W3WP) manager |
| W3WP | IIS Worker Process -> Application Pool |
每個組件將日志寫入的位置:
| Component | Logs are written to |
| HTTP.sys | C:\Windows\System32\LogFiles\HTTPERR |
| W3SVC | System Event Viewer |
| WAS | System Event Viewer |
| W3WP | System Event Viewer and IIS Logs in C:\intepub\logs\LogFiles\W3SVC* |
HTTP.sys
http.sys 偵聽來自網絡的 HTTP 請求,將它們傳遞到 IIS 並返回響應。 它是一種可以從命令行停止和啟動的服務。
"NET STOP HTTP" 停止 HTTP 服務和 "NET START HTTP" 啟動 HTTP 服務。
我們可以使用 NETSH HTTP 修改 http.sys 設置,如下所述。 NETSH HTTP 命令更新此處找到的 http.sys 注冊表設置。 當您修改 http.sys 設置時,您需要通過運行,STOP STOP HTTP 和然后 NET START HTTP 回收 HTTP 偵聽器,如前所示。
*注意:不要在實時生產機器上回收 HTTP 偵聽器,除非可以接受某些停機時間。
W3SVC(World Wide Web Publishing Service)
W3SVC 是 HTTP.sys 偵聽器的適配器。可以從服務管理控制台停止和啟動 W3SVC 服務。
W3SVC 負責配置 HTTP.sys 和 WWW 性能計數器。
這里可以用 "NET STOP W3SVC" 和 "NET START W3SVC" 停止和啟動 W3SVC 服務。
WAS(Windows Process Activation Process)
WAS 管理應用程序池配置和工作進程(W3WP)。 基本上,WAS 收集所有配置文件,如圖下圖所示,並創建一個有效的配置並將其存儲在
C:\inetpub\temp\appPools 目錄中。(注:inetpub 是 windows 操作系統中 IIS web 服務器的主目錄,用戶開啟了 IIS 功能,所以才有了這個文件夾)。
W3WP(IIS Worker Process)
應用程序池 和 W3WP 進程之間的區別或關系是什么? 正如這里所強調的,應用程序池是被路由到一個或多個工作進程的一組URL。 您可以有一個運行多個網站的單個 W3WP 進程,但這使它更難排除故障。 因此,在網站和應用程序池之間有1對1映射。
w3wp 工作進程
Application Pool
Web Site
從上圖中可看出,這兩個站點設置了不同的 Application Pool,在應用進程中 w3wp 與 Application Pool 是一一對應關系。
總結
您可以了解 IIS 體系結構的不同組件,每個組件都有自己的管理方式,每個組件在遇到問題或禁用時會做出不同的響應。 每個將錯誤日志寫入不同的位置以供分析和審核。 每個組件需要對於接收有效響應的請求是健康和功能的。
最上面那張圖說明了一個 HTTP 向 W3WP 進行發出請求的過程。
參考文章:
Using HTTP, W3SVC, WAS and W3WP:
https://blogs.msdn.microsoft.com/benjaminperkins/2016/06/16/lab-6-using-http-w3svc-was-and-w3wp/
