gpt4 book ai didi

ruby-on-rails - ActiveRecord::QueryCache#call 占用了超过 70% 的执行时间

转载 作者:数据小太阳 更新时间:2023-10-29 07:07:03 26 4
gpt4 key购买 nike

NewRelic 向我展示了应用服务器中超过 80% 的执行时间发生在“Middleware ActiveRecord::QueryCache#call”中

enter image description here

这里是相关测试代码的要点(尽管我在其他 API 端点上看到了类似的结果)。

Gist

我正在 AWS Elastic Beanstalk 上的 t2.medium 实例和 t2.small Postgres RDS DB 上运行应用程序服务器,max_connections 设置为 100。我正在通过 loader.io 对此进行测试,对 100 个用户进行测试使用维护客户端负载设置(这意味着每分钟大约 6000 个请求)。

有谁知道为什么 QueryCache 花费这么多时间?

最佳答案

不幸的是,QueryCache 的这个问题很常见,似乎有多种原因,但最常见的是您的 EC2 应用程序服务器和数据库之间的连接被暂时切断,而 QueryCache 不能很好地处理这个问题。

补救措施包括大幅增加默认连接池大小(例如增加一个数量级)、完全禁用 QueryCache 或将 database.yml 中的 read_timeout 增加到 15 秒或更长时间,具体取决于您的环境。

如果 read_timeout 设置解决了问题,您可能需要调查为什么您的应用程序服务器和数据库之间有如此多的断开连接。

另一种可能不适合您的方法是在与数据库相同的机器上运行应用程序服务器,但由于其架构,这并不适用于所有人。它当然可以是一个有效的测试,看看消除网络变量是否有帮助。祝你好运。

关于ruby-on-rails - ActiveRecord::QueryCache#call 占用了超过 70% 的执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31257830/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com