我在 AWS RDS 中有一个 MySQL 数据库。这是一台 r4.large 机器,有 16GB 内存。我一直在测试它的负载能力,发现最多 18 个并发用户,该应用程序运行良好。然后我们决定对该应用程序进行浸泡测试。当时我们看到结果或响应时间越来越高。
例如:在第一次循环中,3 个 API 的测试在 1 分钟内完成。在第 12 次循环中,我收到了 Bad Gateway 错误。在第 20 次循环中,一个小 API 的响应时间增加到将近 1 分钟(第一次循环时为 4 秒)。
我不确定是什么导致了这个性能问题。我不是 RDS 专家。我该怎么做才能提高性能或避免这个问题?
答案1
是的。你有没有去过人太多的杂货店?你无法将购物车推到过道上,因为有太多人想做同样的事情,或者停下来挑选物品。
如果 18 工作正常,但 20 的响应时间很差,那么请尝试将新顾客挡在门口;不要让他们挤满过道。
或者...
另一个常见原因(和解决方案)是查询速度慢。找到并修复它们。使用 slowlog 帮助找到它们;然后向我们展示查询和SHOW CREATE TABLE
。有时您可以通过添加复合索引来加快查询速度。这些顾客越早离开商店,其他人就能越早进来。可能仍然有 18 个的限制,但如果每个人的完成速度都是原来的两倍,那么您就有两倍的“吞吐量”,而不会降低“延迟”。
(我不喜欢基准测试;它们常常指向错误的方向。)