项目官网某接口接入CLB后,10台机器,QPS只能打到4.44k, 但通过ip:port 直连后端单台机器 ,QPS能达到9.43k。CLB 连接10 台后端服务器容量,不及IP直联1台服务器的容量。
压测流量链路图如:
jmeter -> node接入层 -> CLB -> 后端10台机器:qps 4.44k,错误率6% ,504超时(Node等待后端超时)
jmeter -> node接入层 -> ip:port -> 后端单台机器:qps 9.43k
1.首先怀疑是CLB限频问题。
从上面的现象来看,引入的变量是CLB,而且波形图也是比较典型的限频问题,所以一开始怀疑CLB是不是做了限频操作。拉了CLB的同学一起来分析,他们比较有经验的提出了排查问题的思路:简化问题,抓包分析。如何简化呢?
2.抓包分析。对接入层CVM的子机和母机,RS的子机和母机分别抓包,没有发现超时包。
3.重新聚焦504 timeout问题,发现Node接入层的响应时间都集中在5秒的倍数上,具有统计学规律。研发同学结合经验推测问题可能出现在DNS域名解析服务上。
4.在母机上使用iptables -t mangle -nvL ,确认是DNS限频问题。
5.在子机上尝试打开DNS缓存服务。
yum install -y nscd
systemctl enable nscd
systemctl start nscd
6.修改后验证,问题得已解决。
1. 为何母机要有DNS限频?其原因是对内网服务保护。所以一般是没有权限去看母机的一些限制,需要找网络的人去看。
2. 为何抓包没有抓到超时包?其原因是指定port抓包,并没有抓到53端口dns包。比如可以使用tcpdump -i any -w /data/test.cap
命令抓所有的包,缺点是包会比较大。
3. 整个网络链路就像洪水一样,到底被那个环节拦住,是需要一环一环的去分析排查。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。