【问题标题】:Concurrency in AWS RDS (from multiple Rails applications)AWS RDS 中的并发性(来自多个 Rails 应用程序)
【发布时间】:2015-11-22 04:56:32
【问题描述】:

目前我在不同的服务器上运行了两个 Rails 应用程序。一个应用程序是后端抓取工具,它正在获取数据并将其保存到共享数据库(AWS RDS)。第二个应用程序是前端,它从共享数据库中获取数据并向用户显示结果。

我的问题是:

我想通过在多个 EC2 实例上运行我的后端应用程序来扩展我的后端应用程序,以加快抓取速度。

  • 我可以从多个 Rails 应用程序写入我的数据库吗 同时没有任何并发​​问题?
  • 会影响数据库写入速度吗?
  • 是否有更好的解决方案,例如扩展我的单个服务器(我个人认为这不会提高抓取性能)

【问题讨论】:

  • 我认为可以为您提供答案的信息很少。根据我的经验,获取数据的应用程序通常是 IO 绑定到数据源的,所以它不会以任何方式最大化 RDS(除非数据库上发生了真正疯狂的事情,比如非常复杂的函数/存储过程)。我的建议是:试一试……
  • 是的,我要试一试。

标签: ruby-on-rails-4 amazon-web-services amazon-ec2 aws-rds


【解决方案1】:

当然,您可以从多个服务器写入数据库。如果您从多个线程更新相同的记录,那么您可能必须使用数据库事务,但听起来您并没有这样做。

一般来说,数据库服务器上的 CPU 内核数和服务器的磁盘速度会影响您的数据库可以处理多少并发插入。首先,您肯定要使用 SSD 支持的数据库实例。接下来,您希望缓慢增加写入数据库的服务器数量,同时监控 RDS 服务器上的 CPU、内存和 IOPS。您可以直接从 RDS 控制台或 CloudWatch 控制台监控这些指标。

如果 CPU 或内存开始成为瓶颈,您将需要增加服务器的大小(或横向扩展到多个数据库服务器)。如果磁盘 IO 成为瓶颈,您可以增加预置 SSD 卷的大小以获得更高的基准 IOPS(获得更多可用空间的额外好处),或直接预置 IOPS(可能很昂贵)。

【讨论】:

  • 感谢@mbaird 提供这么好的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多