После плавного перезапуска некоторые процессы wsgi python завершаются с ошибкой 500 (внутренняя ошибка сервера):
[20:06:33] [mpm_prefork:notice] AH00171: Graceful restart requested, doing restart
[20:06:36] [wsgi:error] Truncated or oversized response headers received from daemon process 'foo_vums_di2865'
(Вышеупомянутые строки журнала были вырезаны, чтобы их было легче читать)
Что может быть причиной?
Есть ли способ перезапустить apache без создания 500 ответов.
Задержки в несколько секунд - это нормально, но сбоев следует избегать.
Версии:
Версия 4.5.21
Исправлены ошибки
Установка с использованием pip или setup.py не удалась на MacOS X High Sierra с последней версией Xcode, поскольку Apple вообще не включает программу apxs.
Предполагалось, что сбои при завершении процесса демона были вызваны состоянием гонки при доступе к API Python C при уничтожении интерпретатора. Чтобы избежать этого, была предусмотрена проверка, но она могла быть недостаточно надежной в зависимости от того, как кеш памяти работал для потоков, выполняемых на многоядерной машине. Теперь используйте выделенный мьютекс потока, чтобы избежать состояния гонки между потоком основного процесса и потоком обнаружения взаимоблокировок интерпретатора Python.
Если проблема все еще возникает, добавьте дополнительную запись в apache и ваше приложение:
а. В твоем конфигурация apache, устанавливать LogLevel
к info
для генерации дополнительных сообщений при перезапуске сервера / ошибке сервера. Это также регистрирует mod_wsgi
информационный материал или возможные ошибки сегментации.
б. Если в этих сообщениях не обнаружено ничего подозрительного, добавьте регистрация запросов / ответов в ваше приложение (заголовки ввода, статус ответа и заголовки ответа).
К вашему сведению: вы перезапускаете apache, чтобы отразить изменения в коде вашего приложения? Если вы хотите запустить перезагрузку вашего кода в режиме демона, вы можете touch
измененный файл скрипта (обновите метку времени). Затем процесс deamon автоматически завершается и перезапускается.
Кроме того, вы можете настроить страницу (защищенную паролем), чтобы принудительно перезапустить процесс демона. Видеть Перезагрузка в режиме демона / перезапуск процессов демона