我有一个应用程序托管在AWS ECS中,数据库在AWS RDS中。我的应用程序使用了一个基于微服务的容器架构。应用程序的前端是Angular,后端是Java和Python。目前,数据库大小约为1 1GB。随着每天插入抓取的数据,数据库的大小将逐日增加。
现在,一些查询需要4-6秒才能执行。我们需要将此应用程序托管给公众,并且将有大量用户使用该应用程序。因此,当我们使用50个用户对应用程序进行负载测试时,我发现RDS的CPU达到了100%,有些查询的执行时间超过60秒,然后超时。其他微服务(前端和后端)的CPU和内存正常。我尝试将应用程序纵向扩展到64 up和4个vCPU,但这种情况仍然存在。
这是查询的问题吗?或者我可以对数据库服务器配置做些什么吗?
我使用的RDS存储是100‘m,带有一个通用的SSD。所以,我猜只会有300 IOPS,对吧?我计划使用RDS read副本,但在此之前,我需要知道我需要做些什么来提高性能?是否有任何数据库配置等?
我也不太了解MySQL连接的数量。现在,它总共使用了24个连接。我还需要更改连接计数吗?
发布于 2019-12-09 14:16:04
查询优化
正如Tim指出的,尝试并优化查询。由于要插入更多数据,因此请考虑对表进行索引,并使查询尽可能使用索引列。还要考虑对未使用的旧数据进行归档。
连接数
如果您可以控制代码,则可以利用数据库池来控制应用程序可以使用的连接数量。
CPU使用率
CPU使用率与查询的性能高度相关,一旦优化了查询,CPU使用率应该会下降。
磁盘使用率
使用cloudwatch指标来监控磁盘使用情况,在此基础上,您可以决定预配置IOPS磁盘。
希望这能有所帮助。
https://stackoverflow.com/questions/59243281
复制相似问题