事情的經過是這樣的:
下午下班的鈴聲已經敲響,我已經整裝待發。突然同事說某水司的微信公眾號不能正常訪問了。點擊營業廳,直接提示
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
這個負載均衡模塊我們在其他客戶現場是有使用過的,這次為什么不兼容,還有待進一步探究。