我应该把哪个放在我的大型机器上?Magento Web 服务器还是 Magento 数据库?

我应该把哪个放在我的大型机器上?Magento Web 服务器还是 Magento 数据库?

我即将推出一个新的 Magento 网站,我很想听听您对这个问题的反馈?您认为 Magento PHP 代码更慢还是 Magento MySQL 操作更慢?我应该将哪个拆分到两台服务器的较大机箱中?

答案1

我们的经验:我们只托管 Magento 商店。

遗憾的是,对于 Magento 来说,有一个非常非常普遍的误解,即您甚至应该使用单独的 DB 服务器,更糟糕的是,您应该使用最强大的服务器作为 DB 服务器。

除非你处于具有多个 Web 服务器的集群配置中,我们从不提倡为 Magento 使用单独的数据库服务器。

我将使用一些服务器的最新统计数据来支持这一点。

我从一个小型 Magento 网站(每天 4,000 个独立访客)获取了平均负载。您可以亲眼看到,单独的数据库服务器通常占用很少的 CPU 和资源。事实上,它唯一需要的就是大量的 RAM。

MySQL 绝对不是任何 Magento 安装的瓶颈。但如果您必须使用两台服务器……

... 我将根据您的网站每天大约有 10,000 名独立访客提供此建议。但为了得到准确的答复,您确实应该发布:

  1. 您的目标流量、访问量、点击量
  2. 您的完整服务器规格

对于您的网络服务器

  1. 您需要尽可能多的、尽可能快的 CPU(核心越多,并发支持越大 - 时钟速度越快,单个页面的加载时间越快)
  2. 您需要与 CPU 成比例的 RAM,通常每核 1GB 是一个不错的选择
  3. I/O 不是问题,因此 RAID1 7200RPM+ 磁盘就足够了(WD RE4 或 WD 3000 HLFS)

对于您的数据库服务器

  1. 您不需要很多核心,双核就足够了。但同样,时钟速度越高,单个查询的速度就越快。
  2. 您需要尽可能多的 RAM。Magento 使用 InnoDB,而 InnoDB 需要 RAM 才能正常运行。
  3. I/O 和常规 IOPS 决定了 DB 服务器的成败 - 因此您需要快速的磁盘设置,但对于 10k 访客存储,RAID1 7200RPM+ 磁盘就足够了(WD RE4 或 WD 3000 HLFS)。

您还可以在两个服务器之间的网络流量之间进行负载平衡,但这种配置远远超出了此回复的范围。

MySQL 查询

数据库服务器负载

数据库服务器负载

Web 服务器负载

Web 服务器负载

答案2

我必须将 php memory_limit 调高至 512MB 才能运行某些进程,我看到每个加载的 Apache 进程基本上都存在内存问题。您将学会快速放弃 mod_php5,因为将您的 Apache Web 服务转变为 php 解释器并不是资源的最佳利用方式。在 FastCGI 下,您可以运行 Apache WorkerMPM 并将其返回到提供 html,这是它最擅长的,而 FastCGI 将 PHP 解释器作为单独的进程运行。除此之外,您还需要某种操作码缓存。针对内存和 CPU 使用进行优化的最快主服务器需要是您的 Web/PHP 服务器。针对快速磁盘 I/O 进行优化的辅助服务器是您运行 MySQL 服务的地方。

在两个服务器系统中,通常运行一个具有 12GB+ 内存的四核系统用于 Web 服务器,以及一个具有 8GB+ 内存及快速磁盘子系统的双核系统用于数据库服务器。

答案3

我认为将数据库放在更大的服务器上是一个更好的主意,因为如果你有一个不平凡的网站(需要多台服务器),那么你将在数据库上施加大量负载,查询内容。当然,这种负载将比解析 php 文件成为更大的瓶颈。

答案4

我相信将数据库放到更大、更强大的服务器上通常更好。

原因是将应用程序移动到另一台服务器更容易,而且不会停机。扩展应用程序本身更容易、更有效。两台正确负载平衡的应用程序服务器可为您带来近 2 倍的增长,而使用数据库时,您永远不会获得这样的值,并且会被迫使用复制和/或分片,这比配置 http 负载平衡器要困难得多。

因此,如果您的应用程序会增长,请使用您现在可以负担得起的最佳数据库服务器 - 这将为您提供更多时间,然后才需要移动/扩展数据库,这比移动/扩展应用程序/ http 服务器更困难。

相关内容