AWS RDS 中的并发性(来自多个 Rails 应用程序)
Concurrency in AWS RDS (from multiple Rails applications)
目前我在不同的服务器上有 运行 两个 Rails 应用程序。一个应用程序是后端抓取器,它正在获取数据并将其保存到共享数据库 (AWS RDS)。第二个应用程序是前端,它从共享数据库中获取数据并将结果显示给用户。
我的问题是:
我想通过 运行 在多个 EC2 实例上扩展我的后端应用程序以加快抓取速度。
- 我可以从多个 rails 应用程序写入我的数据库吗
同时没有任何并发问题?
- 会不会影响数据库写入速度?
- 是否有更好的解决方案,例如扩展我的单台服务器(我个人认为这不会提高抓取性能)
当然你可以从多个服务器写入你的数据库。如果您从多个线程更新相同的记录,那么您可能必须使用数据库事务,但听起来您并没有这样做。
一般来说,数据库服务器上的 CPU 个核心数和服务器的磁盘速度会影响数据库可以处理的并发插入数。首先,您肯定希望使用 SSD 支持的数据库实例。接下来,您要慢慢增加写入数据库的服务器数量,同时监控 RDS 服务器上的 CPU、内存和 IOPS。您可以直接从 RDS 控制台或 CloudWatch 控制台监控这些指标。
如果 CPU 或内存开始成为瓶颈,您将需要增加服务器的大小(或扩展到多个数据库服务器)。如果磁盘 IO 成为瓶颈,您可以增加配置的 SSD 卷的大小以获得更高的基线 IOPS(获得更多可用的额外好处 space),或者直接配置 IOPS(可能很昂贵)。
目前我在不同的服务器上有 运行 两个 Rails 应用程序。一个应用程序是后端抓取器,它正在获取数据并将其保存到共享数据库 (AWS RDS)。第二个应用程序是前端,它从共享数据库中获取数据并将结果显示给用户。
我的问题是:
我想通过 运行 在多个 EC2 实例上扩展我的后端应用程序以加快抓取速度。
- 我可以从多个 rails 应用程序写入我的数据库吗 同时没有任何并发问题?
- 会不会影响数据库写入速度?
- 是否有更好的解决方案,例如扩展我的单台服务器(我个人认为这不会提高抓取性能)
当然你可以从多个服务器写入你的数据库。如果您从多个线程更新相同的记录,那么您可能必须使用数据库事务,但听起来您并没有这样做。
一般来说,数据库服务器上的 CPU 个核心数和服务器的磁盘速度会影响数据库可以处理的并发插入数。首先,您肯定希望使用 SSD 支持的数据库实例。接下来,您要慢慢增加写入数据库的服务器数量,同时监控 RDS 服务器上的 CPU、内存和 IOPS。您可以直接从 RDS 控制台或 CloudWatch 控制台监控这些指标。
如果 CPU 或内存开始成为瓶颈,您将需要增加服务器的大小(或扩展到多个数据库服务器)。如果磁盘 IO 成为瓶颈,您可以增加配置的 SSD 卷的大小以获得更高的基线 IOPS(获得更多可用的额外好处 space),或者直接配置 IOPS(可能很昂贵)。