Centos nginx gunicorn 502 ошибка

Обновлено: 04.07.2024

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

теперь мы запускаем Nginx (1.0.10) и PHP-FPM на машине с 4x SAS 15K дисками (raid10) с 16-ядерным процессором и 24 ГБ оперативной памяти DDR3. Также мы используем последнюю версию Xcache. DB расположен на другой машине, но нагрузка этой машины очень низка, и не имеет никакой проблемы.

при нормальной загрузке все работает идеально, загрузка системы ниже 1, а отчет о состоянии PHP-FPM никогда не показывает более 10 активных процессов одновременно. Всегда доступно около 10GB ОЗУ. При нормальной нагрузке машина обрабатывает около 100 страниц в секунду.

проблема возникает, когда огромные всплески трафика приехать, и сотни просмотра страниц в секунду запрашиваются с компьютера. Я заметил, что отчет о состоянии FPM затем отображается до 50 активных процессов, но это все еще намного ниже 300 максимальных подключений, которые мы настроили. Во время этих всплесков nginx сообщает о состоянии до 5000 активных соединений вместо обычного среднего значения 1000.

информация об ОС: CentOS release 5.7 (Final)

CPU: Intel(R) Xeon (R) CPU E5620 @ 2.40 GH (16 ядер)

php-fpm.conf

Я не настраивал rlimit_files, потому что, насколько я знаю, он должен использовать по умолчанию, если вы не.

fastcgi_params (добавлены только значения в стандартный файл)

nginx.conf

Nginx подключается к FPM через сокет Unix.

sysctl-переменной.conf

ограничения.conf

это результаты для следующих команд:

вопрос: если PHP-FPM не заканчиваются соединения, нагрузка все еще низкая, и есть много доступной оперативной памяти, какое узкое место может быть причиной этих случайных ошибок шлюза 502 во время высокого трафика?

примечание: по умолчанию ulimit этой машины были 1024, так как я изменил его на 65536, я не полностью перезагрузил машину, так как это производственная машина, и это означало бы слишком много времени простоя.

У вас есть: fastcgi_buffers 4 256k;

изменить его: fastcgi_buffers 256 16k; // 4096к в общей сумме

и набор fastcgi_max_temp_file_size 0, это отключит буферизацию на диск, если ответы начнут выделять ваши буферы fastcgi.

сокет Unix принимает 128 соединений по умолчанию. Хорошо поставить эту строку в /etc/sysctl.conf

Если это не помогает в некоторых случаях-используйте обычную привязку порта вместо сокета, потому что сокет на 300+ может блокировать новые запросы, заставляя nginx показывать 502.

У меня есть 8 core 14 GB ram. Но система дает Gateway тайм-аут очень часто.
Реализация ниже fix также не решила проблему. Все еще ищу лучшие исправления.

у вас есть: fastcgi_buffers 4 256k;

fastcgi_buffers 256 16к; // 4096к в общей сумме

и набор fastcgi_max_temp_file_size 0, это отключит буферизацию на диск, если ответы начнут превышать fastcgi буферов.

Как следует из названия, я развертываю flask api на своем сервере под управлением centos 7. Я попытался следовать этому руководству на DigitalOcean с некоторыми незначительными отличиями. Во-первых, я использую conda вместо pip в качестве менеджера пакетов. Когда я настроил все, как описано ниже, и попытался подключиться с другой машины, я получил 502 плохих шлюза (журналы ошибок приведены в конце этого поста). Это мой первый gunicorn/nginx deployment, так что любая помощь или sugestions приветствуются. Я пытался посмотреть на подобные посты, но без особого прогресса.

Это то, что я сделал до сих пор

Я разместил свой проект на /home/apps/myproject. , и я conda также установлен на /home/apps/anaconda3. .

Файл системного сервисного блока, который у меня есть, выглядит следующим образом

Когда я это создал я запустил службу

После того, как я изменил свой конфигурационный файл nginx, он выглядит следующим образом

Я изменяю разрешения в соответствии с guid

Запустил службу nginx

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

как предлагалось в нескольких постах, например здесь, но эти изменения не помогли. Я получаю следующее:

cat /var/log/audit/audit.log | grep nginx | grep denied

Есть ли у кого-нибудь из вас представление о том, что это может означать предпочтительно, как решить эту проблему?

1 ответ

После некоторых обновлений ubuntu 16.04 и модификаций кода приложения Мой Flask на сайте gunicorn и nginx, который ранее работал, теперь выдает ошибку 502 bad gateway. myapp.conf: upstream app_server_wsgiapp < server localhost:8000 fail_timeout=0; >server < listen 80; server_name.

Я построил приложение flask, которое хотел бы добавить к входу Kubernetes. В настоящее время у меня есть 2 вопроса, которые я, кажется, не могу понять: Для того, чтобы приложение flask, чтобы быть в состоянии обрабатывать несколько запросов, я решил добавить gunicorn. Нужно ли мне это, или я могу.

После некоторой возни я устал от ошибки разрешения.

в моей конфигурации nginx

Похожие вопросы:

Я все еще довольно новичок с Flask/Nginx/Gunicorn, так как это только мой второй сайт, использующий эту комбинацию. Я создал веб-сайт, основанный на учебнике Мигеля Гринберга, так что моя файловая.

Я обновил свой сервер шеф-повара. Затем я успешно пробежал chef-server-ctl reconfigure . Однако, когда я запустил chef-server-ctl test , я получил ошибку: Encountered an error attempting to create.

После некоторых обновлений ubuntu 16.04 и модификаций кода приложения Мой Flask на сайте gunicorn и nginx, который ранее работал, теперь выдает ошибку 502 bad gateway. myapp.conf: upstream.

Я построил приложение flask, которое хотел бы добавить к входу Kubernetes. В настоящее время у меня есть 2 вопроса, которые я, кажется, не могу понять: Для того, чтобы приложение flask, чтобы быть в.

Я запускаю приложение Flask на Google Cloud App Engine (flex). Запуск его локально работает просто отлично, но как только он развертывается, я получаю 502 Bad Gateway error (nginx) . Теперь я хотел.

Я учусь развертывать свое приложение Flask на экземпляре Ubuntu AWS EC2 и следую учебнику Digital Ocean . Я сталкиваюсь и сталкиваюсь с одной последней проблемой: я загрузил свой Gunicorn и работаю.

502 плохая ошибка шлюза появляется при сохранении данных в БД. Как только пользователь войдет в приложение django (OLE 7). Данные извлекаются относительно этого пользователя с сервера ldap и.

Favorite

Добавить в избранное

Как настроить блоков сервера Nginx на Ubuntu и CentOS

Поэтому в сегодняшней статье мы попытаемся найти все потенциальные причины ошибки 502 Bad Gateway в Nginx, а также способы ее исправления.

Причины ошибки 502 Bad Gateway в Nginx

Ошибка 502 Bad Gateway в Nginx может быть вызвана несколькими причинами, наиболее распространенные из которых перечислены ниже:

Недостижимый домен.

Когда вы вводите имя домена в строке поиска браузера и нажимаете клавишу Enter для доступа к этому веб-сайту, самой первой задачей, которая выполняется, является обращение к вашей системе доменных имен (DNS). DNS-сервер сопоставляет указанное доменное имя со своим зарезервированным IP-адресом, а затем связывается с соответствующим сервером, который, в свою очередь, отвечает вам, отображая запрошенную веб-страницу в вашем веб-браузере. Однако иногда DNS-серверу не удается достичь указанного домена из-за ошибки 502 Bad Gateway в Nginx. Это может произойти из-за определенных изменений, происходящих в вашем DNS, которые вступят в силу через достаточно времени после того, как он начнет работать правильно.

Чрезмерно активированные брандмауэры

Иногда настройки брандмауэра настолько строгие и жесткие, что они даже блокируют законных пользователей и запрещают им доступ к вашему сайту. Это, в свою очередь, может привести к тому, что пользователи увидят ошибку 502 Bad Gateway всякий раз, когда они попытаются получить доступ к вашему сайту.

Хостинг-сервер выходит из строя

Поскольку серверы имеют ограниченную емкость, в которой они не могут обслуживать запросы пользователей, поэтому, как только эта емкость будет достигнута, все будущие входящие пользователи могут столкнуться с ошибкой 502 Bad Gateway, поскольку ваш сервер будет отключен. Другой причиной этого может быть то, что вы намеренно остановили свой сервер для обслуживания.

Исправление ошибки 502 Bad Gateway в Nginx

В зависимости от причин ошибки 502 Bad Gateway в Nginx вы можете попытаться устранить ее, используя любое из следующих решений:

Обновите свою веб-страницу

Иногда вы можете увидеть ошибку 502 Bad Gateway только из-за некоторых временных проблем с подключением, которые можно решить, просто обновив веб-страницу и проверив, есть ли у вас доступ к веб-странице. Если вам по-прежнему не удается перейти на желаемую веб-страницу, вы также можете попытаться очистить кеш браузера, потому что иногда в кеше браузера сохраняется ответ с ошибкой 502 Bad Gateway. Из-за этого ваш браузер снова и снова отображает эту ошибку, поэтому очистка кеша может решить эту проблему.

Выполните тест Ping.

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

Ищите возможные изменения в вашем DNS

Возможно, вы поменяли поставщика услуг хостинга или изменили IP-адрес, с которым можно связаться с вашим веб-сервером. Эти изменения всегда отражаются на DNS-сервере, но для их правильного выполнения требуется некоторое время. В этом случае вам нужно подождать, пока изменения вступят в силу во всем вашем DNS, после чего вы больше не будете видеть ошибку 502 Bad Gateway в Nginx.

Мониторинг журналов сервера. Журналы

Читать 11 причин, почему вам следует начать использовать прокси-сервер. Часть 2

Перепроверьте настройки брандмауэра

Отладка кода вашего веб-сайта

Попробуйте связаться с вашим поставщиком услуг хостинга

Заключение

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Ошибка 502 Bad Gateway Error

Что означает ошибка 502 Bad Gateway

Ошибки, принадлежащие серии 5xx, означают появление проблем на стороне сервера. Если взять конкретно ошибку 502 Bad Gateway, то ее появление будет означать получение неправильного ответа сервера. «Виновниками» в такой ситуации обычно являются прокси, DNS или хостинг-серверы.

Что делать, если вы пользователь

Ошибка 502 Bad Gateway может появиться на любом сайте. Пользователю для начала следует проверить, не является ли причиной проблемы какие-то неполадки с его стороны. Сделать это можно указанными ниже способами.

Перезагрузить страницу

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

Проверить подключение к интернету

Стоит проверить работу модема и попробовать загрузить другие страницы. Убедитесь, что подключение к интернету стабильное. Еще вариант – перезапустить маршрутизатор и попробовать снова загрузить проблемный сайт.


Очистить кэш DNS

Допустимо, что в кэше установлено неправильное значение IP-адреса. Для таких случаев можно использовать сброс DNS кэша. В ОС Windows необходимо открыть инструмент «Командная строка» (вводим в поисковую строку название программы и выбираем запуск от имени администратора).

Далее следует ввести вот такую команду и активировать ее нажатием на клавишу Enter:

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

Как очистить кэш DNS через командную строку Windows

Для Linux действие примерно схоже, но команда выглядит иначе. Открываю утилиту «Терминал» и ввожу в поле вот такой запрос:

Для других дистрибутивов:

Попробовать зайти с другого браузера

Проблема 502 Bad Gateway может быть актуальна и для конкретного браузера. Если у вас на компьютере есть другой интернет-обозреватель, попробуйте открыть сайт через него.

Отключить плагины и расширения

На загрузку некоторых страниц могут влиять установленные в браузер плагины и расширения. Особенно это касается VPN-сервисов и блокировщиков рекламы. Попробуйте поочередно отключать их и перезапускать страницу. Не исключено, что виновник будет найден.

Зайти на страницу позже

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

Ошибка 400 Bad Request

Что такое ошибка 500 и когда она возникает

Что делать, если вы администратор сайта

Обычно такие проблемы самостоятельно решать не рекомендуется. Лучше сразу же обратиться в службу технической поддержки и описать проблему. Но есть пара действий, которые все же могут помочь определить источник проблемы.

Проверка журнала ошибок

Актуально в случаях, при которых ошибка 502 Bad Gateway появляется после внесения изменений или обновления. Определить это очень просто, нужно лишь проверить журнал ошибок. В CMS WordPress можно включить запись возникающих ошибок, добавив в файл wp-config.php вот такие строки:

После этого все записи начнут отображаться в файле debug.log. Храниться он будет в директории wp-content. Понадобится некоторое время, чтобы причины ошибок были записаны. Потом можно тщательно изучить записи и уже на основе их предпринимать конкретные изменения.

Проверка плагинов

Следует проверить, не влияют ли какие-либо плагины на работу сайта. Для этого можно поочередно отключать их, просто переименовывая папку интересующего плагина. Для этого надо выделить папку, затем нажать на меню «Файл» и в нем выбрать пункт «Переименовать».

Отключение плагина в WordPress путем переименования папки

Проверка сети CDN

Сети CDN и службы предотвращения DoS тоже могут влиять на работу сайта. Обычно виновник проблемы указывается на странице с кодом ошибки. Например, если под кодом 502 Bad Gateway есть строка cloudflare-nginx, значит, для исправления ошибки надо обратиться в службу поддержки CloudFlare. Можно отключить данный сервис, но потом придется долго ждать обновления DNS (это может занять несколько часов).

Один их вариантов отображения ошибки 502 Bad Gateway

Ошибка 502 на виртуальном хостинге VPS/VDS

Ошибка 502 Bad Gateway возникает из-за превышения лимита трафика пользователей, «шалостей» бота, скачивания сайта или даже DoS‑атаки. Решение данной проблемы кроется в ограничениях памяти.

Запустить команду top

Данный запрос в терминале поможет установить наличие свободной памяти. Этим же способом можно проверить, работает ли Apache.

Посмотреть логи Apache и nginx

Обычно в этих логах отображается активность пользователей. Если есть что-то подозрительное, можно предпринять действия. К примеру, забанить определенные IP-адреса, настроить Fail2ban или подключить систему защиты от DoS-атак.

Если после этого количество запросов к серверу снизилось, необходимо перезапустить Apache.

Увеличить объем памяти

Бывает, что с логами все нормально, но памяти на обработку запросов все равно не хватает. Узнать об этом просто – при проверке командой top будет выдана ошибка OOM (out of memory). В таких случаях можно просто увеличить ее объем. Можно просто заказать другой тариф, в котором количество предоставляемой памяти больше. Подробнее об этом.

Проверить лимиты на php-cgi процессы

Обратиться к службе технической поддержки

Если вышеперечисленные способы исправления ошибки 502 на виртуальном сервере не помогут, придется обращаться в техподдержку хостинга. При этом обязательно надо упомянуть, что вы уже предприняли и как проводили все действия.

Читайте также: