客戶那裡一直出現這樣的問題。asp.net 1.1 版的程式升級到 2.0 後,速度出奇的慢。
在事件檢視器上,找到了下面的問題。
- 伺服應用程式集區 'DefaultAppPool' 的處理序已意外中止了。處理序識別碼為 '6060'。處理序結束碼為 '0x800703e9'。
- 事件類型: 警告
事件來源: W3SVC
事件類別目錄: 無
事件識別碼: 1011
日期: 2009/6/29
時間: 上午 10:03:02
使用者: N/A
電腦: ComputerName
描述:
伺服應用程式集區 'DefaultAppPool' 的處理序與 World Wide Web Publishing 服務通訊時發生嚴重錯誤。處理序識別碼為 '3800'。資料欄位含有錯誤號碼。請在 http://go.microsoft.com/fwlink/events.asp 查看說明及支援中心,以取得其他資訊。
資料:
0000: 6d 00 07 80 m..
救命啊!即使我在 asp.net 上已在 global.asax 上,在Application_Error上已做好了寫 exception log 的準備,無奈完全看不到任何的 log ,因為在 IIS 上就掛了,來不及讓 asp.net 來寫出log。
怎麼辦呢?解決過程如下。
- 在 C:\WINDOWS\system32\LogFiles\HTTPERR 下找到錯誤訊息。
2009-06-29 08:15:32 172.16.1.87 56735 172.16.1.64 80 HTTP/1.1 POST /myApp/csharpwrapper/Company.WEB.SystemName.FunctionNAme.ClassName,MyApp.ashx?_method=ServerSideGetProductDummy&_session=rw - 1 Connection_Abandoned_By_AppPool DefaultAppPool - 以'0x800703e9' 在 Bing 上追問題,第二個是微軟 msdn上的說明。微軟的問題,當然找微軟的文件。一看,是 stackOverFlow 的 exception.
- 再以 Vistual Studio 2008 在 Windows 2003 上 debug,會發現程式碼一如往常,只是跑完ajax 後,就進入的無限迴圈了。
之前同事在 asp.net 1.1 上為了達到 ajax 的效果,使用了一個 open source 的 ajax library,沒想到升級到 2.0後,會造成如此驚人的效果。
解法呢?當然是把元兇換掉,讓正牌的 asp.net ajax 上場囉!
沒有留言:
張貼留言