0 写在前面
1 分析准备
1.1 lighttpd源码准备及相关网站
lighttpd官方网站:http://www.lighttpd.net/,最新的稳定版本为1.4.20,开发版本为1.5.0,1.5的同以前的版本相比变大很大(相关信息可以查询该站点以及相关链接),而我这里分析的是1.4.20。
相关连接:
http://www.lighttpd.net/download/lighttpd-1.4.20.t ar.gz
http://www.lighttpd.net/download/lighttpd-1.4.20.t ar.bz2
http://www.lighttpd.net/download
http://www.lighttpd.net/
http://blog.lighttpd.net/
http://redmine.lighttpd.net/wiki/lighttpd/Devel
1.2 lighttpd源码分析工具
我个人用的是windows系统,使用的分析…
一,为什么要使用lighttpd?
apache不可以吗?
在支持纯静态的对象时,比如图片,文件等 ,
lighttpd速度更快,更理想
[下面四段话来自:http://www.javayou.com/diary/3264\]
Lighttpd是一个德国人领导的开源软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web server环境。具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。
lighttpd是众多OpenSource轻量级的web server中较为优秀的一个。支持FastCGI, CGI, Auth, 输出压缩(output compress), URL重写, Alias等重要功能,而Apache之所以流行,很大程度也是因为功能丰富,在lighttpd上很多功能都有相应的实现了,这点对于apache的用 户是非常重要的,因为迁移到lighttpd就必须面对这些问题。
实用起来lighttpd确实非常不错,上文提到的apache overload的问题,用lighttpd就完全解决了。apache主要的问题是密集并发下,不断的fork()和切换,以及较高(相对于 lighttpd而言)的内存占用,使系统的资源几尽枯竭。而lighttpd采用了Multiplex技术,代码经过优化,体积非常小,资源占用很低, 而且反应速度相当快。
利用apache的rewrite技术,将繁重的cgi/fastcgi任务交给lighttpd来完成,充分利用两者的优点,现在那台服务器的负载下降了一个数量级,而且反应速度也提高了一个甚至是2个数量级!
二,从何处下载lighttpd?
http://www.lighttpd.net
这个是它的官方站
我下载的是 lighttpd-1.4.19.tar.bz2 ,在附件里。
- # cp lighttpd-1.4.19.tar.bz2 /usr/mylib \
- # tar jxvf lighttpd-1.4.19.tar.bz2
- # cd lighttpd-1.4.19
Lighttpd的优化是多方面的,最重要的就是优化其性能。操作系统有2大因素,可以帮助Lighttpd达到它的最佳性能。
HTTP Keep-Alive
禁用Keep-Alive可以帮助你的服务器减轻因大量打开着的文件描述符而产生的负载。
服务器默认的设置是:
server.max-keep-alive-requests = 128 server.max-keep-alive-idle = 30 server.max-read-idle = 60 server.max-write-idle = 360 在单个连接处理一行128个Keep-Alive的请求,在一个未被使用的Keep-Alive连接被Lighttpd丢弃之前等待30秒。 如果你在一个高负载环境下一次处理许多连接(假设在24小时内有500个平行连接),那你可能陷入了如下描述的 out-of-fd问题。 server.max-keep-alive-requests = 4 server.max-keep-alive-idle = 4 这样可以提前释放连接,并在不损失性能的情况下释放文件描述符。 完全禁用Keep-Alive是解决文件描述符短缺的最后手段: server.max-keep-alive-requests = 0 事件处理器 首先是和通知服务器一个连接是否已经准备好发送或接收数据相关的事件处理器。 正如你所看到的,每一个操作系统至少有select()调用,但它有所限制。
参考http://trac.lighttpd.net/trac/wiki/TutorialInstallation中Installing services部分 结合我的上篇博文
为lighttpd增加server的启动
进入lighttpd的安装目录
我的/home/suantop/lighttpd-1.4.19 # sed -e ‘s/FOO/lighttpd/g’ doc/rc.lighttpd.redhat > /etc/init.d/lighttpd
# chmod a+rx /etc/init.d/lighttpd
# cp -p doc/sysconfig.lighttpd /etc/sysconfig/lighttpd
结合自己的环境需要更改/etc/sysconfig/lighttpd
# cat doc/sysconfig.lighttpd 默认的 LIGHTTPD_CONF_PATH=/etc/lighttpd/lighttpd.conf 修改内容如下: # cd /etc/sysconfig # vi lighttpd LIGHTTPD_CONF_PATH=/usr/local/lighttpd/lighttpd.conf