LAMP和LEMP做Web Server到底怎么选?

LAMPLinux + Apache + MySQL/MariaDB + PHPVS LEMPLinux + Engin X + MySQL/MariaDB + PHP-FPM)

青菜萝卜各有所爱,根据实际情况选择,不管Apache还是Nginx我在生产环境中都在用,它们也各有各自的特点,这篇文章的初衷是提供给那些爱折腾的朋友们参考,并非对任何一方有贬义,非得分出个雌雄的结论云云。

要说这两者,最核心的还是ApacheNginx的选择,先看看

Apache和Nginx各自的优点

NginxApache
轻量级、对内存资源消耗非常低非常稳定、Bug很少
高并发,异步非阻塞型处理请求php的支持非常友好
社区活跃、高度模块化设计、模块编写简单现有的模块非常非常多

社区观点

  • Nginx适合处理静态,简单、高效;Apache适合处理动态,稳定、功能强
  • Nginx是异步的,多个连接(万级别)可以对应一个进程;Apache是同步多进程模型,一个连接对应一个进程
  • Nginx配置简洁;Apache复杂
  • Nginx处理动态请求是鸡肋,一般动态请求要Apache去做,Nginx只适合静态和反向

性能对比

测试环境:Amazon EC2、Nginx + php-fpm、Apache Event MPM + mod_php、Wordpress

测试方法:使用压力测试工具Siege对Wordpress页面发起请求,30个并发请求持续一分钟

TitleSmall EC2 instance with MPM prefork and mod_phpSmall EC2 instance with event MPM and PHP-FPM
Used memory (Apache)525MB278MB (max)
Transactions1606 hits2480 hits
Availability89.92 %91.75 %
Elapsed time59.08 secs59.10 secs
Data transferred12.49 MB21.30 MB
Response time0.89 secs0.69 secs
Transaction rate27.18 trans/sec41.96 trans/sec
Throughput0.21 MB/sec0.36 MB/sec
Concurrency24.2829.11
Successful transactions14112480
Failed transactions180223
Longest transaction5.896.17
Shortest transaction0.110.11

相比之下,Nginx的优势还是很明显的:更少的内存开销;更高的数据处理能力;更可靠的事务处理效率

Bitnami总结:

总之,Apache event MPM模式提高了apache性能可以获得更高的并发,更少的内存。如果你要部署一个php应用你应该使用php-fpm来处理php请求。尤其是有限的512M和1G内存的服务器上,我们是强烈推荐的!

数据来源Bitnami

总结

至此,你可能对这LAMP和LEMP有了基础的认识了,大致应用方案有几下几种:

  1. 简单稳定(LAMP):最常见的Web Server套装,配置简单、稳定性高、对php支持好
  2. 性能压榨(LEMP):适用于服务器资源吃紧,内存少同时想支持超高并发
  3. 大型网站:使用Apache+Nginx搭配的方式,Nginx处理前端静态请求,配合Apache处理动态请求,还可以各自做集群

Read Comments

Post Comment