独角兽工人不时冻结

时间:2014-01-24 09:50:25

标签: ruby-on-rails ruby unicorn

几天前,我注意到一件奇怪的事情 - 服务器不时停止处理请求一段时间。在top输出处,它看起来像这样:

  • 十名Unicorn工作人员处理请求;
  • 然后,由于某种原因,他们停止做任何事情。我的意思是,所有十名工人都处于“睡眠”状态;
  • 他们睡了十五秒钟;
  • 然后突然所有工人同时开始处理请求(很多人排队等待10秒);

我有以下设置: nginx,unicorn 4.6.2,postgres,redis for sessions和cache,MRI ruby​​ 2.0.0p353。

我的第一个想法是责备redid(因为如果redis没有给会话,所有进程都会等待它),但似乎并非如此,因为当unicorn worker冻结时,redis服务于其他进程的后台作业。

我不明白这种奇怪行为的原因是什么。

如果有人对此事有所了解,我很乐意检查。如果您需要其他信息 - 请告诉我该怎么做,我会尽力提供。

更新:

1 个答案:

答案 0 :(得分:1)

事实证明(在工作进程的strace的帮助下)工作人员试图在磁盘上写日志。磁盘负载很重,进程被阻止。