1.
准备与收集基础信息
- 步骤:确认问题影响范围(单个用户、多地域还是全站)。
- 命令:在本地和其他地域客户端运行 ping -c 10 <服务器IP>、traceroute <服务器IP>(Windows 用 tracert)。记录延迟、丢包、跳点。
- 小贴士:同时记下服务器实例ID、区域(asia-east2 / asia-east1 等)、VPC 名称和网络标签,准备 gcloud 访问凭证用于后续操作。
2.
从客户端侧快速排查
- 步骤:确认是否为本地网络或ISP问题。
- 命令:使用 mtr -r -c 100 <服务器IP>(Linux/macOS),Windows 可用 WinMTR;用 curl -w "%{time_namelookup} %{time_connect} %{time_starttransfer} %{time_total}\n" -o /dev/null -s http://<域名>/ 测试 HTTP 时延。
- 小分段:若客户端到第几个跳点开始延迟升高,说明问题在该跳点或之后;若所有目标均慢,优先联系本地网络/ISP。
3.
在GCP控制台检查实例状态与网络设置
- 步骤:登录 GCP Console -> Compute Engine -> VM 实例,检查实例是否有 CPU/内存/磁盘抖动或重启记录。
- 操作:检查 VM 的网络接口、外部IP是否为 Ephemeral 或静态、是否使用共享 VPC 或 VPC 网络标签与安全组(防火墙规则)。
- 小分段:若实例处于高负载,先解决资源瓶颈(升级机器类型或调整负载),再继续网络诊断。
4.
检查 GCP 防火墙与路由配置
- 步骤:在 Cloud Console 或使用 gcloud 列出防火墙和自定义路由:gcloud compute firewall-rules list;gcloud compute routes list。
- 排查点:确认 ICMP、TCP/UDP 端口没有被误拦截,查看是否有优先级更高的路由将流量引导至 VPN/NGW。
- 建议:对测试期间临时放宽规则或在同一子网内创建测试实例进行互相 ping/iperf3 测试。
5.
使用 iperf3 测试吞吐与往返时延
- 步骤:在目标香港服务器上安装并启动 iperf3 服务:sudo apt-get install iperf3;iperf3 -s。
- 客户端运行:iperf3 -c <服务器IP> -P 4 -t 30 测试带宽,或加上 -R 测试服务器到客户端方向。
- 小分段:若带宽正常但延迟高,问题更可能是抖动或路径不稳定;若带宽也低,考虑链路拥塞或网络类型/策略限制。
6.
在实例内部进行 Linux 层级诊断
- 步骤:登录 VM(gcloud compute ssh),检查网络接口与队列:ip a、ethtool eth0、ss -s、ifconfig。
- 命令:查看丢包与错误:cat /proc/net/dev;查看 TCP 连接状态:ss -tnp;查看系统负载:top、vmstat 1 5。
- 小分段:若发现 TX/RX Errors、RX dropped 等,调查驱动、MTU、virtio 设置或是否存在内核队列溢出(txqueuelen)。
7.
检查 MTU、路径 MTU 与 TCP 参数
- 步骤:确认 MTU 值(ip link show dev eth0),若跨国链路或 VPN 可能需要降低 MTU(例如 1400)。
- 命令:使用 ping 带 DF 测试分片:ping -M do -s 1472 <目标>。
- 建议:调整 sysctl tcp 窗口与拥塞控制,如开启 BBR(sysctl -w net.ipv4.tcp_congestion_control=bbr),但先在非生产环境验证。
8.
利用 traceroute / mtr 定位延迟节点
- 步骤:在客户端和服务器端分别跑 traceroute 与 mtr,比较哪一侧出现延迟与丢包。
- 命令:traceroute -n
;mtr -r -c 100 。记录出现高延迟或丢包的第一个跳点。
- 小分段:若延迟集中在云服务商的边缘(靠近香港骨干),需联系 Google Cloud 支持并提供 mtr / traceroute 输出。
9.
使用 tcpdump / Wireshark 抓包分析
- 步骤:在服务器上用 tcpdump 抓取可疑流量:sudo tcpdump -i eth0 host <客户端IP> -w /tmp/capture.pcap。
- 分析点:查看重传、TCP 三次握手耗时、SYN-ACK 延迟、MTU 分片、ICMP 限速等。
- 小分段:将 pcap 下载到本地用 Wireshark 观察 RTT、重传、Duplicate ACK 判断问题是网络中间件还是主机问题。
10.
查看 Cloud Monitoring(原 Stackdriver)与 VPC Flow Logs
- 步骤:打开 Cloud Monitoring,查看实例的网络字节率、丢包率、RTT 指标(若已启用)。
- 操作:启用 VPC Flow Logs(子网级)以获得流量路径、源/目的地端口和丢包情况。
- 小分段:通过时间关联监控图表与抓包数据,可以确定是否为短时突发拥塞或持续问题。
11.
检查外部因素:DNS、CDN 与网络层优化
- 步骤:测试 DNS 解析时间:dig +stats <域名>;确认解析到的 IP 是否为香港节点或被错误解析到其他区域。
- 建议:若为网站访问延迟,使用 CDN(Cloud CDN或第三方)在边缘缓存静态资源,减轻跨境延迟带来的影响。
- 小分段:若 DNS 解析不稳定,可考虑使用 Cloud DNS 并开启 Geo DNS 策略。
12.
核查 GCP 网络拓扑:Cloud NAT、VPN、Interconnect
- 步骤:确认实例是否使用 Cloud NAT、是否走 Shared VPC、是否有 Cloud VPN/Interconnect 会影响路径。
- 操作:在 Console 查看 Cloud Router、VPN 拨号状态和 Interconnect 的 SLA 与带宽利用率。
- 小贴士:若存在跨境 VPN,可能是对性能影响最大的环节,测试绕过 VPN 的直连路径。
13.
长期优化建议与应急措施
- 建议:为关键业务选择 Premium 网络层(如果目前是 Standard),使用区域内负载均衡、多个区域部署并使用健康检查做容灾切换。
- 应急:在发现短时高延迟时,可临时将流量切换到备用区域或开启 Cloud CDN;同时创建支持工单并附上 mtr、tcpdump、Monitoring 图表供 GCP 支持分析。
- 小分段:记录每次调整并回滚验证,避免临时优化造成新问题。
14.
常用命令速查表(便于复制粘贴)
- ping -c 100 -i 0.2 ;mtr -r -c 100 ;traceroute -n ;sudo tcpdump -i eth0 host -w /tmp/cap.pcap。
- iperf3 -s(服务器);iperf3 -c -P 4 -t 30(客户端);gcloud compute firewall-rules list;gcloud compute routes list。
- 小分段:保留输出日志并按时间戳命名,便于与其他团队或 GCP 支持沟通。
15.
问:如果 traceroute 显示某一跳延迟飙升,下一步怎么做?
答:首先确认该跳点是否属于本地 ISP、传输骨干还是 GCP 边缘,通过 whois/traceroute 判断 AS。若属 ISP,联系 ISP 并提供 mtr 输出;若在 GCP 桥接节点,提交 GCP 支持工单并附上 mtr/traceroute、时间窗口与实例信息,GCP 会在骨干层面排查。
16.
问:如何判断是 VM 本身的网络问题还是外部链路问题?
答:在 VM 内部运行本地环回测试(ping 127.0.0.1)、内网互测(同子网内其他 VM),以及外网测试(到公网 IP)。若内网互测正常但外网延迟高,问题更可能在外部链路或云边缘;若内网也不稳定,应先排查 VM 驱动/队列/资源问题。
17.
问:提交给 Google 支持时需要提供哪些关键信息?
答:提供问题发生时间段、受影响实例 ID 与 zone、公网/内网 IP、完整的 mtr/traceroute 输出、ping 报告、tcpdump pcap(如有)、Cloud Monitoring 图表截图、已尝试过的调整(如 MTU、BBR、升级机型)。越完整的信息能加速支持定位与修复。
来源:实战手册 谷歌云香港服务器延迟高时的网络诊断步骤