|
-
首頁 > 知識庫 >
Windows Server IIS 忙碌錯誤
-
Windows Server IIS 忙碌錯誤
一、【症狀】
XEON處理器,4G內存,WINDOWS 2003 最新企業版,IIS 6,ASP環境。
應用程序池達到6個,其中有一個程序池配置了20個進程。其餘5個單獨運行其它應用~
其中一個應用的ASP程序不間斷報錯:500.13--服務器太忙
在【應用程序日誌】中大量報錯:The run-time environment has detected an inconsistency in its internal state.This indicates a potential instability in the process that could be caused by the custom components running in the COM+ application, the components they make use of, or other factors. Error in d:\nt\com\complus\src\comsvc??s\threads\stathread.cpp(285), hr = 8007000e: CSTAThread: CoGetApartmentID failed
中文版本錯誤:運行時環境檢測到其內部狀態存在不一致。這說明進程中存在潛在的不穩定性,可能是??由於COM+ 應用程序中運行自定義組件、COM+ 應用程序使用的組件或其他因素引起的。 d:\nt\com\complus\src\comsvc??s\threads\stathread.cpp(285)中的錯誤,hr = 80070008: CSTAThread: CoGetApartmentID failed
查看W3C版本的IIS日誌,報錯ASP_0148|Server_Too_Busy。
日誌查看器中的EVENT為4689
使用性能查看器,查看Active Server Page-> Request Queued 隊列,大於系統的Max Requsest Queued隊列值。
二、【原因】
具體原因可參考【參考鏈接4】,MSDN微軟官方團隊的說法,針對桌面程序堆(HEAP)錯誤。簡單的解釋就是應用程序池太多,導致DLLHOST.EXE達到最大的HEAP限制,不是WINDOWS底層的程序員,所以只明白這個錯誤大概的原理,具體原因還得參考【鏈接4】
三、【解決方案】
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\SubSystems\Windows --> SharedSection = 1024,3072,512
打開註冊表編輯器,將512的部分稍稍調大一些,比如1024,就可以避免堆錯誤。可以反複試驗,也可以用鏈接4中的堆觀察器(需要擁有最高權限才可安裝的小工具,底層驅動),觀察每個進程的堆情況,進而根據IIS中應用程序池的設置,推算出最合適的大小??。
四、【參考鏈接】
1
2
3
4
鏈接1為英文的問題,鏈接2為解決方法但作者理解不對,鏈接3解決方法正確,且概念正確。鏈接4為官方解決方案,最權威。
|