安裝WebPlatformInstaller_x64_en-US,導致了IIS應用被訪問時,應用程式池自動關閉的問題。 ...
事情的經過是這樣的:
下午下班的鈴聲已經敲響,我已經整裝待發。突然同事說某水司的微信公眾號不能正常訪問了。點擊營業廳,直接提示
Service Unavailable
。
立馬遠程伺服器查看,IIS微信公眾號所在應用程式池停止運行啦。再次啟動後,點擊營業廳仍然返回
Service Unavailable
,應用程式池再次停止運行。
這時另外一個同事說,他在這台伺服器上安裝了
WebPlatformInstaller_x64_en-US
要做負載均衡。安裝之後出現了應用程式池自動關閉的問題,但是已經卸載了,還是會自動停止。
現在問題明確了,安裝WebPlatformInstaller_x64_en-US
,導致了IIS應用被訪問時,應用程式池自動關閉的問題。
1. 查看windows系統日誌
模塊 DLL C:\Windows\system32\inetsrv\rewrite.dll 未能載入。返回的數據為錯誤信息。
WebPlatformInstaller_x64_en-US
安裝是用來做負載均衡的,所以確實會安裝rewrite.dll,但是WebPlatformInstaller_x64_en-US
已經卸載了,為什麼還要去找rewrite.dll呢。重新安裝WebPlatformInstaller_x64_en-US
,這次對應路徑下有rewrite.dll了,但是windows日誌還是報同樣的錯誤。
2. rewrite_amd64重裝
IIS本身是具備URL重寫功能的,因此推測應該是,WebPlatformInstaller_x64_en-US
所安裝替換的rewrite.dll與IIS不相容導致的。於是再次卸載WebPlatformInstaller_x64_en-US
,並下載安裝rewrite_amd64
(IIS Url Rewrite Module 2.0),至此問題解決。
總結
1.遇到問題一定要透過現象看本質,通過各種日誌及環境變化,定位問題,不能局限於問題表現。
2.WebPlatformInstaller_x64_en-US
這個負載均衡模塊我們在其他客戶現場是有使用過的,這次為什麼不相容,還有待進一步探究。