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

Ошибка uWSGI: мой мастер отключился: я убью себя. Как это произошло

сообщение об ошибке:

uWSGI worker 5 screams: UAAAAAAH my master disconnected: i will kill myself !!!

Я использую uWSGI в качестве сервера для хранения приложения пирамиды в Ubuntu 12.04

Небольшой поиск в Google привел меня к этот набор изменений (доступен только сейчас в кеше Google) в котором uwsgi_receive_signal() и это сообщение об ошибке было добавлено в signal.c. В текущая версия кода здесь.

Если read() call возвращает 0 (это означает, что было прочитано 0 байтов), тогда что-то не так с мастером, и рабочий должен выйти. Если возвращаемое значение меньше 0, это указывает на ошибку, и рабочий должен выйти. Если возвращаемое значение было больше 0, это нормальная ситуация, и сигнал следует обработать.

Кажется, нет никакого способа определить разницу между обычным завершением рабочего процесса и ошибкой, приводящей к его завершению, потому что в обоих случаях в журнал заносится одно и то же сообщение, поэтому невозможно быть уверенным в ответе на ваш вопрос «Как это произошло. "

И поэтому, дети, сообщения журнала важны.

Как упоминал @roberto, в журнале могут быть другие сообщения, которые могут содержать более полезную информацию.

Есть множество причин для смерти мастера, обычно смерть мастера определяется пользователем, но если по какой-то причине он умирает внезапно, рабочие должны следовать за ним. Поскольку работник (будучи ребенком) не имеет возможности узнать, что произошло, вы не можете ожидать дополнительной информации.

Распространенной ошибкой является отправка KILL мастеру для перезагрузки / уничтожения uWSGI, это приведет к тому, что рабочий будет «осиротевшим». Как правило, о смерти мастера следует сообщать в журналах (с отслеживанием событий в случае повреждения памяти), возможно, если вы их вставите, мы сможем найти причину.