apache的socket斷開設定

2021-09-26 14:06:58 字數 663 閱讀 3612

在apache的httpd.conf中,keepalive指的是保持連線活躍,類似於mysql的永久連線。換一句話說,如果將keepalive設定為on,那麼來自同一客戶端的請求就不需要再一次連線,避免每次請求都要新建乙個連線而加重伺服器的負擔。

keepalive的連線活躍時間當然是受keepalivetimeout限制的。如果第二次請求和第一次請求之間超過keepalivetimeout的時間的話,第一次連線就會中斷,再新建第二個連線。

如果keepalivetimeout設定的時間過短,例如設定為1秒,那麼apache就會頻繁的建立新連線,當然會耗費不少的資源;反過來,如果keepalivetimeout設定的時間過長,例如設定為300秒,那麼apache中肯定有很多無用的連線會占用伺服器的資源,也不是一件好事。

所以,到底要把keepalivetimeout設定為多少,要看**的流量、伺服器的配置而定。

其實,這和mysql的機制有點相似,keepalive相當於mysql_connect或mysql_pconnect,keepalivetimeout相當於wait_timeout。

以下是我的配置: keepalive on keepalivetimeout 3 考慮到我的**上有不少的,所以將keepalive設為on,一般的頁面兩次請求間隔不會超過3秒,所以這樣設定,至盡執行狀況良好。

參考:

檢測socket鏈結是否斷開

解決方案 1.傳送重試,由業務完成。因為club l5的send介面不會保留使用者傳送的內容,在recv失敗的情況下,使用者傳送的資料已經丟失,所以只能由業務進行重試。結論 否定。由於後端伺服器有多台,每次傳送的時候並不能不能保證連線的機器還是上次傳送的那一台伺服器,有可能後端所有的連線都被斷開,雖...

如何判斷socket已經斷開

最近在做乙個伺服器端程式,c s結構。功能方面比較簡單就是client端與server端建立連線,然後傳送訊息給server。我在server端 會使用專門的執行緒處理一條socket連線。這就涉及到乙個問題,如果socket連線斷開 異常,正常 後,我如何才能感知到?server端這邊是絕 對被動...

如何判斷Socket是否斷開

socket在連線以後,如果客戶端非正常退出,比如網線掉了 超時退出等,伺服器端的socket仍然有快取,此時可以從該socket描述符中讀出一些資料,短時間內甚至可以寫,因此判斷tcp socket是否斷開及其不易,網上有很多方法,都不能精確判斷。本人用select和recv寫了乙個,在緩衝區被讀...