關於Apache 的timeout 誤解

來源:互聯網
上載者:User
近期,web伺服器上經常apache的線程數會跑到maxclients(500),從而影響了正常服務。正常情況下,apache線程數不會超過100,而卻跑到了500,所以肯定是由於某些請求執行指令碼的時間太長了。於是設定apache的LogFormat (參考http://mylinux.5d6d.com/thread-936-1-1.html), 從而追蹤到某些請求的時間是多少。有個別請求時間長達60s甚至更長。這些訪問肯定是有問題的,不能一直讓他們佔用apache的資源,所以想到設定逾時時間,如果指定時間內請求沒有完成,則斷開該次請求。雖然這樣做不太人性化,但是為了顧全大局只好犧牲某些使用者了。


起初,因為對Timeout 參數認識不夠深刻,覺得把apache httpd.conf中的 timeout 參數設定小點就會限制了時間長的請求。但是實踐證明,那是錯的。查了資料,後來發現在官方文檔中,對apache的timeout的解釋是這樣的:
The TimeOut directive currently defines the amount of time Apache will wait for three things:
?The total amount of time it takes to receive a GET request. 
?The amount of time between receipt of TCP packets on a POST or PUT request. 
?The amount of time between ACKs on transmissions of TCP packets in responses
大概意思是:
1. 接收GET請求的所花費的時間總和
2. POST或者PUT請求時發送TCP包給伺服器的間隔(不是間隔時間之和)
3. 發送響應時發送TCP包的間隔(不是間隔之和) 
這裡我們更關心第3點.
也就是說, 就算timeout設定了1s, 伺服器處理請求的時間完全可以超過1s, 只要伺服器每隔不超過1s的時間就發送一點資料到用戶端即可.
現在想想也是,伺服器跟用戶端的互動並不是一氣呵成的,需要
串連通訊--間隔若干時間--繼續通訊--間隔若干時間...  這樣反反覆複


所以咱們timeout參數限制的是這個間隔時間,而不是整個通訊的時間總和,故而,即使有的請求超過了TimeOut的值,也依舊沒有中斷連線。
而我的問題依然如故,如何解決呢。因為web伺服器上跑的php程式,所以想到通過在php的配置上去限制。這就涉及到了php.ini 中的 max_execution_time .


預設安裝的apache2.0.59,正常使用一點問題沒有。前兩天無聊用sss掃描,結果掃描到http那段,突然發現ie打不開頁面了...在伺服器上通過netstat看,有很多我的本機到伺服器的80連接埠連結,伺服器這時候的狀態很正常,cpu/ping延遲都不高,但是就是瀏覽器打不開頁面。
Timeout 15
KeepAlive On
MaxKeepAliveRequests 500
KeepAliveTimeout 15




看了以下預設的這四個參數,發現
Timeout=300
MaxKeepAliveRequests=100




懷疑是這個問題,將他改為了以上的設定,再次掃描,果然開啟頁面正常了。


apache配置中的Timeout和KeepAliveTimeout的解釋(未完待續) http://hi.baidu.com/bmrs/blog/item/1dbf79fff24cd33b5c6008db.html





zh-CN → zh apache配置

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.