【性能压测】压测k8s的slb时,发现报错502/504问题追踪

问题描述
对SLB实例进行压测,出现504状态码、请求超时的现象。压测的URL配置了HTTPS监听的URL转发策略,且该转发策略并没有启用健康检查。

 

 

问题原因

 

 


查看日志服务中的SLB实例日志,发现大部分请求都出现504状态码,但是upstream_response_time值都非常有规律,响应时间都是5秒,该情况是SLB与后端服务器TCP三次握手失败,导致连接超时抛出504状态码。
说明:查看该日志需要您开通日志服务。

 

 

登录后端服务器,排查发现Nginx日志没有异常,但是messages日志存在“nf_conntrack: table full, dropping packet”错误。

该信息是因为Linux系统为每个经过内核网络栈的数据包,都生成一个新的连接记录项,当服务器处理的连接过多时,连接跟踪表无法记录新的连接记录项,服务器会丢弃新建连接的数据包。

所以导致SLB和后端服务器TCP三次握手失败,出现504状态码。

 

解决方案
建议调整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


确认压测正常即可。

posted @ 2021-10-11 16:08  DarryRing  阅读(757)  评论(0编辑  收藏  举报