lighttpd优化
优化
1最大连接数
默认是1024
修改server.max-fds,大流量网站推荐2048.
因为lighttpd基于线程,而apache(MPM-prefork)基于子进程,
所以apache需要设置startservers,maxclients等,这里不需要
2stat()缓存
stat()这样的系统调用,开销也是相当明显的.
缓存能够节约时间和环境切换次数(contextswitches)
一句话,lighttpd.conf加上
server.stat-cache-engine=“fam”
lighttpd还另外提供simple(缓存1秒内的stat()),disabled选项.
相信没人会选disabled吧.
3常连接(HTTPKeep-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
两个值,可以减缓这种现象.
甚至可以关闭lighttpdkeep-alive.
server.max-keep-alive-requests=0
4事件处理
对于linuxkernel2.6来说,没有别的可说
lighttpd.conf中加上这一句足矣
server.event-handler=“linux-sysepoll”
另外,
linux2.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在asyncio(aio)上的实现,仅限lighttpd1.5
(linux-aio-sendfile,posix-aio,gthread-aio)
此外,网络方面,核心的参数也需要适当进行修改,
这里就不需要详细说明了.