我想分析我的 Debian 9 服务器的网络工作负载以检测一些可能的网络过载。
我需要分析的主要指标是:
- CPS(每秒连接数)
- 吞吐量
有没有办法从 Linux 内部获取这些指标?
我认为可以通过 conntrackNEW
连接事件以某种方式获取 CPS 指标,但不确定这是否是最合适的方法。
如果太明显的话,请见谅。
PS:该服务器不仅处理本地流量,还转发大量流量。
答案1
我认为基于本机 Linux API 描述这些指标的起源就足够了。
吞吐量
顺便说一下,吞吐量度量一般是指外部的与测试对象(您说的 Linux 操作系统)相关。也就是说,粗略地说,我们有两台主机(例如客户端和服务器)以及它们之间的测试对象。我们测量客户端和服务器之间的网络流量,并记录测试对象的(边界)吞吐量(例如防火墙)。
但在 OS Linux 中,我们可以测量吞吐量的简单方法是仅按接口测量。
因此,您只需观察/proc/net/dev
并计算每秒字节数增量:
sh-tst# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 87016202 715723 0 0 0 0 0 0 87016202 715723 0 0 0 0 0 0
eth3: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
eth2: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
eth1: 246415305 2899662 0 132906 0 0 0 230 5466117 19016 0 0 0 0 0 0
eth0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
中央公共服务
CPS 指标也是如此。基本上,它是一种外部测量。但是,在 Linux 中,您可以尝试根据以下内容计算它/proc/net/stat/ip_conntrack
:
sh-tst# cat /proc/net/stat/ip_conntrack
entries searched found new invalid ignore delete delete_list insert insert_failed drop early_drop icmp_error expect_new expect_create expect_delete search_restart
000000f8 00001742 0003142f 0001e85a 00000079 00021333 0001e6cf 00003a3d 00003bc5 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
000000f8 00002389 0005f1a0 0003b6f3 00000085 0004286f 0003b59e 00003cea 00003e3f 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
000000f8 000002c0 00037a77 00000714 00000000 000382cb 00000825 00000724 00000616 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
000000f8 00000225 00026cf9 00000271 00000000 00026e48 00000348 000002bd 000001e6 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
从lnstat(8)
男人:
/proc/net/stat/ip_conntrack, /proc/net/stat/nf_conntrack Conntrack 相关计数器。ip_conntrack 仅用于与旧用户空间向后兼容,并显示与 nf_conntrack 相同的数据。
...
添加了之前未预料到的新的 conntrack 条目数。
在Linux连接跟踪中:
NEW——表示数据包已启动新连接,或与尚未在两个方向上看到数据包的连接相关联,并且
看来你想计算new
每秒增量。
阅读更多:
答案2
sysstat 附带的 sar 命令将执行这两项操作。
监控每秒连接数 sar -n TCP 1
active/s 是出站 TCP 连接passive/s 是入站 TCP 连接
对于 UDP sar -n UDP 1
查看网络吞吐量 sar -n DEV (可选择添加 1 来监控每秒的当前吞吐量)