Ruby on Rails每秒执行大量请求和数据库更新

时间:2014-10-08 12:29:13

标签: ruby-on-rails performance heroku amazon-web-services

我正在开发一个投票应用程序,它将处理来自不同用户的平均每秒1000-2000票。换句话说,它每秒会收到1k到2k个请求,每个请求都会将DB插入到存储投票数据的表中。

我正在使用RoR 4与MySQL并计划将其推送到Heroku或AWS。

我应该注意哪些与数据库和应用程序本身相关的性能问题?

如何将每秒插入的数据量计入数据库?

修改

我在考虑不为每个请求插入数据库,而是将插入数据写入内存流。所以我会有一个预定的作业每秒运行一次,从这个内存流中读取并生成一个批量插入,避免每个插入都是原子地进行的。但我无法以一种很好的方式来实现这一点。

1 个答案:

答案 0 :(得分:0)

虽然您当然可以在AWS中执行您需要做的事情,但是高水平的I / O可能会花费您的成本。 RDS最多可支持30,000 IOPS;如果您想自己运行数据库,也可以使用不同配置的多个EBS卷来支持高IO。

根据您计划的使用模式,我可能会考虑推入内存数据存储,例如memcached或redis,然后从那里处理请求。您还可以查看DynamoDB,它可能会起作用,具体取决于数据的结构。

您是否会持续保持这种持续吞吐量水平,还是会突然爆发?您是否必须保留每一个投票,或者您只需要汇总数据?你需要多少规模 - 即你每秒能获得20,000票? 200000?

这些类型的问题将有助于确定正确的架构。