Rails 5 Puma 服务器不断冻结和挂起,除非我将工人数量设置为 20

dcp*_*er7 5 concurrency ruby-on-rails puma

我对 Puma 有一个非常乏味的问题,其中 Rails 服务器在接收多个并发 HTTP 请求时挂起。当我使用 5 个线程(Rails 默认)和 2 个工作线程时,服务器有 90% 的时间会死机。如果我将工人数量设置为 20(这显然不理想),那么它只有大约 5% 的时间冻结。但它仍然冻结。我使用 Rails 作为单独的 Javascript 应用程序的 API。

我一直在调试和谷歌搜索这个无情的,并没有找到解决办法。我注意到它只发生在我在前端加载一个页面时,该页面向 6 个不同的 Rails 控制器发出 6 个并发 POST“搜索”请求。看起来是一个并发问题,但是,Rails 应该能够同时处理 6 个请求,对吧?

进一步解释我的 Rails 设置:

我的所有控制器都为它们的所有方法包含相同的模块。我很好奇 Puma 的并发性是否会同时为 6 个不同的控制器使用相同的模块,特别是因为它们使用相同的实例变量分配给每个搜索结果集合。这可能是问题吗?如果是这样,控制器模块似乎是个坏主意。所有控制器都可以使用的高阶控制器类/模块的替代方案是什么?