1.
问题概述与场景确认
描述:先明确延迟症状(ping高、抖动、丢包或应用层慢)。操作:在本地与服务器同时运行 ping -c 50 your.server.ip 和 curl -w '%{time_total}\n' -o /dev/null -s https://your.domain 来对比网络与应用延迟。2.
基础网络测量(建立基线)
步骤:在本机与服务器分别执行:ping -c 100 -i 0.2 your.server.ip;traceroute -n your.server.ip(或在Linux用 traceroute -n -w 2);mtr -rwzbc 100 your.server.ip 保存结果。记录时间段、丢包率、最大/平均延迟。3.
定位延迟点(逐跳排查)
步骤:使用 mtr 观察哪一跳开始延迟或丢包;若疑似最后一跳(机房)问题,使用 tcpdump 抓包排查:tcpdump -i eth0 host CLIENT_IP and port 443 -w /tmp/cap.pcap;在抓包中观察重传、RTO、TCP三次握手时间。4.
链路吞吐与抖动测试
步骤:部署 iperf3 服务端(服务器上运行 iperf3 -s),本地客户端执行 iperf3 -c server.ip -t 60 -i 10 查看带宽和丢包;用 ping -f 或 ping -i 0.05 检测瞬时抖动。记录时间段以便与提供商沟通。5.
服务器内核与TCP调优(实操示例)
步骤:编辑 /etc/sysctl.d/99-net.conf 添加并执行 sysctl -p。例如:net.core.netdev_max_backlog=250000;net.core.rmem_default=262144;net.core.wmem_default=262144;net.ipv4.tcp_window_scaling=1;net.ipv4.tcp_congestion_control=bbr(先确认内核支持)。应用后用 ss -tuna 查看连接状态。
6.
启用或排查 BBR、调整端口与TIME-WAIT
步骤:查看是否有 BBR:sysctl net.ipv4.tcp_congestion_control;如需启用:echo "bbr" > /etc/modules-load.d/bbr.conf && sysctl -w net.ipv4.tcp_congestion_control=bbr。修改临时端口池:sysctl -w net.ipv4.ip_local_port_range="10240 65535" 并调整 tcp_fin_timeout=30。7.
网卡层与MTU、Offload 调整
步骤:检查 ethtool -k eth0,若有不当 offload(GRO/TSO)可测试关闭:ethtool -K eth0 tso off gso off gro off;视情况调整 MTU(如遇VPN/隧道问题将 mtu 降到1400):ip link set dev eth0 mtu 1400。每次修改后重复 ping/mtr 验证。8.
应用层与CDN/缓存优化
步骤:在 Nginx 中开启 keepalive、gzip、HTTP/2 并降低 TLS 握手成本:keepalive_timeout 65; sendfile on; tcp_nopush on; ssl_session_cache shared:SSL:10m; 若面向全球用户,建议在前端加 CDN(Anycast)并设置地理负载均衡。9.
联系运营商/机房及提供支持材料
步骤:若判断为机房侧或中间路由问题,向腾云驾雾提交工单并附上:mtr 输出、traceroute 输出(带时间戳)、tcpdump pcap、iperf3 日志、受影响时间窗口。明确说明影响范围、峰值样本以便对方排查BGP/链路。10.
监控与回归验证
步骤:部署长期监控(Prometheus+node_exporter、Grafana、Blackbox exporter)监测 RTT、丢包与抖动;实施变更后对比基线指标。示例alert:当5分钟平均ping丢包率大于2%时触发告警。11.
常见问答一
问:如何快速判断是机房网络问题还是服务器配置问题? 答:优先用 mtr/traceroute 定位首跳到哪一跳延迟和丢包,再用服务器本地抓包(tcpdump)看是否为本机重传或拥塞;若问题在最后一两跳且多用户受影响,通常是机房或上游网络。12.
常见问答二
问:启用 BBR 会有哪些风险? 答:BBR 能降低延迟并提高带宽利用,但在某些旧内核或特定硬件下可能引发公平性问题或需要调整缓冲区;上线前务必在测试环境进行负载回归,并监控丢包/延迟变化。13.


