全部產品
Search
文件中心

:SLB執行個體壓測請求逾時

更新時間:Jan 17, 2025

說明

免責聲明: 本文檔可能包含第三方產品資訊,該資訊僅供參考。阿里雲對第三方產品的效能、可靠性以及操作可能帶來的潛在影響,不做任何暗示或其他形式的承諾。

問題描述

對SLB執行個體進行壓測,出現504狀態代碼、請求逾時的現象。壓測的URL配置了HTTPS監聽的URL轉寄策略,且該轉寄策略並沒有啟用健全狀態檢查。

image

問題原因

  1. 查看Log Service中的SLB執行個體日誌,發現大部分請求都出現504狀態代碼,但是upstream_response_time值都非常有規律,回應時間都是5秒,該情況是SLB與後端伺服器TCP三向交握失敗,導致連線逾時拋出504狀態代碼。

    說明

    說明:查看該日誌需要您開通Log Service。

    image

  2. 登入後端伺服器,排查發現Nginx日誌沒有異常,但是messages日誌存在“nf_conntrack: table full, dropping packet”錯誤。該資訊是因為Linux系統為每個經過核心網路棧的資料包,都產生一個新的串連記錄項,當伺服器處理的串連過多時,串連跟蹤表無法記錄新的串連記錄項,伺服器會丟棄建立串連的資料包。所以導致SLB和後端伺服器TCP三向交握失敗,出現504狀態代碼。

解決方案

  1. 建議調整nf_conntrack參數,調整命令如下所示,參數值請以實際情況為準。

    說明

    說明:該方法會臨時修改參數,重啟執行個體後配置會不生效。

    sysctl -w net.netfilter.nf_conntrack_max=1048576
    sysctl -w net.netfilter.nf_conntrack_buckets=262144
    sysctl -w net.netfilter.nf_conntrack_tcp_timeout_established=3600

  2. 確認壓測正常即可。

適用於

  • Server Load Balancer

  • Elastic Compute Service