好长一段时间一段时间的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 次请求。
Nginx + php-fpm 测试结果是每秒完成 352 次请求。FastCGI 的进程间通讯还是拉低了性能。
Nginx 在运行 PHP 时,需要 PHP 自己启动 php-fpm 管理一个进程池,并监听在一个 TCP 端口(最常见的 9000 / 9001)或者 Unix Socket 等待 Nginx 通过 FastCGI 转发请求过来。所以性能方面无论如何都躲避不了进程通讯的 IO 性能消耗,这点不如 Apache 性能好。
草草收尾
其实还有一些其他解决方案可以参考
Tengine — Taobao团队魔改Nginx
Openresty — 又是一个支持Lua脚本做相关设置定义的魔改Nginx
H2O — lIMI-JUJU 推荐…小众些