Внутренняя ошибка сервера nginx uwsgi 500 - заголовок http uwsgi: "Соединение: закрыть"

Я использую небольшой сервер с nginx и приложением python flask на aws и uwsgi. Уже дважды случалось так, что сервер вышел из строя с ошибкой 500 и без логов от имени nginx. Я не эксперт, не могли бы вы помочь выяснить, почему происходит следующее?

похоже, что сервер "случайно" (?) останавливается с этой ошибкой: (я активировал debug в error_log /pathtomylog/error.log debug в файле nginx.conf, чтобы увидеть его):

2015/12/02 22:05:12 [debug] 19006#0: *1 http upstream process header
2015/12/02 22:05:12 [debug] 19006#0: *1 malloc: 0000000001D24CE0:4096
2015/12/02 22:05:12 [debug] 19006#0: *1 recv: fd:11 104 of 4096
2015/12/02 22:05:12 [debug] 19006#0: *1 http uwsgi status 500 "500 Internal Serv
er Error"
2015/12/02 22:05:12 [debug] 19006#0: *1 http uwsgi header: "Connection: close"
2015/12/02 22:05:12 [debug] 19006#0: *1 http uwsgi header: "Content-Type: text/p
lain"
2015/12/02 22:05:12 [debug] 19006#0: *1 http uwsgi header done
2015/12/02 22:05:12 [debug] 19006#0: *1 xslt filter header
2015/12/02 22:05:12 [debug] 19006#0: *1 HTTP/1.1 500 Internal Server Error

Я пытался убить всех работников uswgi. Я попытался перезапустить nginx. Оперативная память выглядит по-прежнему нормально и деактивирована подкачка ради ElasticSearch (да, я использую ее на 1 Гб оперативной памяти, но на размер моего индекса она еще не жаловалась).

Не могли бы вы также указать ссылку на то, как настроить будильник или что-то? Так как ошибка произошла дважды, без изменения в conf-файлах ни приложения, ни статических файлов, все в порядке, конечной точки API нет, я думал, что это связано с uswgi, но не могу понять.

Я не эксперт в конфигурации серверов, и это действительно полный мир технических деталей! Пожалуйста, помогите в районе в джунглях:)

1 ответ

[ Решено ] uswgi не удалось разрешить на модуле python.

Я сделал следующее и обнаружил ошибку, она может быть полезна кому-то еще для отладки.

Проверил журнал uswgi: если у вас его нет, установите его в файле.ini, где указывает uwsgi запустить ваше приложение:

logto = /var/log/uwsgi/%n.log

(Я обращаюсь к этому руководству, если вы новичок: https://www.digitalocean.com/community/tutorials/how-to-serve-flask-applications-with-uwsgi-and-nginx-on-ubuntu-14-04)

Затем найдите файл журнала в указанной выше папке и:

tail -f myapp.log

Я обнаружил, что приложение Python не было найдено. Немного почесав голову, я обнаружил, что ошибка не в заголовке, а просто потому, что я назвал резервный модуль моего приложения в виде [name.version.py] ( основная вещь, которую нельзя делать при именовании модулей Python.. упс я это сделал).

Так что он не знал, какой модуль запустить.

Например, переименованная резервная копия: mv oldname.version.py newname_version.py

и снова работает.

Тем не менее, поскольку я загружал файлы резервных копий на серверы, пока приложение работало правильно, и продолжал работать до двух дней назад, я понимаю, что сервер вышел из строя и перезапустился, а затем не смог определить, какой из модулей решил: как отслеживать перезапуск сервера? это нормально? Как вы понимаете, я хочу настроить прилично, несмотря на то, что настройки сервера - не мое дело, и комментарии для более ясного понимания того, как предотвратить или обработать ошибку 500 (установка аварийных сигналов), очень ценятся!

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