Django+Satchmo с использованием nginx+FastCGI через некоторое время выдает HTTP Error 502 Bad gateway

Я установил новый магазин Satchmo на дистрибутив Linux Debian 6. Стандартный сервер разработки Django работает отлично, но в рабочем режиме с nginx + FastCGI через некоторое время (или похоже на то, что какой-то лимит памяти будет переполнен) nginx выдает ошибку «502 Bad gateway».

В файлах журнала я нашел эти строки:

2011/12/02 02:38:57 [ошибка] 29894#0: *91439 recv() не удалось (104: соединение сброшено узлом) при чтении заголовка ответа от восходящего потока, клиент: 2.95.158.164, сервер: my-secret- host.com, запрос: "GET / HTTP/1.1", восходящий поток: "fastcgi://unix:/var/run/www/file.sock:", хост: "my-secret-host.com"

Я много искал в Интернете и обнаружил, что nginx не может получить правильный ответ от моего сервера django fastcgi. Я пробовал разные настройки сервера django (maxchildren, maxrequests), но ошибка все еще здесь (вывод: более высокие значения - дольше жизнь без ошибок). При настройках maxchildren=3 maxrequests=10 ошибка случайным образом появляется после 5-10 обновлений страницы, а после 15 обновлений появляется всегда.

Я также обнаружил, что когда я прокомментировал некоторые строки исходного кода satchmo, ошибка исчезла. Это очень странно, потому что это очень важные строки для правильной работы магазина. Я думаю, что это может быть ключом к причине проблемы. Разница находится здесь: http://dpaste.com/hold/664978/

Проблема исчезнет, ​​если я:

  • закомментируйте PAYMENT_PROCESSOR=True строку в моем единственном платежном модуле.
  • закомментировать config_register(MultipleStringValue(SHIPPING_GROUP, ...) в shipping/config.py

Я думаю, что эти строки ведут к реальным причинам сбоя моего рабочего сервера. Как я могу решить эту проблему полностью? Есть предложения по моему расследованию?

ОБНОВЛЕНИЕ:

После включения ведения журнала satchmo я нашел это сообщение:

Пн, 05 дек. 2011 13:26:37 ОШИБКА конфигурации Проблема с поиском настроек SHOP.SHOW_SITE, сервер неожиданно закрыл соединение Это, вероятно, означает аварийное завершение работы сервера до или во время обработки запроса.

Вероятно, это можно решить с помощью рецепта отсюда https://groups.google.com/group/satchmo-users/browse_thread/thread/506b3ad77e7a766e?hl=es&pli=1. Я попробую это немного позже.


person ramusus    schedule 02.12.2011    source источник


Ответы (2)


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

Еще один вопрос, который следует учитывать: используете ли вы Fast-cgi с многопотоковым или неточным потоком?

person Chris Moffitt    schedule 02.12.2011
comment
Django работает с командой runfcgi method=prefork. Какая разница для сачмо? - person ramusus; 05.12.2011

Это вызвано проблемой с подключением к базе данных.

Обоснование: Первая часть сообщения об ошибке «ОШИБКА конфигурации Проблема с поиском настроек SHOP.SHOW_SITE» исходит от livesettings. Обычно это первый модуль, использующий базу данных. Вторая часть после запятой "сервер неожиданно закрыл соединение..." - это сообщение от клиента базы данных Postgres о подключении к серверу БД.

Соединение с базой данных, количество активных соединений и настройки базы данных можно проверить с помощью следующих команд:

$ python manage.py dbshell

postgres=> select * from product_product;   -- something typical
postgres=> select * from pg_stat_activity;  -- active connections
postgres=> show all;                        -- show current db server settings
person hynekcer    schedule 18.04.2012