BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

和LNMP相比,LNMPA是否效率更高?

| 作者 郑柯 关注 2 他的粉丝 发布于 2012年7月18日. 估计阅读时间: 3 分钟 | QCon北京2018全面起航:开启与Netflix、微软、ThoughtWorks等公司的技术创新之路!

亲爱的读者:我们最近添加了一些个人消息定制功能,您只需选择感兴趣的技术主题,即可获取重要资讯的邮件和网页通知

与InfoQ之前访问过SegmentFault一样,徳问,是新涌现的一家编程领域的社交问答网站。通过社群智慧,让互联网成为一个能为专业难题提供高效解答的宝库,这就是德问的使命。

最近,尚兴跃在上面提出一个问题:LNMPA和LNMP相比,真的比LNMP更有效率吗?

LNMPA是在Nginx后面加入了Apache。由Apache来处理一些动态请求。

这种方式让架构变得有点复杂,但优点似乎也好理解:因为Apache比Nginx在动态处理和伪URL上更加成熟。

大家觉得,这样架构合适吗?还是多此一举呢?

在百度百科上,对LNMPA是这样说的:

LNMP或LAMP的劣势

Nginx是一个小巧而高效的Linux下的Web服务器软件,与Apache相比,消耗资源更少,支持的并发连接,更高的效率,反向代理功能效率高、静态文件处理快等,但动态页面处理能力不如Apache等老牌软件成熟。单独使用Nginx处理大量动态页面时容易产生频繁的502错误。

Apache是一款老牌的Web服务器软件,在高并发时对队列的处理比FastCGI更成熟,Apache的mod_php效率比php-cgi更高且更稳定、对伪静态支持好,不需要转换、多用户多站点权限等方面有着更好的效果,单独使用Apache处理静态页面时,对内存的占用远远超过Nginx。

LNMPA的优势

LNMPA使用Nginx作为前端服务器,能够更快、更及时地使用更少的系统资源处理静态页面、js、图片等文件,当客户端请求访问动态页面时,由Nginx反向代理给作为后端服务器的Apache处理,Apache处理完再交予Nginx返回给客户端。

采用LNMPA能够更好的解决LNMP架构中由于PHP-FPM方面产生的502错误,同时能够以很简单的方式提供更安全的多用户多站点环境。

对此问题,毛杭军的评论是:

Nginx + php-fpm 比 Apache + mod_php 更省内存。如果服务器内存不够大,用php-fpm是个不错的选择,虽然有出现502,不过可以通过负载均衡或动静态分离来解决。

LNMPA和LNMP,这二种方式用的人都还挺多的,不过我觉得第二种运维更加简单。我们目前采用LNMP(php-fpm)

原百度系统部技术总监邵辉这样看待这个问题: 

LNMPA还是LNMP真没这么重要,在某个共识的基础上,随大流就好。如果非要找个原则,那么就用满足需求的最简单的方案。

现在硬件的性能这么好,价格也便宜,就用LAMP又如何?性能的瓶颈大多数情况下都在业务逻辑和数据处理部分,静态页面没有必要过多考虑,除非你产品的核心内容就是图片、视频,如果是这样,把静态内容分离就好了。

InfoQ的读者们,你们对这个问题怎么看?欢迎在评论中留下你们的观点!

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

产品特性决定需要,而不是少量的内存性能 by 杨 浩

没啥好说的,非常赞同邵辉的观点:

LNMPA还是LNMP真没这么重要,在某个共识的基础上,随大流就好。如果非要找个原则,那么就用满足需求的最简单的方案。

现在硬件的性能这么好,价格也便宜,就用LAMP又如何?性能的瓶颈大多数情况下都在业务逻辑和数据处理部分,静态页面没有必要过多考虑,除非你产品的核心内容就是图片、视频,如果是这样,把静态内容分离就好了。

德问思问都是山寨的stackExchange阿 by Micro Kevin

无比佩服国内强大的山寨力量。。。


再说这篇文章,这样是不是违背了一些原则,把情况高的复杂了?

期待已久的问题终于来了 by liu Mengfei

对于这样的问题,根据自己网站系统架构决定用什么样的模式。
不论是选择什么。都是开源产品,只要能达到最好的目的就xing@
黑猫白猫,捉住老鼠才是好猫!

有点蛋疼的问题和有点蛋疼的答案 by shi andy

有点蛋疼的问题和有点蛋疼的答案

用多个web服务器的时候协议不兼容问题需要考虑 by Cheung Allen

nginx和apache在部分变量的处理上不一致,nginx里设置的头信息等在apache里不可识别,这些是使用多服务器时候需要注意的,如果前后端都使用一样的服务器就没这个问题,比如编译两个不同配置的apache,前端服务静态文件和反向代理,后端的apache负责处理php,这样也挺好

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

5 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT