我需要什么样的服务器来处理每天 1000 万个请求和 mySQL 查询?

我需要什么样的服务器来处理每天 1000 万个请求和 mySQL 查询?

我是服务器管理新手,正在寻找强大的托管服务来托管我的新网站。此网站基本上是移动在线游戏的后端,它将:

  • 每天处理多达 1000 万个 HTTPS 请求和 mySQL 查询
  • 在硬盘上存储最多 2000 GB 的文件
  • 每月传输大约 5000 GB 的数据
  • 它在 PHP 和 mySQL 上运行
  • mySQL 数据库中有 1000 万条记录,每条记录有 5-10 个字段,每个字段大约 100 个字节

我真的不知道我需要什么样的服务器来处理这些要求,我的问题是:

  1. 专用服务器或 VPS 需要什么样的 CPU/RAM?
  2. 哪些托管公司能够提供这种专用服务器或 VPS?
  3. 那云计算呢?我研究过 Amazon EC2,但我觉得它很复杂。我还联系过 Rackspace,但奇怪的是他们说 Cloudsites 不适合我的要求。我想知道是否还有其他云托管公司。
  4. 还有其他替代方法吗?

答案1

便宜的台式机?

让我们开始数学计算吧。

  • 1000 万个请求。
  • 这相当于每小时 416667 个请求。
  • 这相当于每分钟 6944 个请求。
  • 这相当于每秒 116 个请求。

将其加倍(峰值负载),我们谈论的是廉价四核台式机可以处理的负载,如果查询足够简单,并且您实际上并没有说它们有多复杂。

  • 每月 5000 GB 是微不足道的——说真的,同样的数学计算也适用。
  • 相当于每天 208GB
  • 相当于每小时 8GB
  • 相当于每分钟 148MB
  • 相当于每秒 2.5MB,25Mbit。峰值翻倍 - 50Mbit,对于任何托管中心来说都微不足道。不过会花费一些钱。

  • 在硬盘上存储 2000 GB。那 RAID 中就有 2x2000 GB 硬盘?除非:它是用于数据库,并且具有大量复杂的 IO,那么它是 RAID 10 中的几十张光盘和大量 73GB 15.000RPM SAS 光盘(大约 60 张光盘)之间的任何内容,以获得所需的 I/O - 如果没有大量有关数据访问模式的信息,这个问题是无法回答的。

  • 运行 PHP 和 MySQL - 我的手机可以做到这一点 ;) 问题是应用程序有多复杂。MySQL 可能或可能不是一个可接受的解决方案,顺便说一句 - 这需要更多的测试。有些人仍然使用其他较大的商业数据库是有原因的。

  • 专用服务器或 VPS 需要什么 CPU/Ram?

有人会说这取决于逻辑(PHP 部分的计算量、程序员的聪明程度或缺乏程度以及许多其他问题)。

说实话,这不是一个简单的设置。请一些专家来研究一下。

基本上你需要静下心来做作业。很多问题都无法用这种形式回答。尤其是因为你似乎并不关心你的数据……

  • 备份?
  • 没有应急计划?我的意思是,服务器死机了——那么在配置替换服务器期间,网站宕机几天你还能接受吗?

答案2

添加一些可能有帮助的经验:

  • 正如 TomTom 所说,很难/不可能给出确切的规格,因为很大程度上取决于应用程序的设计和实现。每秒为我或其他人提供 X 个请求的硬件可能不适合您。
  • 我有一台低端专用 MySQL 服务器(Intel Core2 Duo E4600 2.40 GHz,4 GB RAM),平均每秒处理 100 个请求(接近每天 1000 万个),CPU 空闲率为 90%。除了对配置进行一些基本调整外,由于读取量大(读取量超过 95%),因此运行良好,并且活动记录集很容易包含在内存中。选择服务器 RAM 数量时,请考虑活动集的大小,因为它可能会产生很大的影响。确保您了解数据库大小和活动记录集大小之间的差异。例如,我的数据库总计约 7GB,但活动集可能只有几百 MB。
  • 同样,我有一个类似规格的 Apache 服务器,每天处理约 100 万个请求,平均 CPU 空闲率约为 95%。请求包括非常简单的地图数据 AJAX 查询和更复杂的 MediaWiki 页面。
  • 对您的特定应用进行基准测试是确定您确切需要什么的良好开端。您不想低估,但高估同样糟糕,因为可能会浪费金钱和精力。
  • 不仅要考虑平均请求率,还要考虑峰值请求率。您不希望服务器只能勉强处理平均请求率,因为请求率在一天、一周和一个月内可能会有很大差异。例如,我在周末高峰时段获得的流量是一周中最低时段的 3-4 倍。差异程度取决于您的应用程序和用户群。
  • 你能缓存任何数据库/HTTP 请求吗?这可以大幅提高你的请求率,而且硬件更便宜/更少,具体取决于你能缓存多少。
  • 现在就考虑未来增长的扩展选项,而不是以后再考虑。一个不错的选择可能是使用水平扩展,这样您就可以从最少的硬件开始,并根据需要轻松扩展。
  • 正确设计应用程序层可以对其最终性能产生巨大影响。对没有索引的表执行错误的 SQL 查询可能比正确设计的查询慢几个数量级。同样,配置不当的 Apache/MySQL 服务器可能比正确设置时慢很多倍。

相关内容