Sidekiq卡住线程没有响应TTIN信号

时间:2015-07-30 04:40:02

标签: ruby-on-rails sidekiq

我们正在使用sidekiq进行后台作业处理,而我们遇到了sidekiq的问题。处理作业时,sidekiq使其线程进入卡住状态。当我检查sidekiq web界面时,我没有看到任何进程正在运行。 但我可以看到一个如下流程运行的流程。 ps -aux |grep sidekiq rails 26512 0.2 4.8 1619652 196936 ? Sl 13:10 0:10 sidekiq 3.3.3 railsapp [7 of 20 busy]

我试图用'kill -TTIN 26512'杀死以获得回溯但它没有响应上面。

有谁知道如何调试这个?这种情况一直发生在我们的应用程序中,我们经常不得不终止进程并需要重新启动sidekiq进程。

我们还在后台处理中使用Mutex对象。

使用 轨道4.1.2 Oracle('activerecord-oracle_enhanced-adapter','1.5.5')

sidekiq yml configuraitons

:pidfile: ./tmp/pids/sidekiq.pid
:logfile: ./log/sidekiq.log
:concurrency: 20
:timeout: 30
:daemon: true
:queues:
  - default
  - task
  - task2
  - task3

1 个答案:

答案 0 :(得分:1)

使用GDB获取C级回溯:

https://github.com/mperham/sidekiq/wiki/Problems-and-Troubleshooting#frozen-processes

您的回溯表示Oracle本机驱动程序中存在错误。线程9在等待本机锁定时持有GVL。另一个线程是持有该本机锁,等待GVL。这会导致所有线程停止,因为没有人可以获得GVL。