Назад | Перейти на главную страницу

Apache: усеченные или увеличенные заголовки ответов после плавного перезапуска

После плавного перезапуска некоторые процессы 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 ответов.

Задержки в несколько секунд - это нормально, но сбоев следует избегать.

Версии:

  1. Возможная причина: не ваша вина. Обновите свой модуль wsgi. См. Второй пункт в Список исправленных ошибок.

Версия 4.5.21

Исправлены ошибки

  • Установка с использованием pip или setup.py не удалась на MacOS X High Sierra с последней версией Xcode, поскольку Apple вообще не включает программу apxs.

  • Предполагалось, что сбои при завершении процесса демона были вызваны состоянием гонки при доступе к API Python C при уничтожении интерпретатора. Чтобы избежать этого, была предусмотрена проверка, но она могла быть недостаточно надежной в зависимости от того, как кеш памяти работал для потоков, выполняемых на многоядерной машине. Теперь используйте выделенный мьютекс потока, чтобы избежать состояния гонки между потоком основного процесса и потоком обнаружения взаимоблокировок интерпретатора Python.

  1. Если проблема все еще возникает, добавьте дополнительную запись в apache и ваше приложение:

    а. В твоем конфигурация apache, устанавливать LogLevel к info для генерации дополнительных сообщений при перезапуске сервера / ошибке сервера. Это также регистрирует mod_wsgi информационный материал или возможные ошибки сегментации.

    б. Если в этих сообщениях не обнаружено ничего подозрительного, добавьте регистрация запросов / ответов в ваше приложение (заголовки ввода, статус ответа и заголовки ответа).

К вашему сведению: вы перезапускаете apache, чтобы отразить изменения в коде вашего приложения? Если вы хотите запустить перезагрузку вашего кода в режиме демона, вы можете touch измененный файл скрипта (обновите метку времени). Затем процесс deamon автоматически завершается и перезапускается.

Кроме того, вы можете настроить страницу (защищенную паролем), чтобы принудительно перезапустить процесс демона. Видеть Перезагрузка в режиме демона / перезапуск процессов демона