1. 程式人生 > >網站無法響應HTTP/1.1的解決方法

網站無法響應HTTP/1.1的解決方法

前幾天網站出現不能瀏覽,檢視應用程式日誌顯示server too busy ,下面是具體的解決思路與方法。 上網查了一下,引起的原因主要是由於網站程式中連線資料庫的程式碼沒有及時關閉造成的,這樣連結多了以後就會造成連結資料庫的連結到達峰值,不能再連線資料庫,於是iis就報server too busy 。

問題:

Server is too busy 是什麼意思,怎麼解決?

回答:

首先,從字面上的意思我們就可以看出:

Server is too busy = 伺服器繁忙

那麼這種情況應該如何解決呢?分為兩種情況:

1、如果您是訪客,那麼請聯絡網站管理人員(諮詢或告知該問題),再或者可能您訪問的時段網站流量較大,可以選擇過一會再試!

2、如果您是站長,自己的網站出現這種情況,請參照網站Service Unavailable的解決方法。另外,也可以查閱虛擬主機或IIS下Server is too busy的一些優化方法。

一般來說,當你的iis發生了諸如"http:1001 server is too busy"的錯誤時,是因為你的asp程式中開了過多的server.createobject請求,然後每一個請求都需要排隊等待直到他們確實被建立了為止。

如果你的佇列的最大長度為500的話,當佇列中已經存在了499個請求時,這時如果第500個請求到達了,就會發生“server is too busy”錯誤。

那麼怎麼來使正在申請的請求最小化了,並且如何提高響應時間呢,下面是幾個建議:

1.儘量使用.htm字尾的檔案,避免使用.asp(尤其是在那些有可能招成超負荷的條件的特殊事件時)。因為htm不會障塞伺服器同時能夠得到最大的快取效能。(有關這個的效率問題我曾經介紹過一篇文章,在精華區中)

2.儘量在你的asp中少使用server.createobject

3.嚴格限制你的asp呼叫不在你伺服器上的外部資源,例如你的資源在另外一臺伺服器上

4.儘量優化你的網路效能和穩定性,例如增強你的後臺的sql server資料庫或則遠端檔案共享的區域網效能。 FTP

5.儘量讓每一個元件的執行速度快與呼叫它的速度.例如,一個元件一秒鐘被呼叫了20次,那麼它就必須在1/20秒的時間內執行完成,否則該元件將會阻塞。要知道,一個阻塞的元件將會導致你網站上所有的asp崩潰

6.每個禮拜都要監視你的網站的效能狀態.因為單個能夠產生阻塞的物件能夠對你的整個網站產生很不好的影響。

但是檢視程式碼固然重要,關鍵是要及時解決不能訪問的問題,於是採取瞭如下解決方法:
1.首先保證網站可以在第一時間恢復正常:a:將sql資料庫伺服器關閉,在啟動。b:將iis重啟.這樣操作之後至少可以保證網站可以馬上瀏覽。
2.將iis應用程式池的回收記憶體減小。見到200mb左右。訪問量在30萬每天的情況下。應該是5分鐘就能回收一次。避免連結資料庫的連結到大峰值。
3.查詢沒有斷開連線的程式碼,將連線及時關閉。
ASP.NET效能調整之解決Server Too Busy錯誤
最近公司的一個ASP.NET站點頻繁出現Server Too Busy錯誤,具體表現為頁面響應慢、經常出現Server Too Busy異常;但實際上伺服器的資源消耗卻很低,CPU使用只有10%左右,非常奇怪。
該站點執行環境為Windows 2000,IIS5.0,.NET Framework 1.1,站點壓力約為每秒10個連線,峰值時約為30。
從網上查詢相關資料後,從表現出的情況來看(響應慢,丟擲Server Too Busy異常),初步判斷為同時連線過多引起的執行緒阻塞引起。修改web.config中的httpRuntime配置節中的appRequestQueueLimit引數後,Server Too Busy 的錯誤得到解決。此引數預設從machine.config中繼承,預設值為100,改為1000後Server Too Busy的錯誤不再出現。
雖然伺服器忙的錯誤解決了,但是站點響應還是很慢,有時候要等上5—10秒才能開啟頁面。分析原因應該是同時請求過多,而IIS工作執行緒不足的原因引起,修改machine.config中processModel配置節maxWorkerThreads引數為200後站點響應速度慢的問題得到解決。此引數預設值為20,可根據伺服器硬體配置於壓力大小適當調整。
原文連結:http://www.iis7.com/a/nr/271749.html