1. web服务器简介

1. lighttpd

Lighttpd是一个德国人领导的开源软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的Web server环境

Lighttpd是一个具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。lighttpd是众多OpenSource轻量级的web server中较为优秀的一个。支持FastCGI, CGI, Auth, 输出压缩(output compress), URL重写, Alias等重要功能。

而Apache之所以流行,很大程度也是因为功能丰富,在Lighttpd 上很多功能都有相应的实现了,这点对于Apache的用户是非常重要的,因为迁
移到Lighttpd就必须面对这些问题。

Lighttpd使用fastcgi方式运行php,它会使用很少的PHP进程响应很大的并发量。其fastCGI进程管理器一般使用spawn-fcgi

2.apache

apache是世界排名第一的web服务器, 根据netcraft(www.netsraft.co.uk)所作的调查,世界上百分之五十以上的web服务器在使用apache.

1995年4月, 最早的apache(0.6.2版)由apache group公布发行. apache group 是一个完全通过internet进行运作的非盈利机构, 由它来决定apache web服务器的标准发行版中应该包含哪些内容. 准许任何人修改隐错, 提供新的特征和将它移植到新的平台上, 以及其它的工作. 当新的代码被提交给apache group时, 该团体审核它的具体内容, 进行测试, 如果认为满意, 该代码就会被集成到apache的主要发行版中.

它有优势主要在于源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、Linux、Windows系统平台之上)。Apache的模块支持非常丰富,以至于它提供了非常完善的功能。

apache 的特性:

1) 几乎可以运行在所有的计算机平台上.

2) 支持最新的http/1.1协议

3) 简单而且强有力的基于文件的配置(httpd.conf).

4) 支持通用网关接口(cgi)

5) 支持虚拟主机.

6) 支持http认证.

7) 集成perl.

8) 集成的代理服务器

9) 可以通过web浏览器监视服务器的状态, 可以自定义日志.

10) 支持服务器端包含命令(ssi).

11) 支持安全socket层(ssl).

12) 具有用户会话过程的跟踪能力.

13) 支持fastcgi(只在apache1.3时支持,apache2以后的版本不再支持了)

14) 支持java servlets

15) 不支持epoll(这年头,epoll几乎是性能的必备,这也是为什么apache的并发性能比其他两款web软件差的主要原因吧)

16) 非常好用的proxy和proxy_ajp(很多人用它作为tomcat的前端)

3.nginx

Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”, 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器.Nginx是由俄罗斯人 Igor Sysoev为俄罗斯访问量第二的 Rambler.ru站点开发.

Nginx以事件驱动的方式编写,所以有非常好的性能,同时也是一个非常高效的反向代理、负载平衡。其拥有匹配 Lighttpd的性能,同时还没有Lighttpd的内存泄漏问题,而且Lighttpd的mod_proxy也有一些问题并且很久没有更新。但是Nginx并不支持cgi方式运行,原因是可以减少因此带来的一些程序上的漏洞。所以必须使用FastCGI方式来执行PHP程序。

nginx做为HTTP服务器,有以下几项基本特性:

1)处理静态文件,索引文件以及自动索引;打开文件描述符缓冲.

2)无缓存的反向代理加速,简单的负载均衡和容错.

3)FastCGI,简单的负载均衡和容错.

4)模块化的结构。包括gzipping, byte ranges, chunked responses,以及 SSI-filter等filter。如果由FastCGI或其它代理服务器处理单页中存在的多个SSI,则这项处理可以并行运行,而不需要相互等待。

5) Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率。它支持内核Poll模型,能经受高负载的考验,有报告表明能支持高达 50,000个并发连接数。

6) Nginx具有很高的稳定性。其它HTTP服务器,当遇到访问的峰值,或者有人恶意发起慢速连接时,也很可能会导致服务器物理内存耗尽频繁交换,失去响应,只能重启服务器。例如当前apache一旦上到200个以上进程,web响应速度就明显非常缓慢了。而Nginx采取了分阶段资源分配技术,使得它的CPU与内存占用率非常低。nginx官方表示保持10,000个没有活动的连接,它只占2.5M内存,所以类似DOS这样的攻击对nginx来说基本上是毫无用处的。就稳定性而言,nginx比lighthttpd更胜一筹。

7) Nginx支持热部署。它的启动特别容易, 并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够在不间断服务的情况下,对软件版本进行进行升级。

2. Nginx与Apache的异同

Nginx和Apache一样,都是HTTP服务器软件,在功能实现上都采用模块化结构设计,都支持通用的语言接口,如PHP、Perl、Python等,同时还支持正向和反向代理、虚拟主机、URL重写、压缩传输、SSL加密传输等。

1)在功能实现上,Apache的所有模块都支持动、静态编译,而Nginx模块都是静态编译的,

2)对FastCGI的支持,Apache对Fcgi的支持不好,而Nginx对Fcgi的支持非常好;

3)在处理连接方式上,Nginx支持epoll,而Apache却不支持;

4)在空间使用上,Nginx安装包仅仅只有几百K,和Nginx比起来Apache绝对是庞然大物。

1)

Nginx 相对apache的优点:

轻量级,同样起web 服务,比apache 占用更少的内存及资源

静态处理,Nginx 静态处理性能比 Apache 高 3倍以上

抗并发,nginx 处理请求是异步非阻塞的,而apache则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能。在Apache+PHP(prefork)模式下,如果PHP处理慢或者前端压力很大的情况下,很容易出现Apache进程数飙升,从而拒绝服务的现象。

高度模块化的设计,编写模块相对简单

社区活跃,各种高性能模块出品迅速啊

2) apache 相对nginx 的优点:

rewrite,比nginx 的rewrite 强大

模块超多,基本想到的都可以找到

少bug,nginx的bug相对较多

超稳定

Apache对PHP支持比较简单,Nginx需要配合其他后端用

存在就是理由,一般来说,需要性能的web 服务,用nginx 。如果不需要性能只求稳定,那就apache 吧。后者的各种功能模块实现得比前者,例如ssl 的模块就比前者好,可配置项多。

这里要注意一点,epoll(freebsd 上是 kqueue )网络IO 模型是nginx 处理性能高的根本理由,但并不是所有的情况下都是epoll 大获全胜的,如果本身提供静态服务的就只有寥寥几个文件,apache 的select 模型或许比epoll更高性能。当然,这只是根据网络IO 模型的原理作的一个假设,真正的应用还是需要实测了再说的。

3) . 选择Nginx的优势所在

Nginx作为HTTP服务器的优势是显而易见的,它有很多其他Web服务器无法比拟的性能和优势:

1) 作为Web服务器: Nginx处理静态文件、索引文件,自动索引的效率非常高。

2) 作为代理服务器,Nginx可以实现无缓存的反向代理加速,提高网站运行速度。

3) 作为负载均衡服务器,Nginx既可以在内部直接支持Rails和PHP,也可以支持HTTP代理服务器对外进行服务,同时还支持简单的容错和利用算法进行负载均衡。

4) 在性能方面,Nginx是专门为性能优化而开发的,在实现上非常注重效率。它采用内核Poll模型(epoll and kqueue ),可以支持更多的并发连接,最大可以支持对50 000个并发连接数的响应,而且只占用很低的内存资源。

5) 在稳定性方面,Nginx采取了分阶段资源分配技术,使得CPU与内存的占用率非常低。Nginx官方表示,Nginx保持10 000个没有活动的连接,而这些连接只占用2.5MB内存,因此,类似DOS这样的攻击对Nginx来说基本上是没有任何作用的。

6) 在高可用性方面,Nginx支持热部署,启动速度特别迅速,因此可以在不间断服务的情况下,对软件版本或者配置进行升级,即使运行数月也无需重新启动,几乎可以做到7×24小时不间断地运行。

这两者最核心的区别在于apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别)可以对应一个进程 。

建议使用Nginx做前端,后端用apache。大型网站最好使用Nginx自带的集群功能。

  

Nginx和apache压力测试数据比较:

    apache nginx
n c Time r/s t/r(ms) Time r/s t/r
40000 200 45 886 225 41 955 209
40000 200 36 1091 183 40 986 202
               
40000 400 361 110 3614 49 813 491
40000 400 49 811 492 38 1027 389
40000 400 38 1037 385 41 963 415
               
40000 1000 407 98 10177 51 773 1292
40000 1000 323 123 8091      
               
40000 5000 349 114 43660 53 741 6742
               
40000 10000 364 109 91142 69 574 17394
               
40000 15000 369 108 138665 310    

服务器数据:

       
n c sys sys
40000 200 ProcessNum:223 Mem:130.0 CPU:253.2 Load:2.57
ProcessNum:209 Mem:121.5 CPU:186.7 Load:3.52
ProcessNum:35 Mem:7.1 CPU:0 Load:0.29
ProcessNum:35 Mem:7.1 CPU:7.8 Load:5.99
       
40000 400 ProcessNum:177 Mem:134.3 CPU:55.3 Load:0.46
ProcessNum:413 Mem:239.3 CPU:122.4 Load:3.52
ProcessNum:35 Mem:10.7 CPU:5.9 Load:0.04
ProcessNum:38 Mem:10.7 CPU:29.1 Load:5.08
       
40000 1000
ProcessNum:188 Mem:92.9 CPU:10.8 Load:0.01
ProcessNum:401 Mem:200.0 CPU:15.3 Load:1.43
ProcessNum:39 Mem:7.1 CPU:8.3 Load:3.08
ProcessNum:39 Mem:7.1 CPU:15.6 Load:4.21
       

apache,ngnix,lighttpd性能对比相关推荐

  1. Apache vs Lighttpd vs Nginx对比

    转载自: http://www.cnblogs.com/oubo/archive/2012/05/21/2511726.html 本次调研主要对目前主流的WEB服务器Apache/Lighttpd/N ...

  2. nginx与lighttpd性能简单对比

    闲的没事,拿一台淘汰的2950做了做nginx和lighttpd的性能对比,可以在选择webserver上做个参考. 测试环境如下 Dell2950 4G内存,FreeBSD 8.2 release ...

  3. nginx与apache详细性能对比

    之前一直研究nginx的源代码,最近有时间也做了下nginx与apache的性能对比,希望能够够对大家有所帮助! 转载请注明:http://blog.csdn.net/lengzijian/artic ...

  4. java导出excel组件alibaba easyexcel和apache poi性能对比

    java导出excel组件alibaba easyexcel和apache poi性能对比 背景: 开发中出现web页面导出记录到excel导致服务oom奔溃,代码中使用apache poi组件导出, ...

  5. 51CTO专访清无:Nginx_lua的应用及性能对比

    对于Web高性能服务器上的选择,这个是很多人头痛的问题.对于Apache.lighttpd.Nginx都用他们优点,在什么情况下我们如何去选择适合自己的Web高性能服务器,如何去搭建一个适合自己的架构 ...

  6. Java常用消息队列原理介绍及性能对比

    消息队列使用场景 为什么会需要消息队列(MQ)? 解耦  在项目启动之初来预测将来项目会碰到什么需求,是极其困难的.消息系统在处理过程中间插入了一个隐含的.基于数据的接口层,两边的处理过程都要实现这一 ...

  7. PHP7+Swoole/Nginx/Golang性能对比

    QPS对比 使用apache bench工具对Nginx静态页.Golang Http程序.PHP7+Swoole Http程序进行压力测试.在同一台机器上,进行并发100共100万次Http请求的基 ...

  8. php7.0和5.6哪个好,PHP7.0与PHP5.6下Laravel博客的应用性能对比介绍

    PHP7.0与PHP5.6下Laravel博客的应用性能对比介绍 发布时间:2020-04-24 09:49:17 来源:亿速云 阅读:131 作者:小新 这篇文章主要为大家详细介绍了PHP7.0与P ...

  9. Excel文件解析性能对比(POI,easyexcel,xlsx-streamer)

    问题: 在解析excel内容时,由于用户误操作,偶尔会误录入大量空行,如果代码处置不当,进行文档内容解析时,就会占用大量时间和内存,甚至引起服务器内存消耗殆尽,导致服务无法访问,或者引起OOM. 解决 ...

最新文章

  1. ubuntu 安装Gogland
  2. 【NLP】基于GloVe词向量的迁移学习
  3. java file源码_java File源码理解,探索File路径
  4. react判断点击位置是否为组件内,实现点击外部触发组件内事件
  5. 零基础入门神经网络:从原理、主要类型到行业应用
  6. [设计] - 判断LOGO好坏的12条参考标准
  7. C#_delegate - 值参数和引用参数
  8. kibana集成内部账号_揭开 Elasticsearch 中身份验证和授权的神秘面纱
  9. 关于【CSDN免积分下载器】的分析
  10. 虚拟试衣是什么及优势在哪
  11. 分享:Android清除本地数据缓存代码
  12. 微信小程序中的用户ID(包括openid和unionid)
  13. 计算机毕业设计django基于python学生考试成绩数据分析与可视化系统(源码+系统+mysql数据库+Lw文档)
  14. 用 Python 实现英文单词纠错功能!这样就不担心不会辅导孩子了!
  15. 河南工业大雪c语言题库,河南工业大学C语言题库
  16. 【资料分享】智能车比赛 - 硬件调教
  17. 【我的Android进阶之旅】Android混淆踩坑之各模块各自单独配置混淆,但是将minifyEnabled设置为true导致的编译错误
  18. Matlab中dec2bin函数使用
  19. 卷上卷队——钟某人的python刷题day8——100道python例题
  20. 邀请函 | PostgresConf.cn 2020开发者闭门会议,广邀中国贡献者

热门文章

  1. 2021-2027全球与中国新冠肺炎安全和防护产品市场现状及未来发展趋势
  2. 谷歌的请求索引功能恢复了
  3. python字符串比较大小列表比较大小ascii编码
  4. cocos Creator | 2D光影效果及手电筒效果
  5. 小学有关计算机黑板报,计算机教室黑板报 [高中教室黑板报内容]
  6. python菜鸟excel教程-Python新手入门:Excel基本操作(一)
  7. 睿爸信奥-【临阵磨枪】练习赛(第一场)- T3
  8. java惊恐食人鱼游戏下载_恐怖食人鱼合集游戏
  9. MySQL一对一、一对多、多对多
  10. zabbix监控主机是否存活