论坛首页 综合技术论坛

被lighttpd搞的火大

浏览 23364 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-05-12  
这两天安装和配置lighttpd,文档实在奇缺,被搞的火大。

按照官方网站的guide安装和启动,启动脚本没有反应,研究了一下才发现,默认脚本是跑SuSE的,换成Redhat的搞定。

然后启动报错,注释了一个rewrite的地方,跑起来了,rewrite不能用,回过去重新configure --enable-rewrite,还是没有rewrite,仔细研究了configure的help,无解,研究官方文档,无解。最后仔细研究configure的时候屏幕输出信息,总算让我看出来缺少了一个pcre。

然后下载编译安装pcre,再configure lighttpd,搞定,rewrite生效了。不过stat-cache-fam还不行,于是再configure --with-fam,报错,说缺gamin。于是下载gamin,configure gamin,报错,说缺少pkg-config,晕倒!

下载pkg-config(说是内置了glib-1.8 ),编译安装pkg-config,搞定。再configure gamin,又报错,说缺少glib-2.0(你说pkg-config干吗不内置2.0,非要内置1.8呢)。

然后下载glib-2.0.7, configure,make的时候报错,上网一搜,说有人在编译Gnome的时候有这个错误,建议修改makefile某个地方,我vi打开makefile,一search,根本没有这个地方。算了,暂时放弃fam的功能了。

回头再去搞lighttpd,用ab测试了一把,请求一个简单静态html,ab -c 100 -n 1000000, 多次测试lighttpd在3000到6000 request/s之间波动,再同样测试apache2.0.44,只有800-1600 request/s,看来lighttpd性能惊人!

不过最令我吃惊的还是lighttpd竟然是单进程多路复用的服务器,不管你多少请求他就一个进程在跑,内存和CPU资源效率比apache少了不知道多少倍,我用top看了一下,也就几MB内存占用,和apache一下启动100多个进程相比,实在令人印象太深刻了。

上网搜了一下,说lighttpd这种单进程模式容易被log这种事情阻塞住,而且有n多bug,还动不动死掉,所以有人建议用qmail作者D.J.B的daemon去启动lighttpd,这些问题我觉得都可以接受,daemon就daemon,不写log就不写log,没有什么大不了,后面的tomcat写log就行了。

但是最让我不爽的还是mod_proxy,文档上面讲的配置很简单,我安装他配了一下,他竟然不load balance,总是把请求分发到clone1上面,拒绝分发给clone2。我把clone1 stop掉,第一次请求给我一个503错误,第二次请求就切换到clone2上面了。然后我又把clone1启动,一开始还是全部请求访问clone2,但是过了一段时间,统统访问clone1去了,又不访问clone2,搞的我束手无策。hash和fair方式都试了无效。不论从哪台机器访问,都是clone1。

一个是load balance不生效,二是也无法设置lb factor,三是failover的时候第一次请求毕竟还是会出错,怎么解决呢?恼火啊,文档太缺了。

贴一下配置
引用

$HTTP["host"] == "develop" {
  proxy.balance = "fair"
  proxy.server  = ( "/" => ( ( "host" => "127.0.0.1" , "port" => 8081),
                            ( "host" => "127.0.0.1" , "port" => 8082) ) )
}


RHEL SP3, lighttpd 1.4.11 tomcat5.5.17

有个类似配置在这里:
http://www.iteye.com:8000/server-config
另外传说在Linux Kernel2.6上面支持epoll,是poll性能的5倍,可是我该怎么设置lighttpd使用epoll呢?
   发表时间:2006-05-12  
真的非常可惜,去年我花了很长的时间写了Tiger下面安装的文档,很多问题都碰到过了,后来硬盘出错,就没有了,很多细节已经记不得了,load balance我概念中自己应该是配好的,还稍微用rails的第一页测了一下,不过是fastcgi和rails程序


关于单进程的事情,已经被很多高并发的程序证明了
crash原先在访问量非常大的时候确实需要一个守候程序,但最近听说好了很多,几乎不太有这方面的问题了
0 请登录后投票
   发表时间:2006-05-12  
potian 写道
真的非常可惜,去年我花了很长的时间写了Tiger下面安装的文档,很多问题都碰到过了,后来硬盘出错,就没有了,很多细节已经记不得了,我概念中自己应该是配好的,不过是fastcgi和rails程序


关于单进程的事情,已经被很多高并发的程序证明了
crash原先在访问量非常大的时候确实需要一个守候程序,但最近听说好了很多,几乎不太有这方面的问题了


现在后面连接什么不重要,关键是lighttpd必须按照fair的原则给我分发请求啊,他光往clone1的8081端口上面发,不往8082上面发。就算我换成mongrel,还不是一样啊。而且我也没有找到有人报告同样的问题。

mongrel网站建议使用fair,现在我就算按照mongrel网站提供的guide,他也只是往第一个配置上面转发请求。
0 请登录后投票
   发表时间:2006-05-12  
我郁闷之下,狂刷F5不止,发现竟然还有那么偶尔几次,请求被分发到了clone2上面来了。真是诡异
0 请登录后投票
   发表时间:2006-05-12  
难道老大不吃饱的话,就不给老二?
0 请登录后投票
   发表时间:2006-05-12  
dwangel 写道
难道老不吃饱的话,就不给老二?


可能真的是这样。我又试了一把新的测试方案:

ab -c 1 -n 100000 http://develop/

先用ab给lighttpd一点压力,然后我再打开浏览器去访问
http://develop/

刷新再刷新,这次完全正常了,出来一次clone1,就出来一次clone2,两者得到的请求完全平衡了。

然后我不在加压给lighttd,再打开浏览器刷新,不管怎么刷,它总是clone1。真贱啊,不给它点压力,就不给我干活!
0 请登录后投票
   发表时间:2006-05-12  
我这里有个lighttpd可以在windows上跑的。
0 请登录后投票
   发表时间:2006-05-13  
baizheng 写道
我这里有个lighttpd可以在windows上跑的。


是不是固定装在在c:\下的那个版本?
0 请登录后投票
   发表时间:2006-05-13  
以前做http server压力测试的时候参考过这份报告,lighttpd的效率在这个测试中算是中上。

不过对于很多项目而言,http server的效率并不是唯一的考量。
0 请登录后投票
   发表时间:2006-05-14  
baizheng 写道
我这里有个lighttpd可以在windows上跑的。


http://www.lighttpd.net/download/
http://www.kevinworthington.com:8181/
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics