> 技术文档 > istio tcp连接超时测试

istio tcp连接超时测试

除了 tc 以外,以下这些工具和方法也可以用来在 Istio 中测试 TCP 连接超时(connectTimeout),包括控制连接建立时间、模拟端口不可达、无响应服务等:


✅ 1. iptables —— 拦截并丢弃 SYN 包(最直接控制连接建立阶段)

你可以在目标 Pod 上使用 iptables 丢弃 TCP 请求,模拟连接超时:

# 丢弃目标端口上的 SYN 请求(例如 8080)iptables -A INPUT -p tcp --dport 8080 --syn -j DROP

📌 效果

  • 发起请求的 client 会“连接不成功但不立即失败”,最终因 connectTimeout 超时。

🔄 恢复规则:

iptables -F

在 Istio 中测试 TCP 连接超时(connectTimeout) 主要是验证 Envoy 在发起 TCP 连接时,如果在指定时间内无法完成三次握手,会主动终止连接。这个设置一般在 DestinationRule 中配置:

apiVersion: networking.istio.io/v1beta1kind: DestinationRulemetadata: name: my-service-drspec: host: my-service.default.svc.cluster.local trafficPolicy: connectionPool: tcp: connectTimeout: 5s

✅ 方法二:目标服务使用 tc 命令故意延迟 TCP 响应

步骤:

  1. 在被访问的 Pod 上使用 tc 工具增加延迟:
# 延迟响应 SYN-ACK 包tc qdisc add dev eth0 root netem delay 10s
  1. 设置 connectTimeout: 5s,然后从业务容器访问该服务
curl my-service.default.svc.cluster.local:8080

预期效果:

  • 请求约 5 秒后失败
  • 返回 503,proxy 日志中看到 connection timeout 类似字样