Рендеринг на стороне сервера Angular продолжает падать до 502 ошибок

Рендеринг на стороне сервера Angular продолжает падать до 502 ошибок

Итак, я уже несколько недель запускаю свой фронтенд на сервере (рендеринг на стороне сервера Angular). Я постоянно сталкиваюсь с этой проблемой, когда фронтенд падает до ошибки 502. Мне приходится перезапускать сервер каждые несколько часов, чтобы убедиться, что он снова работает. Трафик не сумасшедший, и все вроде бы в порядке (в моих журналах консоли - никаких ошибок и т. д.), пока он внезапно не падает. Как только я перезапускаю сервер ssr, он снова работает нормально. Я использую универсальную библиотеку, которая является стандартом для рендеринга на стороне сервера в Angular. В чем может быть проблема? Что мне нужно контролировать? ОЗУ? ЦП? Что-то еще?

решение1

HTTP 502 обычно означает, что один сервер (тот, который отправил ответ HTTP 502) попытался связаться с другим сервером, но это не удалось.

Вы упомянули, что перезагрузка «первого» сервера (того, который в конечном итоге выдал ошибку 502) решает проблему, что, вероятно, означает, что на этом сервере есть какая-то непостоянная проблема.

Возможные причины:

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

Проверьте использование оперативной памяти (free -m, top) и ограничения оперативной памяти, как глобальные (/etc/security/limits.conf), так и для каждого процесса (cat /proc/PID/limits, где PID — это PID вашего процесса).

  • количество открытых соединений: возможно, у вашего фронтенда много открытых соединений с бэкенд-сервером, что означает, что в какой-то момент он не может открыть новое, и перезапуск закрывает эти соединения.

Запустите ss -tlpnao | grep <backend server IP>(или любой другой порт) и сравните количество соединений со значениями sysctl net.ipv4.ip_local_port_rangeи sysctl net.ipv4.tcp_fin_timeout.

Я бы также запустил , tcpdump -nni any host <backend ip> -vчтобы проверить, что происходит с точки зрения пакета. Вы получаете ответ? Если да, то какой ответ? Или фронтенд просто никогда не получает ответа от бэкенда? Это может помочь вам найти первопричину.

Связанный контент