Django + Satchmo через nginx + FastCGI через некоторое время выдает ошибку HTTP 502 Bad gateway - PullRequest
0 голосов
/ 02 декабря 2011

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

В лог-файлах я нашел следующие строки:

2011/12/02 02:38:57 [error] 29894 # 0: * 91439 recv () не удалось (104: Сброс соединения по пиру) при чтении заголовка ответа из восходящего клиент: 2.95.158.164, сервер: my-secret-host.com, запрос: "GET / HTTP / 1.1 ", upstream:" 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 ошибка исчезла. Это очень странно, потому что это очень важные строки для правильного рабочего магазина. Я думаю, что это может быть ключом к проблеме. Diff здесь: http://dpaste.com/hold/664978/

Проблема исчезла бы, если бы я:

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

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

UPDATE:

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

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

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

Ответы [ 2 ]

0 голосов
/ 18 апреля 2012

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

Обоснование: Первая часть сообщения об ошибке "Ошибка конфигурации" Поиск параметров настройки 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
0 голосов
/ 03 декабря 2011

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

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

...