使用NGINX的性能优势


16

考虑使用NGINX服务于magento,我不关心实现细节,但想知道是否有人对它有好(坏)的评价。还特别感兴趣的是使用NGINX来负载均衡magento。


我们有2家商店在使用NginX的专用服务器上运行。对于高流量商店来说,无疑是最大的好处,因为NginX可以更好地处理请求,并为Magento留下更多资源。对于交通不便的商店,我不确定是否有任何好处
Sander Mangel

Answers:


15

Nginx绝对是托管Magento的一个不错的选择,它具有许多不错的(但很小的)好处,可以帮助改善站点性能。

Nginx与Apache之间的主要区别在于Nginx使用非阻塞事件IO,而Apache仅使用多线程/处理。有什么区别,为什么重要?好了,以Apache为例,假设它有5个线程,它可以在任何给定时间处理5个请求。如果这些线程之一需要很长时间才能完成,则只剩下4个线程来处理任何进一步的传入请求。如果所有5个线程都被锁定,则只有一个线程完成后,才能处理传入的请求。

使用事件IO,当线程接收到对某事的请求时,它会触发一个事件并直接进入下一个请求。事件回叫时,它将响应传递给相关客户端。

这大致类似于异步javascript的工作方式。您触发AJAX请求,然后继续进行直到获得回调。

这种现代方法非常适合于服务许多小型静态文件,而不会产生大量线程或辅助系统进程的开销。

Nginx的另一个好处是其内存占用少。Apache支持很多东西,并且这样做具有很高的内存和计算资源。您可以将其削减,但是Nginx从头开始构建,以节省内存。

差异并不大,但是随着您扩展到成千上万的请求,这些细微的差异总会产生很大的差异。

现在重要的是要记住,Magento应用程序中最大的性能瓶颈是PHP代码的执行。在这里,Apache和Nginx之间的性能差异基本上可以忽略不计。重要的是要使用PHP-FPM,以及将工人MPM与Apache配合使用(并且绝对避免使用prefork / mod-php)。主要原因是,只有在需要执行PHP代码时才调用PHP解释器,并且可以有效地使用APC之类的操作码缓存软件(这是获得最大的性能提升)。

最后要说的是:某些模块/应用程序希望使用Apache,并且文档可能适合使用ModRewrite或.htaccess文件。Nginx中支持ModRewrite样式,但不支持按目录的.htaccess样式解决方案。

就个人而言,我喜欢Nginx,因为它可以高效地提供静态内容,设置PHP-FPM非常容易,而且我非常喜欢其配置语法。这不是解决性能问题的灵丹妙药,而是值得考虑的强大灵活选择。


1
这是由Magento的,公司的研究结果支持一个伟大的回答:magentocommerce.com/whitepaper
benmarks

Yup 100%同意Aaron的观点。我们也将Nginx用于大多数Magento部署,因为与Apache相比,它能够更快地处理静态内容并处理更多并发请求。Nginx遇到的唯一缺点是在我们的一个项目中,它随机抛出504网关超时错误(即使服务器负载非常低时)。我们还没有确定这一点。.在各种论坛中描述的大多数解决方案都没有太大帮助。
Vinci Rufus

1

我想说使用Magento时N​​ginx的性能优势是可以忽略的。Aaron提到的基于事件的IO优势也适用于Apache(使用事件MPM时)。

一般而言,谈到Magento,大多数处理(99%)是在PHP和数据库中进行的,因此优化前1%不会给您带来多少好处。

但是,出于其他原因,选择Nginx作为Magento也有其他原因,例如较小的内存占用,更好的速率限制和SPDY支持等。

转换在Apache上运行的现有Magento站点时,Nginx有一个很大的缺点,因为许多.htaccess语句不会直接映射到Nginx语句。例如,Nginx在ACL中不支持主机名。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.