Angular 服务器端渲染不断出现 502 错误

Angular 服务器端渲染不断出现 502 错误

我已经在服务器上运行前端几个星期了(Angular 服务器端渲染)。我一直遇到这个问题,前端出现 502 错误。我必须每隔几个小时重启一次服务器以确保它恢复正常。流量并不疯狂,一切似乎都很好(在我的控制台日志中 - 没有错误等),直到它突然崩溃。我重新启动 ssr 服务器的那一刻,它又正常工作了。我使用通用库,它是 Angular 中服务器端渲染的标准。可能是什么问题?我需要监控什么?RAM?CPU?还是其他?

答案1

HTTP 502 通常意味着一台服务器(发出 HTTP 502 响应的服务器)尝试与另一台服务器通信但失败了。

您提到重新启动“第一个”服务器(最终发出 502 的服务器)可以解决问题,这可能意味着该服务器存在某种非持久性问题。

可能的原因:

  • 内存耗尽:如果您的前端服务器必须产生新的进程或线程来与后端通信,则它可能无法执行此操作。

检查 RAM 利用率(free -m、top)和 RAM 限制,包括全局(/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来从数据包角度检查发生了什么。你收到回复了吗?如果是,什么样的回复?或者前端根本就没有收到来自后端的回复?这可能有助于你找到根本原因。

相关内容