概要分享lighttpd优化tips
有时候,我也不知道具体今天想总结下,在订阅下浏览了各位大侠高人的更新以后,也觉得百无聊赖,新闻再刺激,也有个度,也有个审美疲劳的时候,人性使然吧!
在网站web式服务器中,iis,apache,点位比较重;其中,httpd的特殊优势,也是深得大型网站系统的重用;
httpd.exe is a process associated with Apache HTTP Server from Apache Software Foundation.
Apache相关程序。Apache是一款HTTP服务器软件。它快速、可靠、可通过简单的API扩展,Perl/Python解释器可被编译到服务器中,而且完全免费,完全开放源代码。
以下是一些有关httpd设置的小技巧:
1 最大连接数
默认是1024
修改 server.max-fds,大流量网站推荐2048.
因为lighttpd基于线程,而apache(MPM-prefork)基于子进程,
所以apache需要设置startservers,maxclients等,这里不需要
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)上的实现,仅限 lighttpd 1.5
(linux-aio-sendfile, posix-aio, gthread-aio)
此外,网络方面,核心的参数也需要适当进行修改,
这里就不需要详细说明了.
6 本文涉及 lighttpd.conf 参数总结
以下适合linux 2.6,php-fastcgi
var.author=”fcicq”
server.stat-cache-engine = “fam”
server.network-backend = “linux-sendfile”
server.event-handler = “linux-sysepoll”
server.max-keep-alive-requests = 0
维护大型网站是一件很辛苦的事,很具挑战的事,无疑,也是一件很心苦的事,但解决事务的过程,获得经验的喜悦,也是让人觉得,这也是一件很庆幸的事。
部分内容源:非商业转载,原作者 fcicq、原始链接 http://www.fcicq.net/wp/?p=496