dma*_*ylo 6 ruby postgresql activerecord ruby-on-rails amazon-web-services
NewRelic告诉我,应用服务器中超过80%的执行时间发生在"Middleware ActiveRecord :: QueryCache#call"中

以下是测试相关代码的要点(尽管我在其他API端点上看到了类似的结果).
我正在t2.medium实例上运行AWS Elastic Beanstalk上的应用服务器和max_connections设置为100的t2.small Postgres RDS数据库.我正在通过loader.io对此进行测试,使用维护对100个用户进行测试客户端负载设置(这意味着每分钟大约6000个请求).
有谁知道为什么QueryCache花了这么多时间?
不幸的是,QueryCache 的这个问题很常见,似乎有多种原因,但最常见的是您的 EC2 应用程序服务器和数据库之间的连接被暂时切断,而 QueryCache 不能很好地处理这个问题。
补救措施包括大幅增加您的默认连接池大小(例如,增加一个数量级)、完全禁用 QueryCacheread_timeout或根据您的环境将 database.yml 增加到 15 秒或更长时间。
如果 read_timeout 设置解决了问题,您可能需要调查为什么您的应用服务器和数据库之间有如此多的断开连接。
另一个可能不适合您的路径是在与数据库相同的机器上运行应用程序服务器,但由于其架构,这对每个人都不起作用。它当然可以是一个有效的测试,看看消除网络变量是否有帮助。祝你好运。
| 归档时间: |
|
| 查看次数: |
645 次 |
| 最近记录: |