Sidekiq 卡住线程未响应 TTIN 信号

Sidekiq stuck threads not responding to TTIN signal

我们正在使用 sidekiq 进行后台作业处理,但我们遇到了 sidekiq 问题。在处理作业时,sidekiq 使其线程进入卡住状态。当我检查 sidekiq 网络界面时,我没有看到任何进程 运行。 但是我可以看到如下所示的过程 运行。 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 对象。

正在使用 rails 4.1.2 甲骨文 ('activerecord-oracle_enhanced-adapter', '1.5.5')

sidekiq yml 配置

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

使用 GDB 获取 C 级回溯:

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

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