我有一个托管在 AWS ECS 中的应用程序,并将数据库托管在 AWS RDS 中。我正在为我的应用程序使用基于微服务的容器架构。应用程序的前端是Angular的,后端是Java和Python的。目前,数据库大小为 ~1GB。随着每天插入抓取的数据,数据库大小将逐日增加。
目前,某些查询需要 4-6 秒才能执行。我们需要向公众托管此应用程序,并且有很多用户将使用该应用程序。因此,当我们对 50 个用户的应用程序进行负载测试时,我发现 RDS 的 CPU 达到了 100%,有些查询执行了 60 多秒,然后超时。此外,其他微服务(前端和后端(的 CPU 和内存正常。我已经尝试将应用程序垂直扩展到 64GB RAM 和 4 个 vCPU,但这种情况仍然存在。
这是查询的问题,还是我可以对数据库服务器配置执行任何操作?
我使用的 RDS 存储是 100GB,带有通用 SSD。所以,我想只会有 300 IOPS,对吧? 我计划使用 RDS 只读副本,但在此之前,我需要知道我需要做些什么来提高性能?任何数据库配置等?
我对MySQL连接计数也不是很好的想法。目前,它总共使用了24个连接。我还需要更改连接计数吗?
查询优化
正如 Tim 指出的那样,尝试优化查询。由于要插入的数据更多,请考虑为表编制索引,并使查询尽可能使用索引列。还要考虑存档未使用的旧数据。
连接数
如果可以控制代码,则可以使用数据库池来控制应用程序可以使用的连接数。
中央处理器使用率
CPU 使用率与查询的性能高度相关,一旦优化查询,CPU 使用率就会下降。
磁盘使用情况
使用 cloudwatch 指标监控磁盘使用情况,在此基础上,您可以决定预配置 IOPS 磁盘。
希望这有帮助。