lighttp服務器在linux2.6內核的優化

一,基礎配置純靜態優化.
 目前服務器平臺主要基於debian和ubuntu系統。
 #基於linux-sysepoll優化
 server.event-handler="linux-sysepoll"
 server.max-fds默認是1024
 修改 server.max-fds,大流量網站推薦2048.
 2 stat() 緩存

stat() 這樣的系統調用,開銷也是相當明顯的.
緩存能夠節約時間和環境切換次數(context switches)

一句話,lighttpd.conf加上
server.stat-cache-engine = “fam”

lighttpd還另外提供simple(緩存1秒內的stat()),disabled選項.
相信沒人會選disabled吧.
3 常連接(HTTP Keep-Alive)

一般來說,一個系統能夠打開的文件個數是有限制的(文件描述符限制)
常連接佔用文件描述符,對非併發的訪問沒有什麼意義.

(文件描述符的數量和許多原因有關,比如日誌文件數量,併發數目等)

這是lighttpd在keep-alive方面的默認值.
server.max-keep-alive-requests = 128
server.max-keep-alive-idle = 30

換言之,lighttpd最多可以同時承受30秒長的常連接,每個連接最多請求128個文件.
但這個默認值確實不適合非併發這種多數情況.

lighttpd.conf 中減小
server.max-keep-alive-requests
server.max-keep-alive-idle
兩個值,可以減緩這種現象.

甚至可以關閉lighttpd keep-alive.
server.max-keep-alive-requests = 0
4 事件處理

對於linux kernel 2.6來說,沒有別的可說
lighttpd.conf中加上這一句足矣
server.event-handler = “linux-sysepoll”

另外,
linux 2.4 使用 linux-rtsig
freebsd 使用 freebsd-kqueue
unix 使用 poll
5 網絡處理

lighttpd 大量使用了 sendfile() 這樣一個高效的系統調用.
減少了從應用程序到網卡間的距離.
(同時也減少了lighttpd對cpu的佔用,這部分佔用轉嫁到內核身上了)

根據平臺,可以設置不同的參數.
server.network-backend = “linux-sendfile”
(linux)
freebsd: freebsd-sendfile
unix: writev

如果有興趣的話,也可以看看lighttpd在async io(aio)上的實現.

此外,網絡方面,核心的參數也需要適當進行修改,
這裏就不需要詳細說明了.
6 本文涉及lighttpd.conf 參數總結

以下適合linux 2.6
server.stat-cache-engine = “fam”
server.network-backend = “linux-sendfile”
server.event-handler = “linux-sysepoll”
server.max-keep-alive-requests = 0

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章