我和Puma有一个非常繁琐的问题,Rails服务器在接收多个并发HTTP请求时就会挂起。当我使用5个线程(Rails默认值)和2个worker时,服务器会冻结90%的时间。如果我将工人数设置为20(这显然不是理想的),那么它只会冻结大约5%的时间。但它冻结了。我使用Rails作为单独的Javascript应用程序的API。
我一直在调试和谷歌搜索,并没有找到解决方案。我注意到它只在我在前端加载页面时发生,该页面向6个不同的Rails控制器发出6个并发POST“搜索”请求。这似乎是一个并发问题,但是,Rails应该能够同时处理6个请求,对吗?
要进一步解释我的Rails设置:
我的所有控制器都包含所有方法的相同模块。我很好奇,如果Puma的并发性同时存在同时使用6个不同控制器的相同模块的问题,特别是因为它们使用相同的实例变量来分配给每个搜索结果集合。这可能是问题吗?如果是这样,控制器模块似乎是一个坏主意。对于所有控制器都可以使用的高阶控制器类/模块,还有什么选择?