Я запускаю django с mod_wsgi, и большую часть времени все работает нормально, но иногда я замечаю, что внезапно Apache перестает обслуживать любые запросы, служба мониторинга на сервере сообщает, что httpd все еще работает, но запросы занимают слишком много времени и не работают с преждевременными заголовками сценариев .
Я запускаю эту настройку на RHEL с python 2.6
директивы WSGI
WSGISocketPrefix /var/run/wsgi
WSGIScriptAlias / /srv/bin/bootstrap.wsgi
WSGIDaemonProcess bstapp user=django-user group=django-user
WSGIProcessGroup bstapp
То, что вы получаете «преждевременные заголовки скриптов», указывает мне, что вы используете режим демона. Тем не менее, это все равно поможет, если вы измените свой вопрос и добавите в конце конкретную конфигурацию mod_wsgi, которую вы используете, чтобы было ясно, что вы делаете, а не гадать.
Теперь, когда вы получаете «преждевременные заголовки скриптов», это также указывает на то, что процессы вашего демона падают. Вы должны посмотреть в основном журнале ошибок Apache, есть ли какие-либо сообщения журнала о «нарушении сегментации» или аналогичных. Также установите для Apache LogLevel как минимум значение «информация», а не «предупреждать». Это заставит mod_wsgi записывать больше о том, что происходит, и почему он думал, что процесс демона завершается.
Если это сбой, и у вас есть только одно приложение WSGI, запущенное в группе процессов демона, установите:
WSGIApplicationGroup %{GLOBAL}
Это позволит избежать различных проблем, вызванных сторонними пакетами Python, которые используют компонент расширения C, где компонент расширения C не реализован должным образом для работы во вспомогательных интерпретаторах. Это может решить проблему сбоя, но также, если модуль расширения является мертвой блокировкой и в результате вызывает нехватку потоков, это также может исправить проблемы с приложением, которое больше не обрабатывает запросы.
Итак, добавьте эту конфигурацию к вашему вопросу и измените LogLevel, чтобы получать больше сообщений из mod_wsgi. Наконец, принудительно используйте основной интерпретатор с помощью этой директивы.