如何优化 mysql 数据库以同时处理数千个请求?

如何优化 mysql 数据库以同时处理数千个请求?

如何优化 MySQL 数据库以同时处理数千个请求?

对于类似这样的网站:linksnappy.com

是否可以将多个 MySQL 服务器配置为一个负载平衡服务器?这样,如果其中一个服务器超载,就可以切换到下一个服务器。

对于 http 请求处理服务器也有同样的问题。

另一个问题:我需要什么样的服务器来同时处理 1000 个请求?(http 服务器)您可以看到我所说的网站类型是下载网站。当我们有太多下载请求时,服务器就会死机。我们目前有英特尔 XEON 四核 2.4ghz 和 4GB 内存。

答案1

让我们从结尾开始:

我们目前拥有配备 4GB RAM 的英特尔至强四核 2.4ghz。

这可能是罪魁祸首。对于四核处理器来说,4GB 的 RAM 简直就是个笑话,特别是在处理数千个并行请求时。4096MB RAM 乘以 2000 个请求(数千的较低定义),每个请求只剩下 2MB RAM(忽略其他所有因素)。

您肯定不只是遇到了 MySQL 问题。主要问题是您需要一个完整的基础设施,能够每秒处理数千个下载请求(或者需要有人澄清您的帖子),这意味着大量的网络带宽、大量的 IO 带宽,以及一个内存比便宜的过时低端工作站(很像 - 我的开发人员工作站大约 3 年前有 4gb,最近换成了 8gb)多得多的服务器。您还需要一个 IO 子系统来处理负载,这可能意味着在一个好的硬件 RAID 控制器中有许多许多磁盘(忘记这里的软件 - 您想要比软件 RAID 功能更多的东西)。

  • HTTP 负载平衡:无论是软件还是硬件(F5 有一些硬件可以实现),都很容易实现。根据您的编程(会话),您可能需要粘性会话,以便同一个客户端再次出现在同一个盒子上。

  • 第一步是从实际网站(单独的域/子域)中分离出下载文件,然后在下一步中将它们移动到单独的服务器。MySQL 数据库(好吧,数据库 - 这绝不是 MySQL 特有的)也可以转到单独的服务器。

  • 每秒 2000 个请求不需要多台服务器,除非请求很复杂,而很可能并不复杂。该性能的主要限制很可能是 IO 方面。对于您,我敢打赌您将 4gb RAM 与低端磁盘子系统结合在一起。为了让您了解数据库服务器可能是什么样子 - 我自己的主数据库(存储财务数据)有大约 10 个高速磁盘(Velociraptors,10k RPM)以确保数据库(在我的情况下是 SQL Server)不会成为瓶颈。我在 IO 方面仍然存在性能问题......所以我现在可能会将一些东西移到 SSD。从技术上讲,除非只从内存中进行报告(这在您的 4gb ram 共享用于所有设置的情况下不太可能发生),否则 IO 子系统是数据库的主要限制。

最后,很多事情都取决于你的编程。你不会找到一个合适的答案——这需要大量的规划,查看你的代码。

答案2

每秒请求数是一个神奇的数字,毫无意义。我可以使用运行 hello world 的 Web 服务器每秒处理 10,000 个请求,也可以使用同一 Web 服务器后面的一些臃肿软件每秒处理 0.0001 个请求。

您需要哪种服务器?您需要一个知道自己在做什么的人,而不是一台新服务器。但要回答您的问题,那就是“大型服务器”。

相关内容