分离 mysql 服务器和 web 服务器以及后果

分离 mysql 服务器和 web 服务器以及后果

我有一个 Web 应用程序。为它购买了一台相当强大的服务器。服务器规格如下:CPU:DUAL E5-2620 RAM:32 GB DDR3 HDD:2 x 300GB SAS 10K 网络:100mbps/10TB 互联网。

Web服务器规格:Apache/nginx/PHP 数据库:MySQL

现在我的用户数量越来越高。我的服务器无法承受这样的压力。等待时间越来越长。所以我想到将 MySQL 和 Web 服务器分离在两个相同的服务器上以平衡 CPU 负载。现在我发现,如果将 mysql 和 php 分离,我将遇到以下另一个问题!

  • 等待网络传输:我有这样的 MySQL 查询:“SELECT * FROM table”如果表包含超过 500MB 的数据。以我的连接速度,需要几秒钟才能通过网络获取此类表。并且它仅适用于具有一个连接的一个用户,但它乘以来自一个用户的 10 个连接和超过 100 个在线用户。

以上示例仅为示例,实际数据显示,当有 100 位用户同时在线时,信息如下:

交通量 + ø + 每小时

已收到+ 14.7 GiB + 201.4 MiB

发送+429.4 GiB +5.7 GiB

全部的+444.2 GiB +5.9 GiB


因此,对于我的 Web 应用程序来说,分离似乎是不可能的。现在我不知道该怎么做才能在不出现这么大问题的情况下平衡这两个服务器上的负载。有没有其他方法可以平衡我的 CPU 负载而不会出现延迟问题(至少问题较少)?

*****注意:查询只是一个例子。我的查询已经足够优化,但我的应用程序非常复杂,因此与数据库的交互非常多。但 mysql 信息显示仍有 6GiB 数据被传输。

答案1

如果您优化了 Web 应用程序以不使用极其低效的 SQL 查询,那么您可能可以将它们放回到同一个框中,负载会低得多。没有理由每个用户每次都要读取整个表。适当的查询和索引可能会在这里提供巨大的提升 - 远远超过仅仅投入更多硬件。

除此之外,他们现在还生产速度至少为 10Gb/s 的以太网适配器。对于某些更奇特的类型,速度甚至更快。服务器之间的更快链接会有所帮助。但不如正确的 SQL 查询那么有用。

相关内容