如上篇文末提到的,今天的主題是 Process 是怎麼被起起來的,有哪些重要的角色在背後運作。這次的系列文其實個人是比較注重運行概念,雖然可能沒有切到非常非常細(我會覺得這部分需要的時候可以查文檔就好了),我更希望的是就走過的名詞跟功能,我都能分享整裡出個解釋,在看完解釋之後,當下次遇到的時候,能夠對這個功能或架構有個概念,面臨選擇的時候能說出選擇 A 而不選擇 B 的原因。
實際維運的情況下,也許很多的一知半解拼湊起來也還是能走的一般般,然而如果你能清楚知道選擇的原因跟背後架構的大致樣子,在遇到問題的除錯往往能更容易的抓到脈絡。這篇講的服務就有點這個味道,正常的時候你不太會去改動它的設定,然而當問題出現了,它往往會是一個檢查的環節、提供一些蛛絲馬跡。
這邊提到的服務跟 Services 就是指系統中的服務,你從 Windows 選單中可以看到這個管理介面:
在這眾多的服務清單中,和 IIS 相關的主要有幾個,最重要的是 World Wide Web Publishing Service, Windows Process Activation Service 這兩個服務共同肩負了 IIS 中的重要生命週期,與 Process 最直接相關聯,如果任一服務死掉,可能整台的 IIS 服務都會不正常,而不是單一影響一個 Pool 或一個 Site。
其他也相關的如 IIS Admin Service, Microsoft FTP Service,W3CLogging Service, Application Host Helper Service, Web Management Service。
基本上點擊了對應的服務從左邊去看就能看的到關於該服務的範疇,我們這邊簡單列一下他們各自的功用。這些服務在系統中也會實際以一個 process 的形式存在,或是多個關聯功能包在一個 process 內。
Windows Process Activation Service (後稱 WAS,一般討論也會縮寫為 WAS) - 主要負責起Porcess的工作、資源管理和 process 狀態的健康管理。
World Wide Web Publishing Service (後稱 W3SVC) - 和 IIS 高度相關,與網站的連接性與管理控制有關,像是和 application pool / site 的設定互動。
如果你把服務點開來看,可能會看出來這兩個在process上都是存於 svchost.exe 裡面。svchost.exe 實際上處理的就是檢查登錄中的服務,建立他需要載入的服務清單,並去依 DLL 執行對應的服務程序。服務組別細部清單位於 reg 的這個路徑 Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsT\CurrentVersion\Svchost,可以看出在 iissvcs 這個群組裡就是指向這兩個服務。
WAS 和 W3SVC 的整體互動流程會在下篇詳細介紹。
IIS Admin Service - 讓 server 能夠控管 IIS metabase(IIS 儲存各類設定的地方,可以理解為所有東西都放在這裡)。裡面也包含了 SMTP 和 FTP Services 的設定,對設定保存跟相關讀取是重要的服務。
Microsoft FTP Service - 如同名字寫的,這個 Service 是關連到這台 Server 能不能使用 FTP 相關功能,如果你的站上有 FTP 站點,這個 service 出了問題,所有 FTP 相關的設置都會受到影響。
W3CLogging Service - 讓 IIS 紀錄相關模組能夠記錄成功碰觸到 IIS 的 request,寫下各類 log 的主要 Service,關於 log 的紀錄如果出問題,可能就與這個 Service 相關。
Application Host Helper Service - 支援於 IIS 相關管理功能,如設定檔的歷史紀錄、application pool 帳號的對應等等。這個服務出問題會影響到設定檔歷史紀錄,還有如果有設定一些 application pool identity 存取權限的相關資料夾可能都會受到影響。
Web Management Service - 允許遠端管理與代理部分控制權限,當你有需求,如多台 Server 的遠端控管,這個服務就會是必要的一環。
以上就是和 IIS 相關的服務,基本上遇到錯誤 System Event View 應該都會留下相關的紀錄,都會標明是哪個服務出問題、愈到什麼狀況,會是在做錯誤處理的其中一個重要的步驟,我們會在 Trouble Shooting 的章節中再分享更多。
明天的下集,我們會一起來看一下 Process 究竟是怎麼起來的。