Sidekiq застрял в потоках, не отвечающих на сигнал TTIN

Мы используем 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 Oracle ('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

person Shani    schedule 30.07.2015    source источник


Ответы (1)


Используйте GDB, чтобы получить обратную трассировку уровня C:

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

Ваша обратная трассировка указывает на ошибку в собственном драйвере Oracle. Поток 9 удерживает GVL в ожидании собственной блокировки. Другой поток удерживает эту собственную блокировку, ожидая GVL. Это приводит к остановке всех потоков, поскольку никто не может получить GVL.

person Mike Perham    schedule 30.07.2015
comment
пожалуйста, найдите след. Вышеупомянутый процесс перезапустился в одночасье, но когда я снова запустил задание, я получил те же результаты. gist.github.com/Dharshi/ec55411d24f9fd153f01 - person Shani; 31.07.2015
comment
Ошибка находится в собственном геме Oracle OCI. - person Mike Perham; 31.07.2015
comment
@Shani Вы используете ruby-oci8 2.1.6 или 2.1.7. Не могли бы вы вместо этого использовать 2.1.8? Проблема была исправлена ​​github.com/ - person Kubo Takehiro; 01.08.2015
comment
обязательно попробую эту версию. Спасибо @Mike Perham, KuboTakehiro - person Shani; 02.08.2015