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)

此外,网络方面,核心的参数也需要适当进行修改,

这里就不需要详细说明了.

相关推荐