![A renderização angular do lado do servidor continua caindo para 502 erros](https://rvso.com/image/768949/A%20renderiza%C3%A7%C3%A3o%20angular%20do%20lado%20do%20servidor%20continua%20caindo%20para%20502%20erros.png)
Estou executando meu front-end no servidor há algumas semanas (renderização angular do lado do servidor). Continuo me deparando com esse problema em que o front-end apresenta um erro 502. Tenho que reiniciar o servidor a cada poucas horas para garantir que ele esteja funcionando novamente. O tráfego não está louco e tudo parece estar bem (nos logs do meu console - sem erros, etc.) até o ponto em que ele cai repentinamente. no momento em que reinicio o servidor ssr, ele funciona bem novamente. Eu uso a biblioteca universal que é o padrão para renderização do lado do servidor em Angular. Qual poderia ser o problema? o que preciso monitorar? BATER? CPU? Algo mais?
Responder1
HTTP 502 normalmente significa que um servidor (aquele que originou a resposta HTTP 502) tentou se comunicar com outro servidor e falhou.
Você mencionou que reiniciar o "primeiro" servidor (aquele que eventualmente distribuiu o 502) corrige o problema, o que provavelmente significa que há algum tipo de problema não persistente nesse servidor.
Razões possíveis:
- esgotamento de memória: se o seu servidor front-end precisar gerar um novo processo ou thread para se comunicar com o back-end, talvez ele não consiga fazer isso.
Verifique a utilização de RAM (free -m, top) e os limites de RAM, tanto globais (/etc/security/limits.conf) quanto por processo (cat /proc/PID/limits, onde PID é o PID do seu processo).
- número de conexões abertas: talvez seu front-end tenha muitas conexões abertas com o servidor back-end, o que significa que em algum momento ele não poderá abrir uma nova e reiniciar fechará essas conexões.
Execute ss -tlpnao | grep <backend server IP>
(ou qualquer outra porta) e compare o número de conexões com os valores de sysctl net.ipv4.ip_local_port_range
e sysctl net.ipv4.tcp_fin_timeout
.
Eu também executaria um tcpdump -nni any host <backend ip> -v
para verificar o que está acontecendo da perspectiva do pacote. Você recebe uma resposta? Se sim, que tipo de resposta? Ou o frontend simplesmente nunca recebe uma resposta do backend? Isso pode ajudá-lo a encontrar a causa raiz.