家用住宅主机Linux网络延迟卡顿排查工具
前言:家用Linux主机网络延迟卡顿从哪下手?
很多人在家里跑Linux服务器(比如搭建NAS、个人网站或测试环境)时,会遇到网络延迟高、页面加载慢、SSH卡顿甚至掉线的情况。
问题可能出在路由器、网线、邻居占用带宽、本地进程占网,甚至是硬件驱动。
不用慌,这篇文章会用最直接的工具和命令,带你一步步找出原因。
安装必备网络排查工具
多数Linux发行版默认只带ping和traceroute,但我们需要更精细的工具。
以Ubuntu/Debian为例,打开终端执行:
sudo apt update
sudo apt install -y mtr iftop nethogs dstat tcpdump iperf3
如果是CentOS/RHEL系,用yum或dnf:
sudo yum install -y mtr iftop nethogs dstat tcpdump iperf3
这些工具的作用:
- mtr:结合ping和traceroute,实时看每一跳延迟和丢包
- iftop:实时显示每个连接占用的带宽
- nethogs:按进程显示流量占用
- dstat:系统资源+网络综合监控
- tcpdump:抓包分析(进阶,新手可先跳过)
- iperf3:测试本地网络最大带宽
用ping和mtr快速定位延迟点
第一步:简单ping测到公网
ping -c 10 114.114.114.114
连续发10个包,看平均延迟、最大延迟和丢包率。
如果延迟超过50ms或丢包>1%,说明网络状况差。
第二步:用mtr追踪路径
mtr -r -c 10 114.114.114.114
mtr会显示从你的主机到目标每一跳的延迟和丢包。
如果某一跳持续高延迟或丢包,那可能就是瓶颈。注意:中间路由可能有防火墙屏蔽ICMP,导致最后几跳显示100%丢包,这不一定是真的问题。
关注最后几跳之前的数据。
查看哪个进程在占网:iftop和nethogs
如果延迟不固定却经常卡顿,很可能是某个程序把上传带宽跑满了(比如BT下载、云同步、挖矿程序)。
用iftop看连接带宽
sudo iftop -i eth0
界面会显示所有对外连接的实时带宽。
按下t切换显示格式,按n显示IP而非域名。
看到某个IP持续占用大流量,记下来。
用nethogs看进程带宽
sudo nethogs eth0
直接列出每个进程的发送/接收速率。
如果你的种子下载器或同步软件占用高,立刻关掉测试。
网络压力测试与避坑指南
本地局域网带宽测试
怀疑是内网问题(比如网线、交换机),可以用iperf3:
在另一台电脑启动服务端:iperf3 -s
在本机启动客户端:iperf3 -c 192.168.1.x
看带宽是否接近理论值(千兆大约900Mbps,百兆约95Mbps)。远远低于则检查网线、网卡速率。
避坑说明
- 不要只看ping:ping延迟低不代表游戏或网页不卡,可能丢包在万分之一级别,需用mtr或丢包统计。
- 路由器QoS配置:如果发现某设备占满上行,可以在路由器里限制该设备的上传带宽。
- 无线干扰:家用住宅用WiFi的主机,延迟高先考虑无线干扰,用
iwconfig查看信号强度和建议改用网线测试。 - 防火墙屏蔽:某些VPS或运营商屏蔽ICMP,导致mtr显示星号但实际正常,请结合TCP测试(如iperf3)。
验证问题是否解决
完成排查和调整后,再次运行mtr和iperf3:
- mtr丢包率降低到0%,平均延迟与正常水平一致。
- iftop/nethogs显示流量平稳,不再有异常占用的进程。
- 打开网页或SSH时明显流畅。
如果问题依旧,建议检查网卡驱动(ethtool eth0),或者联系宽带运营商。
常见问题解答
Q:为什么mtr显示某一跳丢包100%?
A:大概率是该节点路由器禁ping,不代表真正丢包。关注下一跳和最终节点的丢包率。
Q:iftop显示大量未知IP怎么办?
A:按下n显示IP,然后用whois或在线工具查来源,可能是云同步或恶意流量。
Q:所有工具安装都说权限不够?
A:必须加sudo,这些工具需要读取网络接口数据。
Q:家里的主机还可以用哪些工具?
A:speedtest-cli可测公网带宽,nmap可扫描局域网设备,traceroute是mtr的前身。
希望这篇教程能帮你快速解决家用Linux主机的网络延迟卡顿问题。
如果你遇到其他奇怪现象,不妨从mtr和iftop开始,逐一排除。