我们是在Heroku上运行的Ruby on rails应用程序,我们正在为我们的数据库使用Heroku的Postgres解决方案。
我们有一个非常昂贵的数据库查询。大约需要45秒。我们使用memcache来缓存此查询...但是第一次有人在缓存中24小时后进入运行此查询的页面时,该站点在运行此查询时基本上会停止运行。
我们正在考虑将查询放在后台线程上。这会与memcache很好地工作,这会有助于网站性能吗? DB仍在处理大型查询的事实会影响其他页面的加载吗?
答案 0 :(得分:1)
如果问题在dyno上没有资源密集或锁定数据库,这可能会有所帮助。
如果两种情况都不成立,您只需向启动客户端返回一些内容(先前版本,可能在缓存过期之前启动该过程)并旋转新线程。
如果强度是在dyno而不是数据库上,您可以尝试旋转工作人员dyno或scheduled job。
如果您的数据库已被锁定,那么您将返回绘图板。
哦,如果您的应用程序只使用一个数据库连接,请确保为该线程打开另一个(dyno将自行处理)。