1.1 使用基础连通性工具:在VPS上运行 ping 目标(如 8.8.8.8)检查丢包与时延:ping -c 10 8.8.8.8。若丢包/延迟异常,继续下一步。
1.2 路径追踪定位跳点:使用 traceroute(Linux)或 tracert(Windows):traceroute -n 1.2.3.4。观察在哪一跳开始丢包或时延剧增,标记运营商边界。
1.3 使用 mtr 做连续诊断:mtr -rw 1.2.3.4,可看到每跳丢包率和延迟波动,便于判断是链路中间段问题还是目标端问题。
1.4 测试带宽吞吐:安装并使用 iperf3:在本地或其他节点运行 iperf3 -s,然后在VPS上 iperf3 -c server_ip -P 4 -t 30。比较单线程与多线程带宽,若多线程接近带宽上限但单线程远低,考虑TCP窗口/并发限制。
2.1 查看接口状态:ip addr show 或 ifconfig -a,确认接口 UP,IP、MTU 正确。
2.2 查看错误计数与带宽利用:cat /proc/net/dev 或使用 ethtool -S eth0,检查 RX/TX errors、dropped、overruns。如有错误,重启网卡:ip link set dev eth0 down && ip link set dev eth0 up,并记录变化。
2.3 检查与调整 MTU:如果路径MTU问题导致分片,可在两端测试 MTU:ping -M do -s 1472 目标。根据结果调整 /etc/network/interfaces 或 cloud-init 配置。
3.1 确认进程在运行:使用 ss -tunlp | grep :80 查端口占用,或 systemctl status nginx。
3.2 通过 curl 或 telnet 测试服务响应:curl -I http://127.0.0.1:80 检查响应头;telnet 127.0.0.1 3306 测试数据库端口连通。
3.3 若服务响应慢,用 strace 或 perf 跟踪:strace -p PID -s 200 -o /tmp/strace.out 可查看系统调用阻塞;nginx 可启用 stub_status 查看活动连接数。
4.1 实时查看负载:top 或 htop,查看 CPU/负载是否飙高,定位占用最高的进程。
4.2 内存与交换:free -m 查看内存与 swap 使用,若大量 swap 则会影响网络性能,需扩大内存或优化进程。
4.3 磁盘IO 检查:iostat -x 1 3 或 iotop 查看磁盘利用率(await、%util)。若 I/O 高,数据库或日志写入可能拖慢请求,考虑升级磁盘或调整缓存参数。
5.1 检查本地防火墙规则:iptables -L -n -v 或 nft list ruleset。确认没有拒绝/限速规则意外阻断端口。
5.2 检查云平台安全组规则:登录管理面板检查入站/出站规则,确保没有误配置限制带宽或最大连接数。
5.3 常见内核参数:sysctl net.core.somaxconn、net.ipv4.tcp_max_syn_backlog、net.ipv4.tcp_tw_reuse 等,必要时增大:sysctl -w net.core.somaxconn=1024,并写入 /etc/sysctl.conf。
6.1 快速检测流量源:使用 iftop、nethogs、ip -s link,或更专业的 tshark 抓包:tcpdump -i eth0 -n -w /tmp/capture.pcap。查看是否为少数 IP 发起大量请求。
6.2 临时缓解措施:对来源 IP 添加 ipset + iptables 黑名单;示例:ipset create badips hash:ip && ipset add badips 1.2.3.4 && iptables -I INPUT -m set --match-set badips src -j DROP。
6.3 长期防护:建议启用云端DDoS防护、流量清洗(如CDN/第三方防护)与限流策略(nginx limit_req、fail2ban)。
7.1 检查云平台告警与维护通知:先查控制台是否有宿主机维护或网络中断公告。
7.2 对比同机房/同宿主其他实例:如果同地的其它VPS也有问题,说明是宿主机或上游网络问题,需向厂商工单反馈,并提供 traceroute/iperf3/ifconfig 输出。
7.3 若被迁移或超售造成性能问题,记录时间窗口内的监控图并提交给供应商,必要时申请迁移或更换宿主。
问:VPS网络出现突然大量丢包,第一时间如何排查并定位故障点?
答:第一步用 ping 检查目标(公网DNS等),第二步用 mtr 或 traceroute 确定是哪一跳开始丢包,第三步在VPS上用 iperf3 测速确认带宽是否受限,第四步查看网卡错误(cat /proc/net/dev、ethtool -S),第五步检查云控制台是否有公告或宿主机问题记录,若怀疑DDoS则抓包(tcpdump)并临时用 ipset+iptables 拉黑高流量源,然后将所有诊断结果打包提交给供应商。
问:用户反映网站慢,是应用程序导致还是网络带宽/链路问题?
答:先用 curl -I 本地回环和外部访问对比本地延迟与外网延迟;若本地(127.0.0.1)响应快速但外网慢,优先检查网络(ping/mtr/iperf3);若外网到VPS层面延迟正常,则用 top、strace、慢查询日志(如 MySQL slow query)排查应用性能,结合 iostat 查看磁盘IO是否为瓶颈。
问:带宽几乎被占满,但使用 iftop/nethogs 未发现明显流量源,该如何继续深挖?
答:先用 tcpdump 抓取一段高峰时段流量(tcpdump -i eth0 -s 0 -w /tmp/peak.pcap),然后用 Wireshark/ tshark 统计目的地与协议分布(tshark -r peak.pcap -q -z io,phs)。如果是小包高频的UDP流量,可能为放大攻击,注意查看源端口与目的端口特征;还可在路由器/交换机层面请求上游提供流量镜像/流量统计,配合云厂商流量日志(Flow logs)定位上游流量来源。