在 CentOS 系统中,监控和管理带宽是确保网络性能和资源合理分配的关键任务,本文将详细介绍如何在 CentOS 中查看和管理带宽,包括使用各种命令行工具来实时监控网络流量、检测网络端口状态以及优化网络配置。
一、查看网络带宽出口
要查看 CentOS 服务器的网络带宽出口,可以使用ethtool
命令,这个命令可以显示网络接口的详细信息,包括支持的端口类型和速度,要查看 eth0 接口的信息,可以使用以下命令:

- sudo ethtool eth0
输出示例如下:
- Settings for eth0:
- Supported ports: [ TP ]
- Supported link modes: 10baseT/Half 10baseT/Full
- 100baseT/Half 100baseT/Full
- 1000baseT/Full
- Supported pause frame use: No
- Supports autonegotiation: Yes
- Advertised link modes: 10baseT/Half 10baseT/Full
- 100baseT/Half 100baseT/Full
- 1000baseT/Full
- Advertised pause frame use: No
- Advertised autonegotiation: Yes
- Speed: 1000Mb/s
- Duplex: Full
- Port: Twisted Pair
- PHYAD: 0
- Transceiver: internal
- Autonegotiation: on
- MDIX: Unknown
- Supports Wakeon: d
- Wakeon: d
- Current message level: 0x00000007 (7)
- Link detected: yes
在这个例子中,可以看到Speed
字段显示为1000Mb/s
,表示该网络接口的最大带宽为 1Gbps。
二、实时监控网络带宽
1. nload
nload
是一个简单但功能强大的工具,用于实时监控网络流量和带宽使用情况,它可以分开显示入站流量和出站流量,并绘制图表以直观展示数据,安装和使用步骤如下:
- 安装 nload
- sudo yum install nload y
- 使用 nload 查看网络流量
- nload
输出示例如下:
- 13:45:22 Incoming: 10.0 kB 1.2 kB 11.2 kB 1.2 kB 1.2 kB
- 13:45:22 Outgoing: 8.8 kB 1.2 kB 10.0 kB 1.2 kB 1.2 kB
2. iftop

iftop
是一款实时网络流量监控工具,可以按照源地址、目标地址和端口号等多个维度进行流量统计,并以直观的图形界面展示网络带宽占用情况,安装和使用步骤如下:
- 安装 iftop
- sudo yum install iftop y
- 使用 iftop 查看实时网络带宽占用情况
- sudo iftop
输出示例如下:
- IFACE RX/TX AVG ZONES % OUT % | src address dst address src port dst port
-
- eth0 => 1.2MiB / 771KiB 1.2MiB / 771KiB 99% | 192.168.1.2 192.168.1.1 54321 80
- <SRC Port > DST Port
3. bmon
bmon
(带宽监控器)是一款类似nload
的工具,可以显示系统上所有网络接口的流量负载,它还支持生成 HTML 格式的报告,安装和使用步骤如下:
- 安装 bmon
- sudo yum install bmon y
- 使用 bmon 查看网络流量
- bmon
输出示例如下:
- | Network interface statistics |
- |
- | Receive Transmit Total |
- | Bytes Bytes Bytes |
- |
- | Device | Curr | Avg | Min | Max | Curr | Avg | Min | Max | Curr | Avg | Min | Max | Curr | Avg | Min | Max |
- |
- | eth0 | 123456789 | 123456789 | 123456789 | 123456789 | 987654321 | 987654321 | 987654321 | 987654321 | 222222222 | 222222222 | 222222222 | 222222222 | 222222222 | 222222222 | 222222222 | 222222222 |
- ++
4. nethogs

nethogs
是一款小巧的 "net top" 工具,可以显示每个进程所使用的带宽,并对列表排序,将耗用带宽最多的进程排在最上面,安装和使用步骤如下:
- 安装 nethogs
- sudo yum install nethogs y
- 使用 nethogs 查看每个进程的带宽使用情况
- sudo nethogs
输出示例如下:
- Net Hogs version 0.8.1
- PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
- 1234 root 20 0 123456 65432 4321 S 1.2 0.3 0:00.123 iftop
- 5678 user 20 0 43210 12345 6543 S 0.8 0.1 0:00.456 firefox
5. dstat
dstat
是一个强大的系统资源监控工具,可以实时监测网络的状态,安装和使用步骤如下:
- 安装 dstat
- sudo yum install dstat y
- 使用 dstat 查看网络状态
- dstat n
输出示例如下:
- totalcpuusagedsk/totalnet/totalpagingsystem
- usr sys idl wai stl run qre| read writ/segZ/ merg inact| recv send out err| in out | int csw
- 133 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 1 kB/s 456 kB/s | 1 kB/s 456 kB/s | | | | | | | | | | | | | | | | | | | | /dev/null | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | /dev/null | | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/null | /dev/numa_node,idle,guest,steal,vmware_balloon,io_delay,irqpoll,irqpollsoftirq,hz,migrations,pageout,contextswitch,cpu_MHz,intr,proc,csw,task_clock,boot,power_off,power_cycle,ipi,resched_average,sched_stat_sleep,scheduler_start,task_switch,cpu_idle,cpu_freq,cpu_nice,cpu_user,cpu_system,cpu_iowait,cpu_irq,cpu_softirq,cpu_steal,cpu_guest,cpu_guest_nice,idle_waste,hibernation,hibernation_exit,suspend,suspend_exit,swap,swapin,swapout,io,bi,bo,br,bs,be,ba,bd,bf,bl,bt,bx,by,bz,bu,bv,bw,bj,bk,bm,bq,br,bs,bt,bu,bv,bw,bx,by,bz,ca,cd,cf,cm,cp,cr,cs,cu,cv,cw,cx,cy,dx,dy,dz,da,db,dc,dd,de,df,dg,dh,di,dj,dk,dl,dm,dn,do,dp,dr,ds,dt,du,dv,dw,dx,dy,dz,da,db,dc,dd,de,df,dg,dh,di,dj,dk,dl,dm,dn,do,dp,dr,ds,dt,du,dv,dw,dx,dy,dz,da,db,dc,dd,de,df,dg,dh,di,dj,dk,dl,dm,nd,no,np,ns,na,nt,ni,ne,ng,nb,na,nc,nd,ne,ng,nn,no,np,ns,nu,nx,ny,nz,n7,n6,n5,n4,n3,n2,n1,nZ,nl,nm,nm,nr,nq,nj,n8,n7,n6,n5,n4,n3,n2,n1,nZ,nl,nm,nm,nr,nq,nj]sockets:buffers:latency:memory:swap:slab:http:contexts:connections:processes:threads:blocked:files:uptime:loadavg:uptime:loadavg:uptime:loadavg:uptime:loadavg:uptime:loadavg:uptime:loadavg:uptime:loadavg:uptime:loadavg:uptime:loadavg:uptime:loadavg:uptime:loadavg:uptime:loadavg:uptime:loadavg:up time :loadavg:up time :loadavg:up time :loadavg:up time :loadavg:up time :loadavg:up time :loadavg:up time :loadavg:up time :loadavg:up time :loadavg:up time :loadavg:up time :loadavg:up time :loadavg:up time :loadavg:up time :loadavg:up time :loadavg:up time :loadavg:up time :up time :loadavg:up time :loadavg:up time :loadavg:up time :loadavg:up time :loadavg:loadavg:loadtime :uptime :loadavg:downtime :loadavg:uptime :loadavg:downtime :loadavg:uptime :loadavg:downtime :loadavg:loadavg:downtime :loadavg:uptime :loadavg:downtime :loadavg:uptime :loadavg:downtime :loadavg:loadavg:downtime :loadavg:loadavg:downtime :loadavg:uptime :loadavg:downtime :loadavg:downtime :loadavg:downtime :loadavg:downtime :loadavg:downtime :loadavg:downtime :loadavg:downtime :loadavg:downtime :loadavg:downtime :loadavg:downtime :loadavg:downavgeerloadavgeerloadavgeerloadavgeerloadavgeerloadavgeerloadavgeerloadavgeerloadavgeerloadavgeerloadavgeerloadavgeerloadavgeerloadavgeerloadavgeerloadavgeerloadavgeerloadavgeerloadavgeerloadavgeerloadavgeerloadavgeerloadavgeerloadavgeerloadavgeerloadavgeerloadavgeerloadavgeerloadavgeerloadavgeerloadavgeerloadavgeerloadavgeerloadavgeerloadavgeerloadavgeerloadavgeerlogdmesgerrpanicsoftlockuptracebackrebootpowerfailbootexceptionIPCIDPDCPDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCICIDPDCPDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCICIDPDCPDCPCIDCPCIDCPCIDCPCIDPDCPDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCICIDPDCPDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCIDCPCICIDPDCPDCPCIDCPCIDCPCIDCPCIDCPCICIDPDCPDCPCIDCPCIDCPCIDCPCIDCPCICIDPDCPDCPCIDCPCIDC[root@localhost ~]#
三、优化网络配置
为了优化 CentOS 系统的网络性能,可以考虑以下几个方面:
1、调整网络参数:通过修改/etc/sysctl.conf
文件中的相关参数,可以优化网络栈的性能,增加文件描述符的数量、调整TCP窗口大小等。
- # 编辑 /etc/sysctl.conf 文件
- sudo vi /etc/sysctl.conf
添加或修改以下参数:
- net.core.somaxconn = 65535
- net.ipv4.tcp_rmem = '4096 87380 4194304'
- net.ipv4.tcp_wmem = '4096 65536 4194304'
- net.ipv4.tcp_window_scaling = 1
- net.ipv4.tcp_congestion_control = cubic
使更改生效:
- sudo sysctl p
2、使用高性能网卡驱动程序:确保使用的是最新的网卡驱动程序,以提高网络性能,可以通过yum
或rpm
包管理器更新网卡驱动程序。
- sudo yum update kmod
3、调整防火墙设置:如果使用了防火墙,确保其规则不会对网络性能产生负面影响,避免过多的规则匹配,优化规则顺序等。
- sudo firewallcmd listall
4、监控和调优网络流量:定期使用上述工具监控网络流量,及时发现并解决潜在的瓶颈问题,使用iftop
监控实时流量,使用vnstat
记录历史流量数据等。
四、常见问题解答(FAQs)
Q1:如何更改网卡的 MTU(最大传输单元)值?
A1:可以通过ip
命令临时更改 MTU 值,或者通过配置文件永久更改,临时更改 MTU 值的命令如下:
- sudo ip link set dev eth0 mtu 1500
要永久更改,可以在/etc/sysconfig/networkscripts/ifcfgethX
文件中添加或修改以下行:
- MTU="1500"
然后重启网络服务:
- sudo systemctl restart network
Q2:如何限制特定进程的网络带宽使用?
A2:可以使用trickle
或wondershaper
等工具来限制特定进程的网络带宽,使用trickle
:
- sudo trickle d 128 ifconfig iftop &
这将限制iftop
命令的下载速度为 128Kbps。
Q3:如何诊断网络连接问题?
A3:可以使用ping
、traceroute
、netstat
、ss
等工具来诊断网络连接问题,使用ping
检查与目标主机的连通性:
- ping www.google.com
使用traceroute
跟踪到目标主机的路径:
- traceroute www.google.com
使用netstat
查看当前的网络连接:
- netstat tuln
使用ss
查看更详细的套接字信息:
- ss tuln
这些工具可以帮助你识别网络连接问题的根源,如延迟高、丢包严重等。
通过以上方法和工具,您可以有效地管理和优化 CentOS 系统中的网络带宽,确保系统运行高效稳定。