Lighttpd基础优化

 

Lighttpd基础优化

lighttpd默认的并不适合我们的一些应用.因此需要进行修改.编辑/etc/lighttpd/lighttpd.conf文件.

1.事件处理
对于linux kernel 2.6来说,没有别的可说
lighttpd.conf中加上这一句足矣

server.event-handler = "linux-sysepoll"

2.stat() 缓存
stat() 这样的系统调用,开销也是相当明显的.
缓存能够节约时间和环境切换次数(context switches),此项有三个选项:fam,simple(缓存1秒内的stat()),disabled.一般我们较多使用前两项.

在lighttpd.conf加上

server.stat-cache-engine = "fam"

3.网络处理
lighttpd 大量使用了 sendfile() 这样一个高效的系统调用.
减少了从应用程序到网卡间的距离.(同时也减少了lighttpd对cpu的占用,这部分占用转嫁到内核身上了)

server.network-backend = "linux-sendfile"
(linux)
freebsd: freebsd-sendfile
unix: writev

根据平台,可以设置不同的参数.如下所示

OS Method Config Value
all select select
Unix poll poll
Linux 2.4+ rt-signals linux-rtsig
Linux 2.6+ epoll linux-sysepoll
Solaris /dev/poll solaris-devpoll
FreeBSD, ... kqueue freebsd-kqueue
NetBSD kqueue kqueue

4.常连接(HTTP Keep-Alive)
一般来说,一个系统能够打开的文件个数是有限制的(文件描述符限制)
常连接占用文件描述符,对非并发的访问没有什么意义.
(文件描述符的数量和许多原因有关,比如日志文件数量,并发数目等)

Sponsored Links
这是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
两个值,可以减缓这种现象.

对于动态程序来说,Keep Alive的意义不大,可以关闭。
server.max-keep-alive-requests = 0

5.启动的进程数
server.max-worker
lighttpd默认只启动一个进程工作,但也支持apache那样启动多个进程,我的实验显示启动多个进程同时工作时并不能提高性能。

6.server.max-fds
因为lighttpd是一个单线程(single-threaded)服务器,它的主要资源限制是文件描述符数目,默认值是1024。如果在一个高负载的站点上,可能你需要通过下面的设定增加这个限定值
server.max-fds = 2048
但这个限定只有在lighttpd做为root身份运行时才能生效。

7.server.max-connections
该项默认等同于server.max-fds

Lighttpd关于本节的优化资料
http://trac.lighttpd.net/trac/wiki/Docs%3APerformance

下面是本站的配置,您可参详一下.

server.event-handler = "linux-sysepoll"
server.stat-cache-engine = "fam"
server.network-backend = "linux-sendfile"
server.max-keep-alive-requests = 4
server.max-keep-alive-idle = 4
server.max-worker = 15
server.max-fds = 4096
server.max-connections = 4096

 

你可能感兴趣的:(linux,Solaris,网络应用,lighttpd,FreeBSD)