apache-nginx对比及vps性能优化总结

BY XTBlock/abamon

我的个人博客站:www.zy2zy.com

转载请注明出处:http://www.zy2zy.com/apache-nginx对比及vps性能优化总结/


前言

Apache与Nginx都是开源、跨平台、免费的HTTP服务器。Apache自从1996年开始就是最流行的服务器,到2009年,使用Apache的网站达到了1个亿。而Nginx设计的目标就是成为一个高效的,针对反向代理与静态内容的服务器。在相同访问量的情况下,Nginx占用更小的内存,同时推荐运行在VPS上的网站使用。


区别

1、从架构上来说,Apache是一个基于进程的网络服务器,每一个HTTP request都会有一个对应的线程来对其进行处理,每个线程所产生的开销都不小。而Nginx是基于事件的轻量级网络服务器,它仅需要屈指可数的几个线程就可以处理大量的request,且处理每个request所需要的开销都非常小。


2、从功能层面来看,Apache无疑是最全面的,但如果只需要做一个小型的博客站,Apache多出来的那些功能等价于无。Apache支持Nginx所支持的所有功能,列表如下:

静态文件
SSL/TLS
虚拟主机
反向代理
负载均衡
压缩
访问控制
url重定向
自定义日志
SSI(Server-side Includes)
FLV
FastCGI
除此之外,Apache另外还有瑞安特性:

管理控制台
.htaccess

3、从性能来看,Apache是阻塞的,而Nginx是异步的。在处理静态文件方面,因为Nginx对新request不需要在开新的线程来处理,因此在内存消耗上明显要优于Apache。

Nginx与Apache总结

Apache

优点:

1、兼容性强;

2、可选择的模块丰富;

3、处理动态请求效率更高;

Nginx

优点:

1、轻量级,在处理相同请求的情况下,Nginx占用的内存远远低于Apache;

2、高并发,因为Nginx是异步非阻塞的,因此在高并发下Nginx也能保持低资源低消耗高性能;

3、高度模块化设计,编写及加入模块相对简单;

缺点:

1、处理动态请求(即需要服务器进行一定运算才能回应的请求)时,Nginx不如Apache;


体验与感受

自从服务器搭建好之后,发现内存越用越多,直到数据库down掉,不得不重启服务器。同时每次访问等待的时间特别长,查看网络延时却只有500ms,因此意味着服务器处理请求的时间太长。基于如上的调研以及其它一些调研结果,我做了两件事情来提升我的VPS的性能:

1、页面静态化。因为这是一个个人博客站,没有什么东西是需要在服务器上进行计算之后才能返回给用户的,因此静态化网页可以避免不必要的计算。调整之后访问网站的时间有所缩短,但依旧不如人意。

2、调整架构。架构由LAPM(Linux+Apache+PHP+Mysql)改成了LNPM(Linux+Nginx+PHP+Mysql)。调整架构之后,访问首页的等待时间虽然有所减短,但依旧不如人意,但是在从首页跳转到其它页面时基本是在1秒之内,可以说页面之间的切换的体验有了质的提升。


最后

对于我们这种自建博客站的低需求用户来说,我觉得Chris Lea总结得非常形象:Apache是一个有着非常多选择的Microsoft Word,但你只会用到其中6个。而Nginx就只提供这6个功能,且Nginx在其中5个功能比Apache快50倍。(50倍感觉说得有点太夸张,不过确实快了很多)


参考目录

[1]. 《Apache vs nginx》 http://www.wikivs.com/wiki/Apache_vs_nginx

[2]. 《Apache vs Lighttpd vs Nginx对比》 http://www.cnblogs.com/oubo/archive/2012/05/21/2511726.html

[3]. 《Nginx与Apache各有什么优缺点》 http://www.zhihu.com/question/19571087

[4]. 《Apache、Nnginx、Lighttpd的比较和择优 》 http://sjolzy.cn/WEB-server-Apache-Nnginx-Lighttpd-comparison-and-selection-of-the-best.html

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。