1) 用 ping 测试到目标 IP(例如负载均衡、后端服务或客户 IP):ping -c 20 x.x.x.x。观察丢包率与平均 RTT。
2) 用 traceroute 或 tcptraceroute 定位跳点异常:traceroute -n x.x.x.x 或 tcptraceroute x.x.x.x 443,记录在哪一跳出现延迟激增或丢包。
3) 用 mtr 进行长期链路监控:mtr -rwzbc 100 x.x.x.x,保存输出(mtr 可同时显示延迟和丢包,便于定位链路问题)。
1) 登录新加坡区域(ap-southeast-1 或供应商对应区域)控制台查看网络事件、维护通知或BGP变更公告。
2) 检查实例的网络健康页(Cloud Monitor / Network Insights),查看链路抖动、带宽利用及丢包趋势图。
3) 若发现云侧问题,立刻工单联系厂商并提供 traceroute/mtr 输出与时间窗口,便于厂商排查。
1) 使用 top、htop、vmstat 查看 CPU/IO 等资源是否被耗尽:top -b -n1 或 vmstat 1 5。
2) 用 sar 或 dstat 查看网络吞吐历史:sar -n DEV 1 5 或 dstat -tn --output file。
3) 检查网卡队列是否拥堵,查看 ifconfig/ethtool:ethtool -S eth0 | grep tx_queue 或 cat /proc/interrupts,看中断分布是否不均。
1) 核对安全组/ACL 是否误限速或有 Drop 规则,确认端口、协议和源/目的规则无误。
2) 在负载均衡控制台查看后端健康检查和响应时间、并发连接数;若后端健康异常,按健康检查日志排查应用层问题。
3) 若使用 NAT/弹性IP,检查 SNAT 池是否耗尽(连接追踪表满会造成延迟或丢包)。
1) 用 curl 或 wget 测试应用接口响应时间:curl -s -w "%{time_total}\n" -o /dev/null http://backend/service。
2) 查看应用日志(/var/log/ 或容器日志)是否有慢查询、线程池耗尽或锁等待,针对数据库执行慢查询分析(EXPLAIN、慢查询日志)。
3) 若是容器化部署,检查 Pod/容器的 liveness/readiness,及 kube-proxy 和 CNI 插件的网络延迟。
1) 在受影响实例抓包:sudo tcpdump -i eth0 host x.x.x.x and tcp -w /tmp/cap.pcap,抓取短时间样本并下载本地用 Wireshark 分析 RTT、重传、窗口缩小等现象。
2) 查看 TCP 重传、零窗口或 RST:在 Wireshark 过滤 tcp.analysis.retransmission 或 tcp.window_size。
3) 若怀疑队列或带宽问题,可用 tc qdisc 查看和限制策略:tc -s qdisc show dev eth0。
1) 使用 ping 测试 MTU:ping -M do -s 1472 x.x.x.x(1472+28=1500),逐步降低包长找出丢包的最大 MTU。
2) 查看网卡 offload 设置:ethtool -k eth0,若出现分片或校验错误,尝试关闭 tx offload、rx offload 做对比:ethtool -K eth0 tx off rx off。
3) 检查内核 TCP 参数:sysctl net.ipv4.tcp_window_scaling、tcp_rmem、tcp_wmem,必要时调整缓冲区。
问:如何快速判断是云侧网络问题还是服务器本身导致延迟?
答:先从实例发起 traceroute/mtr 到外部和到同机房内其他实例;若跨多个跳点出现丢包/延迟,多为云侧或上游链路问题;若仅该实例内部高延迟且本机资源(CPU、IO、网卡队列)异常,则为实例自身问题。结合云控制台网络事件和 provider 的监控指标可快速确认。
问:抓包后看到大量重传,下一步如何处理?
答:先确认重传发生在本地出口还是远端入口:对比双方抓包时间戳;检查链路丢包点(mtr);检查网卡错误、队列溢出、MTU 不匹配及安全组丢包规则;如均正常,联系云厂商提供链路层抓包并处理 BGP/物理链路问题。
问:临时缓解延迟有哪些快速手段?
答:可先做流量分流:切换到健康后端、增加实例水平扩容、调整负载均衡权重;临时关闭不必要的进程以释放 CPU/IO;调整 TCP cwnd/窗口增大缓冲;若为云侧故障,申请临时迁移到同区域其他可用区或切换到备用线路。