關於Apache的keep-alive,主要有三個參數:
KeepAlive
MaxKeepAliveRequests
KeepAliveTimeout
關於這三個參數的解說,可以參考這裡:http://httpd.apache.org/docs/2.0/en/mod/core.html#keepalive
apache預設KeepAlive是打開的,如果妳沒開KeepAlive,那麼你每一個request都會重新一個connectiion,這對cpu來說可能有點負擔。
所以如果把KeepAlive打開,而你的MaxKeepAliveRequests又夠大,當client再download你server上的東西時(例如css.js.images…等等),就有可能再一個connection裡全部做完,而且對User來說體驗會比較好,因為等待的時間變短了。
不過KeepAlive打開也有缺點,它可能會造成記憶體使用增加,因為apache的程序需要等待下一個requests進來,所以connection會保持打開,直到你設定的keepAliveTimeout的時間到了為止。
所以KeepAlive主要有以下優缺點:
優點:
一、較好的performance
二、減少cpu使用量
缺點:
一、可能造成記憶體使用量增加
如何看一個網站有沒有設定KeepALive?開一下console就可以看到了。
一般來說網站我都會把KeepALive設On,因為performance會變好。
而MaxKeepAliveRequests我會調到可以超過網站頁面的所有requests數,這可以因網站不同而異,如果你有很多頁面包含一堆檔案,例如圖片,那麼可能就需要調高一點。
至於KeepAliveTimeout我不會設太高,因為設太高可能會cost太多記憶體使用量。
參考文章:
1.Apache Performance Tuning: KeepAlive to remove latency