用握手当轻量探针
TCP 三次握手只花一个往返、不含任何应用逻辑,用它当探针可以把网络质量从业务耗时里剥离出来。定时对目标端口做握手计时,得到的序列能直接反映链路往返延迟与丢包趋势。如果服务走 TLS,握手还能分成传输层握手与应用层握手两段,分别对应网络开销和服务端处理开销。
基本信息
| 探针口径 | time_connect(TCP 握手)、time_appconnect(含 TLS 握手) |
|---|---|
| 采样方式 | 定时多轮采集,看分布而不看单点 |
| 频率约束 | 高频探测本身既是负载也是噪音 |
| 选择原则 | 探针目标要与业务同路径、同机房 |
典型使用场景
- 建立网络质量基线,与业务延迟指标对照分析
- 判断业务变慢出在网络还是应用:握手稳定而总耗时上升
- 线路或设备变更前后对比链路质量
- 多地域、多可用区的可达性与延迟巡检
- 作为监控告警输入,触发更细致的抓包分析
多轮握手计时
多轮握手计时
for i in $(seq 1 20); do
curl -s -o /dev/null -w '%{time_connect} %{time_appconnect} %{time_total}\n' https://api.example.com/
sleep 1
done
# time_connect 反映 TCP 握手,time_appconnect 是叠加 TLS 握手后的累计值,time_total 是完整请求
# 记录每轮的结果做分布分析,不要只看某一次输出字段读法
| 字段 | 含义 | 异常时的指向 |
|---|---|---|
| time_connect | TCP 握手耗时 | 网络往返延迟与丢包 |
| time_appconnect | 叠加 TLS 握手后的累计值 | 证书链长或握手往返偏多 |
| time_total | 完整请求耗时 | 应用处理与服务端性能 |
| curl 退出码 | 请求结果 | 超时、连接被拒或解析失败 |
探针频率要控制。高频探测本身既是负载也是噪音,还容易触发安全设备的限速。分钟级采样配较长的观察窗口,通常比每秒一探更有说服力,也更容易解释趋势。
探针目标要选与业务同路径、同机房。跨运营商或跨机房的探针数字不能直接用来解释业务延迟,路径不同结论就不同,混用会造成误判。
排查顺序
- 先用探针确认网络层是否稳定,与业务耗时分开看
- 区分 TCP 握手与 TLS 握手,定位是网络往返还是服务端处理慢
- 多地域同时采样,判断是普遍劣化还是局部路径问题
- 与历史基线比较,而不是与其他地域横向比较
- 把探针结论与抓包证据配对,报告里注明采样时间与频率