Ruby on rails 为什么我的Rails应用程序挂起了?

Ruby on rails 为什么我的Rails应用程序挂起了?,ruby-on-rails,ruby,controller,worker,Ruby On Rails,Ruby,Controller,Worker,我使用的是Rails 4.2和Ruby 2.2.0。最近,我注意到,当某个员工在工作时,我的应用程序会挂起很长一段时间。这是一个已经开发了好几年的应用程序,我以前从未见过这种挂起行为(不幸的是,我也不完全知道自从上次不挂起以来我做了什么改变) 我所说的“挂起”是指:不会加载任何页面(无法访问任何控制器,甚至基本上是静态页面的默认主页也不会加载)。我的所有日志都不会更新。未写入标准输出。该应用程序还有许多后台工作进程(由Resque管理),这些进程似乎也处于挂起状态 我已经研究了top和netst

我使用的是Rails 4.2和Ruby 2.2.0。最近,我注意到,当某个员工在工作时,我的应用程序会挂起很长一段时间。这是一个已经开发了好几年的应用程序,我以前从未见过这种挂起行为(不幸的是,我也不完全知道自从上次不挂起以来我做了什么改变)

我所说的“挂起”是指:不会加载任何页面(无法访问任何控制器,甚至基本上是静态页面的默认主页也不会加载)。我的所有日志都不会更新。未写入标准输出。该应用程序还有许多后台工作进程(由Resque管理),这些进程似乎也处于挂起状态

我已经研究了top和netstat以及其他各种Unix实用程序,我也没有看到任何令人担忧的地方

最后,我不确定这是否值得一提,但这个应用程序是通过Foreman在EC2实例上运行的


编辑:我不认为它与查询相关,因为顶部没有异常显示。另外,我对rails有点缺乏经验,但每个作业在流程表中都有自己的条目,如果这有帮助的话。

工人是一次性的还是使用与应用程序相同的线程?我假设挂起是由于工作人员的工作负载增加,因为随着应用程序的寿命通常增加,数据库和工作人员必须做的工作也会增加。我不确定你说的第一个问题是什么意思,但我相当肯定,这不是一个简单的工作规模增加的问题。可能是一个长时间运行的数据库查询,它锁定了一个重要的表,如
用户
?这将导致所有其他进程都必须等待一个作业完成的情况。我将进一步查看查询日志,但此作业与之交互的表相对较小。此外,这似乎还不能解释为什么即使主页(只是静态内容,没有数据库调用)也会挂起。