@yuri--k

Что может вызывать ошибку 502?

Всем привет, пытаюсь разобраться почему на сайте выбивает 502 ошибку.
Сайт продает цифровые товары, наименований больше 1кк в таблице продуктов (бд MySQL), при покупке и добавлении в корзине идет перерасчет наличия с записью в memcached.
Ресурсов на сервере предостаточно, если верить аналитике digitalocean (пик около 7% проц и озу).
Все страницы сайта летают, отдаются за 50-70мс, но иногда пользователю выкидывает 502 ошибку nginx
Подскажите куда копать для начала, что и как логировать, может есть релевантные статьи

Подозреваю проблема в бд, так как проблема обнаружилась недавно
А из последнего
- добавилось товаров в 4 раза
- делалась индексация
- при обновлении наличия делается много запросов, может идет какой то блок хз
В этом деле новичек, но других рук сейчас нет

UDP
в логах nginx/errors вылазит такая ошибка
connect() to unix:/var/run/php/php7.4-fpm.sock failed (2: No such file or directory) while connecting to upstream

Интересно что ошибка вызалит то раз в 10 минут, то в раз в пол часа. Трафик постоянный
  • Вопрос задан
  • 137 просмотров
Решения вопроса 1
@Flying
HTTP 502 - это Bad Gateway. Как видно из описания - это означает что proxy (в вашем случае, предположу, nginx) не может получить ответа от upstream'а (php-fpm в вашем случае). Приведённый вами текст ошибки это прямо подтверждает.

Из этого можно сделать первый вывод: куда-то пропадают процессы php-fpm. Поскольку рабочие процессы php-fpm даже при падении перезапускает основной процесс php-fpm - навскидку можно сделать несколько первичных предположений:
  1. У вас просто не хватает рабочих процессов php-fpm для обслуживания имеющихся запросов. Проверяйте логи php-fpm и подстраивайте параметры pm, pm.max_children, pm.min_spare_servers
  2. Что-то роняет сами процессы php-fpm. Смотрите логи самого PHP и php-fpm на предмет записей об ошибках, устраняйте их

Также просто понаблюдайте что происходит с процессами php-fpm на вашем сервере, возможно это даст подсказки.

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

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы