1. 程式人生 > 其它 >【效能壓測】壓測k8s的slb時,發現報錯502/504問題追蹤

【效能壓測】壓測k8s的slb時,發現報錯502/504問題追蹤

問題描述
對SLB例項進行壓測,出現504狀態碼、請求超時的現象。壓測的URL配置了HTTPS監聽的URL轉發策略,且該轉發策略並沒有啟用健康檢查。

問題原因


檢視日誌服務中的SLB例項日誌,發現大部分請求都出現504狀態碼,但是upstream_response_time值都非常有規律,響應時間都是5秒,該情況是SLB與後端伺服器TCP三次握手失敗,導致連線超時丟擲504狀態碼。
說明:檢視該日誌需要您開通日誌服務。

登入後端伺服器,排查發現Nginx日誌沒有異常,但是messages日誌存在“nf_conntrack:tablefull,droppingpacket”錯誤。

該資訊是因為Linux系統為每個經過核心網路棧的資料包,都生成一個新的連線記錄項,當伺服器處理的連線過多時,連線跟蹤表無法記錄新的連線記錄項,伺服器會丟棄新建連線的資料包。

所以導致SLB和後端伺服器TCP三次握手失敗,出現504狀態碼。

解決方案
建議調整nf_conntrack引數,調整命令如下所示,引數值請以實際情況為準。

說明:該方法會臨時修改引數,重啟例項後配置會不生效。

sysctl-wnet.netfilter.nf_conntrack_max=1048576
sysctl-wnet.netfilter.nf_conntrack_buckets=262144
sysctl-wnet.netfilter.nf_conntrack_tcp_timeout_established=3600


確認壓測正常即可。