VPS上的MySQL数据库服务器:它可以处理我期待的stream量高峰吗?

我有Hostican.com的VPS服务。 2.7GHz的CPU,2GB的内存(5级,如果你看看网站 )。 我有一个智能手机应用程序,向PHP表单发出请求,查询MySQL数据库。 由于即将到来的广告活动,我预计在一天内会有大量的活动。 运动的成功非常关键。 当活动激增时,我无法承受服务器的损失。

信息:

  • 我预计在一天内会有大约2万个新帐户。 要创build一个帐户,需要在START / COMMIT块中执行2次SELECT,2次INSERT和11次GRANT语句。 SELECT和INSERT很简单,没有连接。
  • 一旦用户创build了新帐户,他们可以执行各种function,所有这些function都可以访问PHP表单并查询数据库。 大多数这些forms做1或2个简单的查询(即一个SELECT和一个INSERT)并返回一个结果。 有些可能做多达4个,但没有一个是复杂的。 大多数是单表,有一些双表JOIN。
  • 数据字段都比较小, 没有查询返回超过几行文本。
  • 所有的表都是InnoDB。 我已经索引字段,只要我认为它会有所帮助。
  • 所有对服务器的请求都是HTTPS。

大部分stream量可能来自帐户创build。

我可以依靠这个VPS设置来处理这种stream量吗?

另外,假设这一天是成功的,那么我可能每天都会把这么多账户请求(以及对其他PHP表单的请求的数量增加)放在一起。 每天可能有20K新帐户。 我不能想象我所拥有的VPS能够处理这个问题很长时间,但是我不能确定它在什么时候不能处理它,以及我应该为升级而拍摄些什么。

更新

我正在研究MySQL和PHP优化,以及升级到专用服务器的选项。 我肯定会愿意把钱花在专用的服务器上,如果这是需要的(而且这听起来像是迟早会如此)。

我忘了两点,想补充一点:

  • 服务器的所有HTTP请求是否都使用SSL会增加很多处理开销? 从我读过的内容来看,听起来我不应该太担心
  • 重要的一点,我忘了提及:服务器正在谈论的应用程序是一个消息传递应用程序,传入的消息存储在数据库中,直到用户检索它们(因此写入沉重的SQL语句)。 传出消息是通过电子邮件; 所以,我也有一个电子邮件服务器运行(我相信,虽然我可以改变它),并且经常发送电子邮件。 一旦竞选活动如火如荼,电子邮件可能会以每秒1或更多的速度出局。 一般来说,这是否会增加大量的处理/内存开销?

因此,服务器使用Apache,MySQL,PHP,SSL和exim(或其他电子邮件服务器)来为这个智能手机应用程序提供服务。 与PHP和MySQL相比,SSL和电子邮件将成为多大关注点?

我首先要说的是,你最好的select是对整个应用程序进行基准testing(MySQL / PHP,而不仅仅是一个或另一个),看看你的服务器的function是什么。 这可能会涉及一些模拟用户操作的自定义脚本。 这将给你一个很好的答案,你可以服务的stream量和是否需要更强大的服务器。

你的查询平均约为4查询/秒,这是相当低的,所以我猜测即使是最小的MySQL设置应该能够处理它。 作为一个例子,我有一个低端的专用MySQL服务器平均100查询/秒(MediaWiki)与CPU 95%闲置。 然而,我的应用程序阅读起来很重,而你的写作却很重,这使得事情发生了很大的变化。

假设20k账户将在24小时内分摊,也可能是危险的。 您可能会在一到两个小时内获得大部分stream量,在这种情况下,您可能需要每秒处理100次查询。 除非您现有的服务器过载之后,您已经安装了一个备份数据库,否则任何操作都已经太晚了。

另一个要考虑的不是MySQL的性能,而是PHP脚本的性能。 从使用PHP的网站的经验,我会担心这比每秒4查询/秒。 即使是小型的PHP脚本,也可能匆忙地吃掉CPU。

问问自己这个活动有多less价值,如果你的数据库在开始后一小时内掉下来,你能承受多less损失? 你可以得到一个体面的专用服务器一个月100美元。 获得两台(或更多台)服务器甚至可能是值得的,一台作为备份,以防第一台服务器过载或意外停机。

有些问题可以问自己:

  • 失败的代价是多less?
  • 我愿意/能花多less钱来防止失败?
  • 如果我们得到更多,或者更多,比预期的命中更多,会发生什么?
  • 什么是我的服务器的测量能力以点击/秒,客户端/秒?
  • 我的服务器/应用程序体系结构目前的瓶颈是什么?

编辑 :回答更新的问题

我没有任何使用这种规模的SSL /电子邮件的经验。 额外的进程肯定会消耗CPU,更重要的是RAM。 由于这个应用程序相对复杂,因此强调需要做某种forms的基准testing。 当您在单个服务器上运行多个服务器进程时,性能难以估计,因为进程间交互变得非常复杂,性能问题更加微妙。 如果不进行某种testing,您真的不知道您的服务器是否可以处理10个用户或10,000个用户。

事实上,你有一个非常短的交通将迅速增加的窗口使基准更加重要。 在这种情况下,您的stream量会稳定增长几个星期/月,您可以使用低端服务器启动并根据需要慢慢升级/扩展。