Así que he estado ejecutando mi interfaz en el servidor durante algunas semanas (renderizado angular del lado del servidor). Sigo encontrándome con este problema en el que la interfaz muestra un error 502. Tengo que reiniciar el servidor cada pocas horas para asegurarme de que tenga una copia de seguridad. El tráfico no es una locura y todo parece estar bien (en los registros de mi consola, sin errores, etc.) hasta que de repente cae. en el momento en que reinicio el servidor ssr, vuelve a funcionar bien. Utilizo la biblioteca universal que es el estándar para la renderización del lado del servidor en Angular. ¿Cual podría ser el problema? ¿Qué necesito monitorear? ¿RAM? ¿UPC? ¿Algo más?
Respuesta1
HTTP 502 normalmente significa que un servidor (el que origina la respuesta HTTP 502) intentó comunicarse con otro servidor y falló.
Mencionas que reiniciar el "primer" servidor (el que finalmente entrega el 502) soluciona el problema, lo que probablemente significa que hay algún tipo de problema no persistente en ese servidor.
Posibles razones:
- Agotamiento de la memoria: si su servidor frontend tiene que generar un nuevo proceso o hilo para comunicarse con el backend, es posible que no pueda hacerlo.
Verifique la utilización de RAM (free -m, top) y los límites de RAM, tanto globales (/etc/security/limits.conf) como por proceso (cat /proc/PID/limits, donde PID es el PID de su proceso).
- número de conexiones abiertas: tal vez su interfaz tenga muchas conexiones abiertas con el servidor backend, lo que significa que en algún momento no puede abrir una nueva y al reiniciar se cierran esas conexiones.
Ejecute ss -tlpnao | grep <backend server IP>
(o cualquier otro puerto) y compare el número de conexiones con los valores de sysctl net.ipv4.ip_local_port_range
y sysctl net.ipv4.tcp_fin_timeout
.
También ejecutaría a tcpdump -nni any host <backend ip> -v
para comprobar qué está pasando desde la perspectiva del paquete. ¿Recibes una respuesta? Si es así, ¿qué tipo de respuesta? ¿O el frontend simplemente nunca recibe una respuesta del backend? Esto puede ayudarle a encontrar la causa raíz.