我需要什么样的服务器来处理一天的一千万个请求和MySQL查询?

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

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

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

  1. 我需要专用服务器或VPS的CPU / RAM?
  2. 哪些托pipe公司能够提供这种专用服务器或VPS?
  3. 云计算呢? 我研究过亚马逊EC2,但对我来说似乎很复杂。 我已经联系了Rackspace,但奇怪的是他们说Cloudsites不适合我的要求。 我不知道是否有其他云托pipe公司。
  4. 任何其他的替代方法?

一个便宜的桌面?

让我们进入math。

  • 一千万个请求。
  • 这个分解为每小时416667个请求。
  • 这可以分解成每分钟6944个请求。
  • 这个分解为每秒116个请求。

双(峰值负载),我们谈论一个便宜的四核心桌面的负载可以处理如果查询很简单,你真的不知道它们是多么复杂。

  • 每月5000 GB是微不足道的 – 严重的是,同样的math适用。
  • 这可以分解为208gb /天
  • 分解为8GB /小时
  • 分解为148mb /分钟
  • 分解为25mb /秒,25mbit。 双高峰 – 50mbit,任何托pipe中心微不足道。 虽然会花费你。

  • 在hrad光盘上存储2000 GB。 这是在突袭2x2000GB硬盘? 除非:对于数据库来说,一个有很多复杂的IO,那么十几张光盘和一个RAID10(大约60张光盘)中的很多73gb 15.000RPM SAS光盘之间的东西就是任何东西来获得所需的IO – 这个问题是如果没有更多关于数据访问模式的信息,不需要负责。

  • 运行PHP和MySQL – 我的手机可以做到这一点;)问题是多么复杂的应用程序。 MySQL可能或可能不是一个可以接受的解决scheme在这里,BTW。 – 这将需要更多的testing。 有一些人仍然使用其他更大的商业数据库是有原因的。

  • 我需要专用服务器或VPS的CPU / RAM?

有人会说,这取决于逻辑(在PHP部分计算多less,聪明或缺乏程序员和其他许多问题。

严重的是,这是一个不平凡的设置。 让一些专家看看它。

基本上你需要放下心来完成作业。 很多问题都不能用这种forms来回答。 特别是因为你似乎不关心你的数据…

  • 备份?
  • 没有应急计划? 我的意思是,服务器死亡 – 所以你可以在网站停机好几天而更换configuration?

添加一些我可能有用的经验:

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