记一次折腾服务器(Nginx vs Apache)

好长一段时间一段时间的PHP服务LEMPA架构,模模糊糊的知道原因却不能直观说出个具体原理是啥…
这次晚上闲来无聊,拿这个疼训云白给的6个月CVM来折腾一番

LEMPA的组成以及为什么这样搭配

其实写这个就有点赘述了,也不是太大的必要说这个…
L→Linux
E→Nginx
M→MySQL
P→PHP(世界上最好的语言)
A→Apache
其实我也开始也是在这里纠结关于为什么有Nginx还要Apache做什么(或者有Aapche了Nginx做什么)?

Nginx与Apache共存的原因

众所周知Nginx存在的原因在于,他是一个极其轻量级的HTTP服务器(现在又是有很多很多的功能)。
比起Apache,Nginx的效率高出了很多,尤其对于静态资源访问处理、并发的解决这块。Apache针对每个请求的处理太占用系统资源。(具体原因请自行百度!)
不过说这些,也不是说Apache一点优点没有。Apache天生的PHP解析运行module,让PHP与Apache完整的结合在一起。
让Nginx在前面做反向代理给Apache吐请求,让Apache+PHP在后边做解析运算处理。是绝对高效率的选择。

Nginx一定强于Apache么?

其实不是的!Nginx的出世确实给大家留下了美好的印象,正因为出世当时弥补了Apache HTTPD 很多缺点。
但是咱们Apache阵营也不是吃干饭的,2.2版本的Apache HTTPD 不好?那我们下个版本改进啊!

Apache到2.4版本Event模式已经脱离实验期可以用于生产环境了,并且MPM有了异步读写支持,
对于Apache不如Nginx的说法就是2.4以前的Event不太成熟而已。

不过用户习惯上跑静态资源或者反向代理还是喜欢Nginx所以没人注意到。

–90.cx 九零创新团队

Nginx vs Apache

以下是来自九零创新团队的数据测评!

对比使用的配置是单核 768M 内存 512M Swap 的虚拟机,测试使用的是 phpinfo() 函数返回的结果有 80 KB 长度,这一函数在运行过程中会扫描 PHP 的所有环境配置项,因此能比较直观的看出初始化和进程通讯所产生的性能影响。

PHP 版本是 7.0.8,Apache 和 Nginx 版本在截图中。进程配置(Apache 和 php-fpm)是统一初始化 15 个进程,最大限制 100 个进程。

使用测试工具是 ab,发起 100 并发,总计 1000 次请求。

Apache + mod_php 测试结果是每秒完成 412 次请求。
Apache

Nginx + php-fpm 测试结果是每秒完成 352 次请求。FastCGI 的进程间通讯还是拉低了性能。
Nginx

Nginx 在运行 PHP 时,需要 PHP 自己启动 php-fpm 管理一个进程池,并监听在一个 TCP 端口(最常见的 9000 / 9001)或者 Unix Socket 等待 Nginx 通过 FastCGI 转发请求过来。所以性能方面无论如何都躲避不了进程通讯的 IO 性能消耗,这点不如 Apache 性能好。

草草收尾

其实还有一些其他解决方案可以参考

Tengine — Taobao团队魔改Nginx
Openresty — 又是一个支持Lua脚本做相关设置定义的魔改Nginx
H2O — lIMI-JUJU 推荐…小众些

发布者

ShellV

大一萌新、笨蛋全栈开发者、信息爱好者、 速度滑冰/轮滑 运动员、裁判、教练员、 HIT动漫程序技术部吉祥物、AcgBug团队负责人、AcgBag.com小站长