lighttpd VS ngix 性能比较,技术架构比较

      最近在公司里进行了一次深入HTTP分享,有同事提到了lighttpd在处理大文件时性能很差,不如ngix. 之前也没有对ngix研究过,所以无法评估.加上这么多年的linux上大型系统的开发经验和仔细研究过lighttpd 的代码,当时对同事的答复是估计ngix也提高不了到哪里去,最多10%,只是代码写法的一点差异. 同事们不太相信. 结束后上google查了一下ngix的资料,并下载了原代码进行研究(个人喜好从代码级研究认证,不喜欢看网上的评论,尤其是国内的评论,很多评论是没有经过深入研究之后的误人之第),并从网上找了一些评论,果然有看到lighttpd大文件下载或大并发连接性能不好之类的评论.

      经过仔细研究ngix代码之后发现,ngix的技术架构是结合lighttpd和apache之长, module的写法基本上与apache 一致,非常类似; 网络处理的架构与lighttpd类似,都是使用单进程单线程方式,并使用异步I/O,sendfile等,在linux2.6内核都使用epoll处理网络事件,因此很难看出本质上的区别,唯一的区别是ngix充分利用了C语言的特性来节省内存(如bit位). 

      经过20000个并发连接测试10万次小文件下载测试,两者性能上差别不大,CPU消耗都在10%以内; 再进行大文件测试10万次下载,并发2000,两者相差不大,CPU消耗都是在4%以内,lighttpd的CPU消耗甚至还小一点. 这个时候的网络带宽已经完全被消耗干净,充分利用了网络带宽.

     因此就非常奇怪为什么网上有评价lighttpd性能差的原因? 仔细思考后,估计是lighttpd的event_handler配置问题,因为默认event_handler是使用poll, 而不是epoll(linux). 然后注释掉#server.event-handler="linux-sysepoll" 再进行性能测试,果然发现lighttpd的CPU消耗就上去了. 看来网上的评论就是这个缘故,使用了默认配置,而ngix默认配置就是使用了epoll.

     说明了国内很多人没有仔细研究过系统,就对系统枉加评论,结果误倒了很多人.这也是我听到同事说什么什么问题是网上评论的时候,我总是怀疑其正确性的原因.

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值