2012-10-29 35 views
0

在服務器提供網頁後,Apache連接是否立即關閉?另外,如果您將所有靜態資產(JS,CSS,圖像等)託管在與您的站點相同的服務器上,那麼這會如何影響Apache連接?Apache連接如何工作?

+0

不一定。與其他幾乎一樣,它取決於各種因素。在這種情況下,這些因素包括使用的Apache配置和HTTP頭。 –

回答

3
  1. 無論Apache的服務頁面後立即關閉連接取決於

    1. 客戶端是否有Connection: Keep-Alive頭請求它。
    2. 設置KeepAliveKeepAliveTimeout參數。請參閱http://httpd.apache.org/docs/2.2/mod/core.html#keepalive
  2. 所有類型的內容都使用同一個「連接池」。

好問題:因爲所有內容使用相同的KeepAlive設置,您可能希望設置不同的服務器來處理不同類型的內容。

-

你的下一個問題:

  1. MaxKeepAliveRequests被記錄在同一頁上:http://httpd.apache.org/docs/2.2/mod/core.html#maxkeepaliverequests

它的請求總數客戶端可以作出一個「養活着連接「。如果你有很多的服務器資源,你應該保持高。或者,如果您的服務器資源較少或客戶端較多,則可以降低它以將客戶端發送出去,並給予其他人一個回合。不要忘記,在客戶端的最後一次請求之後,服務器將在關閉連接之前等待「KeepAliveTimeout」秒,並讓該工作者可用於其他客戶端。

  1. MaxRequestsPerChild值記錄在這裏:http://httpd.apache.org/docs/2.2/mod/mpm_common.html#maxrequestsperchild

它的客戶端請求的數量(和個人要求在保持活動連接數的每個靜止1)子服務器進程將死之前。不同的MPM(專爲實現這些子服務器進程的各個平臺開發即Apache的後端)表現不同:

  • 線程的MPM有默認值0 =永遠不會死,因爲所有線程共享反正相同的內存空間。
  • 對於使用單個子進程的MPM,允許孩子每隔一段時間就會死掉(可能會清理服務器資源和內存泄漏,如果有的話)更有意義。
+0

這是一篇很棒的文章。謝謝!現在我的下一個問題是,MaxRequestsPerChild和MaxKeepAliveRequests有什麼區別? – skaterdav85

+1

真的,你應該研究文檔。 –

2

您的問題的答案可能是。根據您的KeepAlive設置,連接可能會保持打開狀態。如果您完全關閉KeepAlive,則請求滿足後連接將關閉。如果您有KeepAlive(更典型),則連接將保留一段可配置的時間,等待來自分配連接的客戶端的另一個請求。

請求是用於動態生成的頁面還是用於靜態內容對於此行爲無關緊要,但是,當從服務器中下載靜態內容時,您最終將重新使用瀏覽器建立的連接KeepAlive開啓的情況。這可以提供更好的性能,因爲您沒有爲每個請求重新建立連接的開銷。

下面是關於考慮一個鏈接到一個很好的文章使用KeepAlive

http://abdussamad.com/archives/169-Apache-optimization:-KeepAlive-On-or-Off.html