我每天需要哪种服务器来处理1000万个请求和mySQL查询?[关闭]


23

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

  • 每天处理多达一千万个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. 还有其他替代方法吗?

我们通过2个Linux服务器和8个ram内存解决了这个问题,mysql是一个mysql集群,并且DB快速地存储在内存中,如果您使用良好的发行版,cpu绝对不是很多,并且只需要使用磁盘每小时进行一次快照可在发生故障时为您提供冗余。您也可能希望安装mysqltuner,以便可以关注索引等并充分利用所有内容,还可以添加大量索引并记录慢速查询,因为对于Web而言,这很便宜,只需增加负载即可前端的平衡器以分配流量
零下

为什么不使用云服务?Azure,Amazon,RackSpace,GoGrid,Heroku?
bbqchickenrobot

Answers:


33

便宜的台式机?

让我们开始数学。

  • 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部分中有多少计算,聪明或缺少程序员以及很多其他问题。

认真地说,这是一个不平凡的设置。让一些专家研究它。

基本上,您需要下车并完成作业。许多问题无法以这种形式回答。特别是因为您似乎并不关心数据...

  • 备份?
  • 没有应变计划?我的意思是,服务器死掉了-因此您可以在配置替换服务器后几天关闭网站吗?

感谢您的回复。php很简单,我想主要的负担是在mySQL上,我在Windows上的WAMP笔记本电脑(Core2 Duo)上测试了一些mySQL查询。在MySQL中有10条记录,平均每个查询花费0.1秒。Quad Core在处理MySQL查询方面有多强?
加尔文(2010年

2
忘了四核。您的笔记本电脑在IO中无法正常工作-而IO是不会被限制的数据库。您有一个硬盘,即SLOW和ROBUST(latop)。服务器使用多张快速(但不坚固)的硬盘。我使用四核SQL Server fron MS,并且在不占用CPU的情况下,每秒可以进行500次以上的简单选择(一个批次是一个选择),但是我确实在很多光盘子系统上获得了很多光盘活动速度是您的30倍以上(这还不算令人印象深刻)。光盘是极限。加上适当的编程。
TomTom 2010年

1
您的ssl流量将需要加密/解密,您可能需要在平衡器上卸载它,并对正常的http服务器进行反向代理。这样可以降低延迟。你也可以做你的加密硬件太....... en.wikipedia.org/wiki/SSL_acceleration 如果预算是用于数据库的使用没有关心ramsan.com/success/ccpgames.htm
Unix的看门人

7

补充一下我的经验可能会有所帮助:

  • 正如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服务器可能比正确设置时慢许多倍。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.