Magento 的良好单服务器解决方案?

Magento 的良好单服务器解决方案?

我正在设置一台使用 Mysql 为 Magento 提供服务的 Debian 服务器。预计负载会很高(每天有数百万次点击)。我读过很多人的评论,发现有很多不同的设置,但我不知道如果我想这样做的话该怎么做。当然,在多台服务器之间进行负载平衡会很好,但我只有一台服务器。那么这个怎么样?

Varnish 位于 nginx 和 apache 之前,其中 nginx 只处理静态数据,而 apache 处理动态数据。

或者将 varnish 仅放在 apache 前面会更好吗?那么 nginx 就在前面,静态数据直接由 nginx 提供,动态 apache 页面则通过 varnish 提供?

答案1

我想不出任何理由(除了故意配置不当)会让您提出的设置 A 比您提出的设置 B 更好或更差。

你有没有具体的您希望通过将 Varnish 放在 Apache 之前来解决什么问题?或者将 Varnish 放在 nginx 之前?

如果你不这样做,你就会成为货物崇拜系统管理:

“这个人很成功,他在 nginx 和 Apache 前面使用 Varnish,所以如果我在 nginx 和 Apache 前面使用 Varnish,我也会成功。”

流量很少会来得如此之快,以至于你没有时间计划如何处理它。你有一个计划来吸引这么多的流量吗(比如,斯蒂芬·弗莱承诺他会在你的网站上线后立即发推文)。或者你只是非常乐观吗?如果不乐观,那就把东西放到网上,让它运转起来。 过早的优化是一切罪恶的根源。 一旦您了解了您的流量状况和瓶颈所在,您将有足够的时间来优化网站。

越简单越好。如果您可以放弃您提到的三种不同的 Web 服务软件中的一种或两种,您可能会发现服务器上的 CPU 使用率和内存使用率会显著降低。也许 CPU 和内存使用率你的瓶颈。

随着业务的增长,有些因素可能会影响你能够处理的流量:

  1. 查看 MySQL 慢日志并调整查询和索引,直到慢查询消失。
  2. 确保您正确设置了缓存标头。

总结

在没有遇到交通问题之前,不要担心交通问题。

答案2

首先,我完全同意Ladadadada的回答,即......

  • 过早优化是万恶之源
  • 通常越简单越好,大多数情况下

您不应该因为可以获得更多流量而进行优化。当您需要优化时,即当您现在遇到流量高峰时,或者当您明确知道将出现巨大流量高峰时(例如出于营销活动),才进行优化。

最重要的是:分析你的系统!在优化之前(当然之后)进行基准测试。你必须知道你的瓶颈到底是什么,以及需要优化什么。

现在,Magento 的具体部分... :)

虽然如果我坚持 Ladadadada 的意见,你不应该只遵循另一个 Cargo Cult,但我建议安装 Varnish。

为什么?因为标准的 Magento 安装如果不进行优化的话速度不会很快。好吧,它往往非常慢。

如何加速 Magento:

  • 安装APC缓存
  • 使用 Memcached 作为快速 Magento 后端
  • 将 Magento 缓存文件放到 RAM 磁盘 (tmpfs) 上
  • 将 Varnish 放在你的网络服务器软件(Apache 或 nginx,只要你使用 Varnish,其实没关系)前面,以缓存静态内容和完整页面(如 Magento Enterprise 的全页缓存)

为了有效地使用 Varnish,您必须适应 Magento,以便可以缓存完整的页面并且客户端的浏览器将额外加载动态部分(例如购物车小部件)(使用 JavaScript)。

还有一个模块可用:http://www.magentocommerce.com/magento-connect/pagecache-powered-by-varnish.html

但是,如果您计划大幅增加流量,我还建议您至少在系统中添加 2 台服务器。

仅使用一台服务器,嗯 - 我能想到的完美的 SPOF(单点故障)。:) 使用多台服务器不仅仅是为了负载平衡和扩展。它是为了高可用性。如果您的单台服务器无法再处理流量/负载,会发生什么?是的,它会停机,您的商店处于离线状态,大量新客户将无法看到您的优质产品 - 事实上,他们会看到一些丑陋的错误消息。所以基本上,...您将会非常糟糕。

在优化单个服务器以获得最佳性能之前,您确实应该规划并设置故障转移策略。

也许只有两台服务器?每台服务器都有一个 webapp 堆栈和一个数据库?或者三台服务器,...两个 webapp 节点和一个专用数据库服务器?最好是 4 台,...两个 webapp 节点和 2 个数据库节点。

它究竟是什么样子并不重要,...但你必须消除单点故障。

祝你一切顺利,......(交通)成长的痛苦是最好的痛苦。;)

答案3

好吧,我不确定在不知情的情况下有人如何可靠地为您提供建议......

  1. 这是针对 1 家商店,还是针对多家商店(转售)?
  2. 完整且准确的服务器规格是什么?
  3. 您的流量目标是什么(点击量、页面浏览量、带宽承诺)?
  4. 客户主要搜索或浏览类别吗?

我们给客户的建议...

如果你需要转售托管

Nginx > Apache > PHP-FPM

这样可以为您的客户提供 .htaccess 支持、PHP-FPM 的安全性(chroot/多个 php.inis)以及 Nginx 的静态文件性能。

如果它只适合你

Pound > Varnish > Nginx > PHP-FPM

这为您提供了来自 Pound 的 SSL 解包、来自 Varnish 的静态和动态 (ESI) 缓存、来自 Nginx 的非缓存静态内容以及来自 PHP-FPM 的动态内容

如果你没有使用过 Varnish

Apache > PHP-FPM

事实是,如果你没有正确设置 Varnish(缓存的私有会话、不需要的 cookie 取消设置),那么你使用 Varnish 带来的危害会比好处多得多。Nginx 也是如此。

读一下这个http://www.sonassi.com/knowledge-base/magento-kb/mythbusting/why-shouldnt-i-use-nginx-for-magento/

哦,无论如何都要避免使用 tmpfs,它不会提高性能。

阅读这些内容可获得更多信息...

  1. http://magebase.com/magento-tutorials/magento-session-storage-which-to-choose-and-why/comment-page-1/#comment-1986

我的最后一条建议是,咨询专业人士——这笔钱花得值得。

相关内容