来自http://www.cnblogs.com/oubo/archive/2012/05/21/2511726.html
本次调研主要对目前主流的WEB服务器Apache/Lighttpd/Nginx下静态文件的访问进行对比。主要从性能、稳定性、简易性(安装、配置、依赖、大小)等方面入手。最后在Windows环境下,对其性能进行比较。
# 简介
## 1. Apache
Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。Apache能取得如此成功并不足为奇:它免费、稳定且性能卓越;但Apache能取得如此佳绩的另一个原因是,当时互联网刚刚兴起时,Apache是第一个可用的Web应用服务器,人们没有其他的选择。
对于那些需要更强大的Web应用服务器(比如大小、可定制、响应速度、可扩展性等方面)的人而言,Apache明显不符合他们的要求,寻找Apache的替代者是更好的选择。
## 2. Lighttpd
Lighttpd是一个具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。lighttpd是众多OpenSource轻量级的web server中较为优秀的一个。支持FastCGI, CGI, Auth, 输出压缩(output compress), URL重写, Alias等重要功能。
## 3. Nginx(Ngwsx)
Nginx是十分轻量级的HTTP服务器,是一个高性能的HTTP和反向代理服务器,Nginx以事件驱动的方式编写,所以有非常好的性能,同时也是一个非常高效的反向代理、负载平衡。其拥有匹配 Lighttpd的性能,同时还没有Lighttpd的内存泄漏问题。
# 对比
![](https://box.kancloud.cn/ade01b4a3956275a6249cb2fb5e1d41f_689x743.png)
# 总结(静态资源)
## Apache:
* ### **优点:**
* Apache的兼容性和稳定性都是非常强
* Apache 的模块比 Nginx/Lighttpd丰富
* Apache在处理动态请求比Nginx/Lighttpd更有优势
* ### **缺点:**
* 属于重量级web服务器(重量级主要是在软件包的大小上比较大,软件的耦合度大)
* 在速度、性能不及其他轻量级web服务器,并且消费内存较高。使用传统的select模型,比较稳定的Prefork模式为多进程模式,需要经常派生子进程。所以消耗的cpu等服务器资源比较大。
## Lighttpd:
* ### 优点:
* 虚机的配置处理方式比 apache 直观,比Apache轻量
* 轻量级web服务器,cpu占用低,效能好,模块丰富,对fastcgi支持非常好。
* 支持高并发,和Nginx差不多,比apache性能高很多。
* ### **缺点:**
* 稳定性没有Apache和Nginx高,bug相对较多
## Nginx:
* ### **优点:**
* 轻量级,比apache 占用更少的内存及资源
* 抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能
* 高度模块化的设计,编写模块相对简单
* 有Lighttpd的性能,且更稳定,没有其内存泄露问题;
* 处理静态文件,索引文件以及自动索引,打开文件描述符缓冲。
* ### **缺点:**
* nginx处理动态请求是鸡肋,不如Apache;
## 建议方案:
**Apache 后台服务器(主要处理php及一些动态请求);Nginx 前端服务器(高并发请求、静态资源、负载均衡、反向代理和前端Cache等)。**
## 性能测试
在Linux下的性能评测见:[http://www.blogjava.net/daniel-tu/archive/2008/12/29/248883.html](http://www.blogjava.net/daniel-tu/archive/2008/12/29/248883.html)
在Windows下的性能评测见:[http://down.chinaz.com/server/201202/1614_1.htm](http://down.chinaz.com/server/201202/1614_1.htm)
从网友的实际评测结果来看,对静态资源访问的服务器还是Nginx最好。
- 谁能举个通俗易懂的例子告诉我IAAS,SAAS,PAAS的区别?
- 服务器与容器
- 常见NIO框架
- Nginx/Apache 和Apache Tomcat 的区别
- tomcat结合nginx使用小结
- java nio框架netty 与tomcat的关系
- Nginx、Lighttpd与Apache的区别
- Apache vs Lighttpd vs Nginx对比
- 数据库
- mybatis
- MyBatis传入多个参数的问题
- MS
- JMS(Java消息服务)入门教程
- ActiveMQ
- JMS简介与ActiveMQ实战
- JMS-使用消息队列优化网站性能
- 深入浅出JMS(一)--JMS基本概念
- 深入浅出JMS(二)--ActiveMQ简单介绍以及安装
- 深入浅出JMS(三)--ActiveMQ简单的HelloWorld实例
- RabbitMq、ActiveMq、ZeroMq、kafka之间的比较,资料汇总
- kafka
- zookeeper
- 集群与负载
- 单机到分布式集群
- 日志
- 从Log4j迁移到LogBack的理由
- 角色权限
- shiro
- Shiro的认证和权限控制
- Spring 整合 Apache Shiro 实现各等级的权限管理
- 安全
- basic
- Servlet、Filter、Listener深入理解
- filter与servlet的比较
- Servlet Filter