在这种情况下,我应该在Heroku上使用worker或web dyno吗?

时间:2013-02-11 13:37:44

标签: ruby performance heroku

我不确定我的应用程序是否适合工作人员或网络动态。假设我有一个Web应用程序可以分析来自用户的纯文本,并使用分析的关键字来查找我的数据库中全文索引的所有文档。现在这个过程可能需要一段时间,因为在我获得所有文档后,我必须过滤掉一些用户不想看到的文档。我还使用Levenshtein距离算法来计算关键字中返回文档的相关性。所以,我无法提前计算并缓存结果。

这个过程对我来说就像一个同步程序。所以,我不确定如何通过在工作器dyno中排队进程来加快速度?因为用户必须等待网页才能看到结果。有时我得到H12请求超时。

我认为增加网络dyno在这种情况下不会有所帮助,因为即使它只是一个用户,它将成为一个过程,有时它超过30秒。但我也不知道如何使用worker dyno来提高应用程序的速度。任何建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

增加dynos对此没有帮助。如果这是用户需要等待的东西,那么最好让工作人员完成工作,并在用户完成时异步更新用户。你可能不会用这种方式加快速度(虽然也许你可以因为你的工作加载了更少的代码?),但你不会遇到H12的问题而且用户不会在页面上等待渲染,想知道它是否需要很长时间,或破碎。