如何识别 AWS RDS 扩展条件

How to identify AWS RDS Scaling conditions

我有一个应用程序托管在 AWS ECS 中,数据库位于 AWS RDS 中。我正在为我的应用程序使用基于微服务的容器架构。应用程序的前端位于 Angular 中,后端位于 Java 和 Python 中。现在,数据库大小约为 1GB。由于每天都会插入抓取的数据,因此数据库大小会一天天增加。

现在,一些查询需要 4-6 秒才能执行。我们需要将此应用程序托管到 public,并且有很多用户将使用该应用程序。所以当我们对 50 个用户的应用进行负载测试时,我发现 RDS 的 CPU 达到了 100%,并且一些查询执行了超过 60 秒然后超时。另外,其他微服务(前后端)的CPU和内存都正常。我已经尝试将应用程序垂直扩展到 64GB RAM 和 4 vCPUs,但这种情况仍然存在。

这是查询的问题还是我可以对数据库服务器配置做些什么?

我使用的 RDS 存储是 100GB 的通用 SSD。所以,我猜只有 300 IOPS,对吗?我打算使用 RDS 只读副本,但在此之前,我需要知道我需要做些什么来提高性能吗?任何数据库配置等?

我也不太清楚 MySQL 连接数。现在,它总共使用了 24 个连接。我还需要更改连接数吗?

查询优化

正如 Tim 指出的那样,尝试优化查询。由于要插入更多数据,请考虑为 table 建立索引,并尽可能使查询使用索引列。还可以考虑归档未使用的旧数据。

连接数

如果您可以控制代码,则可以使用数据库池来控制应用程序可以使用的连接数。

CPU 用法

CPU 使用率与查询性能高度相关,优化查询后,CPU 使用率应该会下降。

磁盘使用

使用 cloudwatch 指标监控磁盘使用情况,基于此,您可以决定配置的 IOPS 磁盘。

希望对您有所帮助。