Apache и mod_wsgi, рабочий процесс застрял в состоянии W, запрос никогда не умирает. Как поставить диагноз?

Я использую Apache 2.2 с mod_wsgi, Python 2.7 и mpm_worker. Иногда один из рабочих процессов застревает, и все его потоки останавливаются в состоянии записи (как показано на скриншоте ниже).

Это происходит один раз в день для одного рабочего процесса.

Я полагаю, это либо потому, что

  • Некоторая внутренняя проблема в Apache

  • Все мои потоки Python внутри тупика рабочего процесса mod_wsgi как-то

Пока единственное средство, которое я нашел, это полный перезапуск Apache (не изящный).

Я надеюсь найти несколько советов, как диагностировать проблему, что ее вызывает

  • Почему Apace Timeout не убивает рабочие потоки / процессы. Время timeout это одна минута, но похоже, что эти потоки и работники работали счастливо несколько часов по одному запросу.

  • Можно ли получить дамп потока изнутри mod_wsgiи посмотреть, не заблокированы ли сами потоки Python

  • Есть идеи, что может быть причиной этого и как исправить ситуацию?

Ниже скриншот, показывающий Apache server-status где один из рабочих процессов (1-0) застрял.

введите описание здесь

1 ответ

Решение

После включения WSGIDaemonProcess и при переключении на отдельные процессы-демоны эта проблема больше не возникает, как рекомендуется в связанном вопросе.

Другие вопросы по тегам