我使用Puma开发的Rails 5服务器在一次从单独的前端应用程序发送多个请求到Rails API时一直保持冻结和挂起。没有错误,它只是挂在POST请求上。当我试图用CTRL + C杀死服务器时,什么都不会发生。我得手动杀死港口。
我已经尝试将config.eager_load=true设置为development.rb。我尝试过在config.allow_concurrency中添加application.rb。我一直在谷歌上搜索,但没有结果。我正在从前端同时发送大约5个请求,所以我相信这个数量的请求是导致它的原因,但我不确定。
有没有其他人经历过这种情况,或者对这里需要做些什么有什么想法?我通常可以得到所有的请求返回到前端成功的3-4次,然后服务器只是冻结。
尤其是在服务器运行时,我更改了项目中任何文件中的任何一行代码后,就会发生这种情况。
发布于 2020-03-01 07:40:02
已经将近两年了,但我终于偶然发现了导致我的问题的原因。
基本上,它归结为我的代码中的一个方法,它不是线程安全的。因为我的current_user变量只能从我的控制器中访问,所以我的基本控制器上有一个before_action来将当前用户分配给User.current,这样我就可以通过User.current访问当前用户,而不仅仅是在控制器中。
因此,请确保您没有在控制器中动态更新类,比如我。它不是线程安全的。最后,我采用了这个线程安全解决方案,而不是针对我的特殊情况:https://stackoverflow.com/a/2513456/7629239。
发布于 2018-04-19 20:17:09
你的美洲狮配置是什么?有多少线程和工作人员(美洲狮工人不是rails工人)。
确保您的美洲狮有足够多的线程,并且您的db池足够大。更改一行代码不应导致服务器耗尽资源。你用的是守望员吗?
https://stackoverflow.com/questions/49915326
复制相似问题