Вот уже несколько недель я запускаю свой front end на сервере (angular Server Side rendering). Я постоянно сталкиваюсь с проблемой, когда фронт-энд падает до ошибки 502. Мне приходится перезапускать сервер каждые несколько часов, чтобы убедиться, что он снова работает. Трафик не сумасшедший, и все кажется в порядке (в моих консольных журналах - никаких ошибок и т.д.) до момента, когда он внезапно падает. Как только я перезапускаю сервер ssr, он снова работает нормально. Я использую универсальную библиотеку, которая является стандартом для рендеринга на стороне сервера в Angular. В чем может быть проблема? Что мне нужно контролировать? ОЗУ? ПРОЦЕССОР? Что-то еще?
HTTP 502 обычно означает, что один сервер (тот, который инициировал ответ HTTP 502) пытался связаться с другим сервером и потерпел неудачу.
Вы упомянули, что перезагрузка «первого» сервера (того, который в конечном итоге раздал 502) решает проблему, что, вероятно, означает, что на этом сервере есть какая-то непостоянная проблема.
Возможные причины:
Проверьте использование ОЗУ (free -m, top) и лимиты ОЗУ, как глобальные (/etc/security/limits.conf), так и для каждого процесса (cat /proc/PID/limits, где PID — это PID вашего процесса) .
Выполнить ss -tlpnao | grep
(или любой другой порт) и сравните количество подключений со значениями sysctl net.ipv4.ip_local_port_range
и sysctl net.ipv4.tcp_fin_timeout
.
Я бы также запустил tcpdump -nni any host
, чтобы проверить, что происходит с точки зрения пакетов. Вы получаете ответ? Если да, то какой ответ? Или интерфейс просто никогда не получает ответа от сервера? Это может помочь вам найти основную причину.