爲應用程序池“DefaultAppPool”提供服務的進程關閉時間

最近我們的其中一個分站(暫時叫分站1)出現了間歇式的無法訪問,具體表現爲:網站一會運行沒事,但是過一會就不行了,提示的是504錯誤;提示此錯誤時所有的.aspx頁面無法打開,就是沒有連接數據庫的也無法打開,但是.html就沒有問題;數據庫跟蹤時,發現數據庫不存在堵塞,需要運行的sql,再數據庫上0秒就完成了。出現此問題後,回收一下應用程序池就沒有問題了,但是訪問一會又就不行了。

環境:
1.win2003,IIS6,ASP.net 2.0,SQL Server2005
2.和這個分站在一起的還有其他分站,他們的web與數據庫都同時在一臺機器上。程序相同,數據庫結構相同。這些分站每一個系統都是一個單獨的應用程序池。
3.出現這個問題後,事件查看器中提示的信息是:爲應用程序池“DefaultAppPool”提供服務的進程關閉時間超過了限制。

我們測試的情況:
1.拿出現問題的分站1的程序連接數據量最大的一個分站的數據庫,沒有問題;但是一連接分站1的數據庫,就不行。
2.使用分站1的其他系統(使用同一個數據庫),沒有問題,只有這一個系統運行有問題(系統a)。後來設置站1上系統a使用一個正常的應用程序池,還是不行。(分站的每個系統都是獨立的應用程序池)
3.根據事件查看器中的提示,網上說的方法都試了,還是不行(應用程序池的設置以及數據庫連接的字符串)。
4.數據庫重新換了臺機器,程序運行了一天一夜,第二天又出現同樣的問題。
5.連接分站1中系統a時,感覺就好像是再獨享這個數據庫連接。如果機器a可以連接上,登陸後訪問數據量比較大的頁面,速度是沒有問題的;但這是如果機器B連接,可能就會連接不上,就好像一直在等待資源;數據庫這時跟蹤,顯示的機器B也已經連接,數據庫且都已經執行完畢;在等待頁面的顯示。

比較奇怪的是:此分站的程序與其他分站都是一樣的,數據庫結構也是一樣的;即使數據量比他大N倍的分站運行也沒有問題,唯獨單單這個分站的某一個系統就不行。

諮詢了一下微軟的專家,人家說是首頁在調用數據庫時存在等待的情況;後臺把首頁中調用數據庫的地方刪除了,現在再運行看看情況(運行了兩天了,沒有再反映有此問題);感覺好像是沒有找到此問題的根上。

出現這個問題,感覺自己都很矛盾。如果是數據庫的問題,連接同一個數據庫的其他系統就沒有問題。如果是程序的問題,連接其他分站的數據庫就沒有問題;再就是可能是數據庫中的數據壞死,但是如果我連接連接上的話,速度還是挺快的。

 

微軟最新答覆:

問題還是類似的不過這次在等待的頁面是:http://test/aabbcc.aspx?cmdtype=aa&position=bb

0:130> !do 05578f20

Name: System.String

MethodTable: 79330a00

EEClass: 790ed64c

Size: 204(0xcc) bytes

GC Generation: 0

(C:/WINDOWS/assembly/GAC_32/mscorlib/2.0.0.0__b77a5c561934e089/mscorlib.dll)

String: http://test/aabbcc.aspx?cmdtype=aa&position=bb

Fields:

      MT    Field   Offset                 Type VT     Attr    Value Name

79332c4c  4000096        4         System.Int32  1 instance       94 m_arrayLength

79332c4c  4000097        8         System.Int32  1 instance       93 m_stringLength

793316e0  4000098        c          System.Char  1 instance       68 m_firstChar

79330a00  4000099       10        System.String  0   shared   static Empty

    >> Domain:Value  000cced0:10cb01d0 0010a140:10cb01d0 <<

79331630  400009a       14        System.Char[]  0   shared   static WhitespaceChars

    >> Domain:Value  000cced0:10cb0728 0010a140:08cb0be8 <<

 

從dump裏看,aabbcc.aspx已經全部執行完畢了,Default.asxp和Index.aspx都會去同步調用 aabbcc.aspx,而command.aspx會去異步調用其他網絡資源比如從SQL中去數據或者從網絡讀取文件。如果遠端資源調用沒有返回,就會造成Default.aspx或Index.aspx一直在等待,導致客戶端響應很慢。

 

 

 

此問題記錄下來,以備將來參考。 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章