所以我已經在伺服器上運行我的前端幾週了(角度伺服器端渲染)。我一直遇到這個問題,前端出現 502 錯誤。我必須每隔幾個小時重新啟動伺服器以確保其備份。流量並不瘋狂,一切似乎都很好(在我的控制台日誌中 - 沒有錯誤等),直到它突然下降。當我重新啟動 ssr 伺服器時,它再次正常工作。我使用通用庫,它是 Angular 中伺服器端渲染的標準。可能是什麼問題?我需要監控什麼?記憶體?中央處理器?還有別的事嗎?
答案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
。
我還會運行 atcpdump -nni any host <backend ip> -v
從資料包的角度檢查發生了什麼。你收到回覆了嗎?如果是的話,什麼樣的回覆?還是前端根本沒有得到後端的回覆?這可能會幫助您找到根本原因。