云服务器带宽占用高怎么办?
- August 5, 2023
每天一个小知识,不定期更新
在运维和服务器管理过程中,有时会遇到服务器带宽占满的情况,导致网站响应缓慢或无法访问。这时候需要及时排查并解决问题,以保障服务器的正常运行。
本文将介绍针对服务器带宽占满的问题排查方法和解决方案。
如果出现带宽异常被占满的情况,想要减少带宽使用,从而不影响其他服务的正常使用,就需要将这个异常占满带宽的服务找出来。
一般流程:
- 确定是带宽跑满的网卡
- 确认具体占用流量的IP和端口
- 确认端口对应的进程
问题
某个风和日丽的中午,突然发现又个环境的服务访问及其缓慢,并且链接到该集群执行命令也非常卡顿,但是访问集群内部并未出现卡顿的情况,那么很有可能就是带宽出现异常。
果然,一看该集群的主节点的出网带宽被打满。
工具
进行排查需要两个工具,执行以下命令进行工具的安装
yum install -y sysstat
yum install -y iftop
Sysstat 是一款 Linux 系统性能监控工具,它可以收集和报告系统的性能数据,帮助管理员实时监控系统资源的使用情况,定位性能瓶颈,并进行性能分析。Sysstat 包含了一组命令行工具,主要包括以下几个组件:
sar
:sar
命令用于收集系统性能数据,如 CPU 使用率、内存使用情况、磁盘 I/O、网络流量等,并以一定时间间隔记录这些数据。管理员可以使用sar
查看历史性能数据,以便分析系统的性能趋势。iostat
:iostat
命令用于报告 CPU 和磁盘 I/O 的统计信息。它可以显示每个 CPU 的使用率,以及每个磁盘的 I/O 活动情况,包括读写速率、等待时间等。mpstat
:mpstat
命令用于报告多核 CPU 的使用率。它可以显示每个 CPU 核心的使用情况,包括用户态、内核态、空闲时间等。pidstat
:pidstat
命令用于报告指定进程的资源使用情况。它可以显示特定进程的 CPU 使用率、内存使用情况、磁盘 I/O 等。nfsiostat
:nfsiostat
命令用于报告 NFS 客户端和服务器的 I/O 统计信息。它可以显示 NFS 文件系统的 I/O 活动情况,包括读写速率、等待时间等。ifstat
:ifstat
命令用于报告网络接口的统计信息。它可以显示网络接口的流量情况,包括传输速率、数据包数量等。
Sysstat 可以通过在后台运行的 sar
守护进程定期收集系统性能数据,并保存在特定的文件中。管理员可以根据需要查看历史数据,也可以通过实时监控来即时了解系统的运行情况。Sysstat 提供了丰富的信息,可以帮助管理员优化系统配置,提高系统性能,同时也是故障排查和性能分析的有力工具。
iftop 是一款用于实时监控网络流量的命令行工具,它可以显示系统中各个网络接口的实时传输速率和流量统计信息。通过使用 iftop,管理员可以快速了解当前系统的网络使用情况,包括哪些进程正在占用网络带宽,以及流量的传输方向。
排查
确认网卡
执行以下命令查看异常的网卡:
sar -n DEV 1 5
sar -n DEV 1 5
是 Linux 系统中用于查看网络设备的使用情况的命令。
解释每个参数的含义:
sar
: 是系统性能统计命令,用于查看系统各项资源的使用情况。-n
: 是sar
命令的选项之一,用于指定要查看的资源类型,这里使用DEV
表示查看网络设备的使用情况。1
: 表示每隔1秒输出一次统计信息。5
: 表示总共输出5次统计信息。
综合来说,sar -n DEV 1 5
命令会每隔1秒输出一次网络设备的使用情况,总共输出5次。其中,网络设备的使用情况包括接收和发送的数据包数量、数据包大小、错误数量、丢失数量等信息,可以帮助我们监控网络设备的运行状态,及时发现网络问题。
可以注意到一张虚拟网卡的流量出现异常的情况,即calicf982c55123
01:21:57 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
01:21:58 PM cali99d977da0d3 0.00 0.00 0.00 0.00 0.00 0.00 0.00
01:21:58 PM cali8c73a903812 1.00 1.00 0.06 0.06 0.00 0.00 0.00
01:21:58 PM calia4b840dd720 0.00 0.00 0.00 0.00 0.00 0.00 0.00
01:21:58 PM calicf982c55123 231.00 81.00 615.07 5.34 0.00 0.00 0.00
01:21:58 PM cali488894f05d4 18.00 15.00 51.80 0.97 0.00 0.00 0.00
01:21:58 PM calia666aa2fa20 0.00 0.00 0.00 0.00 0.00 0.00 0.00
01:21:58 PM cali722cd6496cf 9.00 11.00 3.32 2.69 0.00 0.00 0.00
01:21:58 PM cali0ee274fc0d3 0.00 0.00 0.00 0.00 0.00 0.00 0.00
01:21:58 PM calif3773a8831b 0.00 0.00 0.00 0.00 0.00 0.00 0.00
01:21:58 PM cali1e02b2fa693 0.00 0.00 0.00 0.00 0.00 0.00 0.00
01:21:58 PM calie02cf561048 0.00 0.00 0.00 0.00 0.00 0.00 0.00
01:21:58 PM cali0ead4623d83 0.00 0.00 0.00 0.00 0.00 0.00 0.00
01:21:58 PM calieb3ef0b9a91 0.00 0.00 0.00 0.00 0.00 0.00 0.00
01:21:58 PM cali12ecbe34072 1.00 1.00 0.06 0.96 0.00 0.00 0.00
01:21:58 PM cali2a13f1c9879 15.00 20.00 2.63 8.58 0.00 0.00 0.00
01:21:58 PM cali8bfe4f9ed09 0.00 0.00 0.00 0.00 0.00 0.00 0.00
01:21:58 PM calib66d6d8f2f2 0.00 0.00 0.00 0.00 0.00 0.00 0.00
01:21:58 PM eth0 197.00 329.00 39.65 696.61 0.00 0.00 0.00
01:21:58 PM cali9ee112c7997 0.00 0.00 0.00 0.00 0.00 0.00 0.00
01:21:58 PM lo 907.00 907.00 187.64 187.64 0.00 0.00 0.00
01:21:58 PM cali278a311208b 0.00 0.00 0.00 0.00 0.00 0.00 0.00
01:21:58 PM cali89ab5e61ca5 0.00 0.00 0.00 0.00 0.00 0.00 0.00
01:21:58 PM calieb5b27ace30 0.00 0.00 0.00 0.00 0.00 0.00 0.00
01:21:58 PM cali5b80114dd98 0.00 0.00 0.00 0.00 0.00 0.00 0.00
01:21:58 PM cali967646fbd38 0.00 0.00 0.00 0.00 0.00 0.00 0.00
01:21:58 PM cali18fc2d48e17 0.00 0.00 0.00 0.00 0.00 0.00 0.00
01:21:58 PM calid3fd3ae04a4 2.00 1.00 0.17 0.10 0.00 0.00 0.00
01:21:58 PM cali26bc6c35f82 0.00 0.00 0.00 0.00 0.00 0.00 0.00
01:21:58 PM calibc60a7bcb5f 24.00 18.00 9.00 3.01 0.00 0.00 0.00
01:21:58 PM calif20690e7a04 0.00 0.00 0.00 0.00 0.00 0.00 0.00
01:21:58 PM cali669d01636ff 0.00 0.00 0.00 0.00 0.00 0.00 0.00
01:21:58 PM cali95fcea29a11 3.00 4.00 0.39 0.41 0.00 0.00 0.00
01:21:58 PM cali10e222e0e64 6.00 6.00 0.94 0.60 0.00 0.00 0.00
01:21:58 PM calibb4888d24d5 1.00 1.00 0.06 0.06 0.00 0.00 0.00
01:21:58 PM calie03ee727e82 0.00 0.00 0.00 0.00 0.00 0.00 0.00
01:21:58 PM cali577d2644601 1.00 1.00 0.06 0.06 0.00 0.00 0.00
01:21:58 PM cali22c25d67502 0.00 0.00 0.00 0.00 0.00 0.00 0.00
01:21:58 PM cali4cb4ca85c47 0.00 0.00 0.00 0.00 0.00 0.00 0.00
01:21:58 PM cali6ccef10259c 0.00 0.00 0.00 0.00 0.00 0.00 0.00
01:21:58 PM cali22fa0a65a9d 0.00 0.00 0.00 0.00 0.00 0.00 0.00
01:21:58 PM tunl0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
01:21:58 PM caliefa122f2386 0.00 0.00 0.00 0.00 0.00 0.00 0.00
01:21:58 PM cali70eee232dee 0.00 0.00 0.00 0.00 0.00 0.00 0.00
01:21:58 PM cali4f61cb67a6f 11.00 14.00 0.85 7.21 0.00 0.00 0.00
01:21:58 PM docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
确认IP和端口
执行以下命令查看异常的IP和端口:
iftop -i calicf982c55123 -P
解释 iftop
命令中的参数:
-i calicf982c55123
:指定要监视的网络接口,这里使用calicf982c55123
表示监视网络接口calicf982c55123
的流量。-P
:启用端口监视模式。默认情况下,iftop
会显示网络流量的来源和目标 IP 地址,而使用-P
参数后,还会显示源和目标的端口号。
综合起来,iftop -i calicf982c55123 -P
命令会在终端中实时显示网络接口 calicf982c55123
上的流量信息,包括源 IP 地址、目标 IP 地址、源端口号、目标端口号以及相关的流量统计信息。这样可以帮助你了解指定网络接口的实时流量状况,有助于排查网络流量异常或高占用的问题。
这里可以查看使用网卡calicf982c55123
的进程的ip和端口。
-
=>代表发送数据,<=代表接收数据。
-
TX表示发送流量,RX表示接收流量,TOTAL表示总流量。
-
cum:表示第一列各种情况的总流量。
-
peak:表示第一列各种情况的流量峰值。
-
rates:表示第一列各种情况2秒、10秒、40秒内的平均流量。
如果使用的是k8s集群,那么到这里基本可以确认问题出在哪个服务了,毕竟通过IP和端口可以查看相应的Pod和改Pod使用的svc的端口,然后进行相应处理即可。
确认进程
若是主机的服务异常,可通过netstat -tunlp |grep 30005
查看相应进程.
-
如果消耗带宽较多的进程为业务进程,财力恰好雄厚的话可以直接把带宽拉满。
-
如果消耗带宽较多的进程为异常进程,可能是病毒或木马导致,建议自行终止进程或者使用安全软件进行查杀。