[英]“502 bad gateway” - 1MB limit static page served from AWS Lambda to Application Load Balancer
[英]AWS Load Balancer 502 Bad Gateway
我有用應用程序負載均衡器托管在 EC2 上的 node/express 編寫的微服務。
一些用戶甚至在請求到達服務器之前就收到了 502。
我在每個實例中注冊每個日志,我沒有這些請求的日志,我在 502 之前有請求,在 502 之后有請求,這就是為什么我假設請求永遠不會到達服務器的原因。 大多數用戶通過刷新頁面或使用匿名選項卡來解決這個問題,這會連接到不同的機器(我們有 6 個)。
我可以從負載均衡器日志中看出,負載均衡器幾乎立即以 502 響應請求。我猜這可能是 TCP RST。
很久以前也遇到過類似的問題,不得不在節點配置中加入keepAliveTimeout
和headersTimeout
。 這是我的設置(仍然使用 60 年代的 LB 默認值):
server.keepAliveTimeout = 65000;
server.headersTimeout = 80000;
所有實例的指標,尤其是 memory 和 CPU 使用率都很好。
這些 502 錯誤是在我們進行更新后開始的,我們在其中引入了幾個包,例如 axios。 一開始我以為可能是axios,因為默認沒有開啟keep-alive。 但它沒有用。 除了axios 之外,我們只使用請求。
關於我應該如何調試/修復此問題的任何提示?
從 ALB 訪問日志中,我知道 ALB 無法連接目標,或者連接正在被目標立即終止。
最困難的部分是弄清楚如何復制 502 錯誤。
看起來我使用的節點版本的請求標頭大小限制為 8kb。 如果任何請求超過該限制,目標將拒絕連接,並且 ALB 將返回 502 錯誤。
解決方案:
我通過在節點啟動命令行中添加--max-http-header-size=size解決了這個問題,其中 size 是一個大於 8kb 的值。
AWS 負載均衡器 502 錯誤網關的幾個常見原因:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.