Linux--查看网络性能指标

一、性能指标有哪些?

  • 带宽,表示链路的最大传输速率,单位是 b/s (比特 / 秒),带宽越大,其传输能力就越强。
  • 延时,表示请求数据包发送后,收到对端响应,所需要的时间延迟。不同的场景有着不同的含义,比如可以表示建立 TCP 连接所需的时间延迟,或一个数据包往返所需的时间延迟。
  • 吞吐率,表示单位时间内成功传输的数据量,单位是 b/s(比特 / 秒)或者 B/s(字节 / 秒),吞吐受带宽限制,带宽越大,吞吐率的上限才可能越高。
  • PPS,全称是 Packet Per Second(包 / 秒),表示以网络包为单位的传输速率,一般用来评估系统对于网络的转发能力。

当然,除了以上这四种基本的指标,还有一些其他常用的性能指标,比如:

  • 网络的可用性,表示网络能否正常通信;
  • 并发连接数,表示 TCP 连接数量;
  • 丢包率,表示所丢失数据包数量占所发送数据组的比率;
  • 重传率,表示重传网络包的比例;


二、查看网络配置

ifconfig 属于 net-tools 软件包,ip 属于 iproute2 软件包,我的印象中 net-tools 软件包没有人继续维护了,而 iproute2 软件包是有开发者依然在维护,所以更推荐你使用 ip 工具。

第一,网口的连接状态标志。其实也就是表示对应的网口是否连接到交换机或路由器等设备,如果 ifconfig 输出中看到有 RUNNING,或者 ip 输出中有 LOWER_UP,则说明物理网络是连通的,如果看不到,则表示网口没有接网线。

第二,MTU 大小。默认值是 1500 字节,其作用主要是限制网络包的大小,如果 IP 层有一个数据报要传,而且网络包的长度比链路层的 MTU 还大,那么 IP 层就需要进行分片,即把数据报分成若干片,这样每一片就都小于 MTU。事实上,每个网络的链路层 MTU 可能会不一样,所以你可能需要调大或者调小 MTU 的数值。

第三,网口的 IP 地址、子网掩码、MAC 地址、网关地址。这些信息必须要配置正确,网络功能才能正常工作。

第四,网络包收发的统计信息。通常有网络收发的字节数、包数、错误数以及丢包情况的信息,如果 TX(发送) 和 RX(接收) 部分中 errors、dropped、overruns、carrier 以及 collisions 等指标不为 0 时,则说明网络发送或者接收出问题了,这些出错统计信息的指标意义如下:

  • errors 表示发生错误的数据包数,比如校验错误、帧同步错误等;
  • dropped 表示丢弃的数据包数,即数据包已经收到了 Ring Buffer(这个缓冲区是在内核内存中,更具体一点是在网卡驱动程序里),但因为系统内存不足等原因而发生的丢包;
  • overruns 表示超限数据包数,即网络接收/发送速度过快,导致 Ring Buffer 中的数据包来不及处理,而导致的丢包,因为过多的数据包挤压在 Ring Buffer,这样 Ring Buffer 很容易就溢出了;
  • carrier 表示发生 carrirer 错误的数据包数,比如双工模式不匹配、物理电缆出现问题等;
  • collisions 表示冲突、碰撞数据包数;

ifconfigip 命令只显示的是网口的配置以及收发数据包的统计信息,而看不到协议栈里的信息,那接下来就来看看如何查看协议栈里的信息。



三、查看Socket信息

使用 netstat 或者 ss,这两个命令查看 socket、网络协议栈、网口以及路由表的信息。

虽然 netstatss 命令查看的信息都差不多,但是如果在生产环境中要查看这类信息的时候,尽量不要使用 netstat 命令,因为它的性能不好,在系统比较繁忙的情况下,如果频繁使用 netstat 命令则会对性能的开销雪上加霜,所以更推荐你使用性能更好的 ss 命令。

可以发现,输出的内容都差不多, 比如都包含了 socket 的状态(State)、接收队列(Recv-Q)、发送队列(Send-Q)、本地地址(Local Address)、远端地址(Foreign Address)、进程 PID 和进程名称(PID/Program name)等。

接收队列(Recv-Q)和发送队列(Send-Q)比较特殊,在不同的 socket 状态。它们表示的含义是不同的。

当 socket 状态处于 Established时:

  • Recv-Q 表示 socket 缓冲区中还没有被应用程序读取的字节数;
  • Send-Q 表示 socket 缓冲区中还没有被远端主机确认的字节数;

而当 socket 状态处于 Listen 时:

  • Recv-Q 表示全连接队列的长度;
  • Send-Q 表示全连接队列的最大长度;

那对于协议栈的统计信息,依然还是使用 netstatss,它们查看统计信息的命令如下:

ss 命令输出的统计信息相比 netsat 比较少,ss 只显示已经连接(estab)、关闭(closed)、孤儿(orphaned) socket 等简要统计。

netstat 则有更详细的网络协议栈信息,比如上面显示了 TCP 协议的主动连接(active connections openings)、被动连接(passive connection openings)、失败重试(failed connection attempts)、发送(segments send out)和接收(segments received)的分段数量等各种信息。



四、查看网络吞吐率和PPS

可以使用 sar 命令当前网络的吞吐率和 PPS,用法是给 sar 增加 -n 参数就可以查看网络的统计信息,比如

  • sar -n DEV,显示网口的统计数据;
  • sar -n EDEV,显示关于网络错误的统计数据;
  • sar -n TCP,显示 TCP 的统计数据

它们的含义:

  • rxpck/stxpck/s 分别是接收和发送的 PPS,单位为包 / 秒。
  • rxkB/stxkB/s 分别是接收和发送的吞吐率,单位是 KB/ 秒。
  • rxcmp/stxcmp/s 分别是接收和发送的压缩数据包数,单位是包 / 秒。

对于带宽,我们可以使用 ethtool 命令来查询,它的单位通常是 Gb/s 或者 Mb/s,不过注意这里小写字母 b ,表示比特而不是字节。我们通常提到的千兆网卡、万兆网卡等,单位也都是比特(bit)。如下你可以看到, eth0 网卡就是一个千兆网卡:

$ ethtool eth0 | grep Speed
  Speed: 1000Mb/s


五、连通性与延时性

要测试本机与远程主机的连通性和延时,通常是使用 ping 命令,它是基于 ICMP 协议的,工作在网络层。

显示的内容主要包含 icmp_seq(ICMP 序列号)、TTL(生存时间,或者跳数)以及 time (往返延时),而且最后会汇总本次测试的情况,如果网络没有丢包,packet loss 的百分比就是 0。

不过,需要注意的是,ping 不通服务器并不代表 HTTP 请求也不通,因为有的服务器的防火墙是会禁用 ICMP 协议的。



六、参考

小林 coding

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/413622.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【iOS ARKit】网络传输 ARWorldMap

ARKit 可以利用 ARWorldMap 在应用中断后进行状态恢复、继续AR 进程。一个用户也可以将ARWorldMap 发送给其他用户,当其他用户接收并加载 ARWorldMap 后,就可以在相同的物理环境看到同样的虚拟元素,达到共享 AR体验的目的。 在ARKit 中&#…

【c语言】内存函数

欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 目录 memcpy函数的使用和模拟实现 memcpy函数的使用 memcpy函数的模拟实现 memmove的使用和模拟实现 memmove的使用 memmove的模拟实现 memset函数的使用 memcmp函数…

java中容器继承体系

首先上图 源码解析 打开Collection接口源码&#xff0c;能够看到Collection接口是继承了Iterable接口。 public interface Collection<E> extends Iterable<E> { /** * ...... */ } 以下是Iterable接口源码及注释 /** * Implementing this inte…

【UE 材质】水晶材质

效果 步骤 1. 先在Quixel Bridge上下载冰纹理 2. 新建一个材质&#xff0c;这里命名为“M_Ice”并打开&#xff0c;添加如下纹理采样节点 继续添加如下节点 此时效果如下&#xff1a; 可以看到此时的材质颜色比较浅&#xff0c;如果希望颜色深一点可以继续添加如下节点 此时效…

Java学习--学生管理系统(残破版)

代码 Main.java import java.util.ArrayList; import java.util.Scanner;public class Main {public static void main(String[] args) {ArrayList<Student> list new ArrayList<>();loop:while (true) {System.out.println("-----欢迎来到阿宝院校学生管理系…

OSI模型

OSI模型 TCP/IP参考模型 TCP/IP常见协议 应用层 FTP&#xff08;用于文件的下载和上传&#xff0c;采用C/S结构&#xff09; Telnet&#xff08;用于远程登陆服务&#xff09; DNS&#xff08;域名解析&#xff09; HTTP&#xff08;接收和发布Html页面&#xff09; 传输层…

React Switch用法及手写Switch实现

问&#xff1a;如果注册的路由特别多&#xff0c;找到一个匹配项以后还会一直往下找&#xff0c;我们想让react找到一个匹配项以后不再继续了&#xff0c;怎么处理&#xff1f;答&#xff1a;<Switch>独特之处在于它只绘制子元素中第一个匹配的路由元素。 如果没有<Sw…

Vue项目构建优化

本文作者为 360 奇舞团前端开发工程师 宁航 在开发大型前端项目时&#xff0c;往往是一个需求对应一个分支&#xff0c;当完成需求后&#xff0c;就需要将代码打包、部署。代码通常需要部署到多个环境中&#xff0c;这些环境包括&#xff1a;日常环境、测试环境、回归环境和生产…

Linux Centos7配置SSH免密登录

Linux Centos7配置SSH免密登录 配置SSH免密登录说明&#xff1a; 分两步 第一步、给Server A生成密钥对 第二步、给Server B授权 生成密钥对之后&#xff0c;我们可以看看它保存的目录下的文件。 接下来我们就要把Server A&#xff08;10.1.1.74&#xff09;的公钥拷贝到Se…

Linux运维-Web服务器的配置与管理(Apache+tomcat)(没成功,最后有失败经验)

Web服务器的配置与管理(Apachetomcat) 项目场景 公司业务经过长期发展&#xff0c;有了很大突破&#xff0c;已经实现盈利&#xff0c;现公司要求加强技术架构应用功能和安全性以及开始向企业应用、移动APP等领域延伸&#xff0c;此时原来开发web服务的php语言已经不适应新的…

Rust使用calamine读取excel文件,Rust使用rust_xlsxwriter写入excel文件

Rust使用calamine读取已存在的test.xlsx文件全部数据&#xff0c;还读取指定单元格数据&#xff1b;Rust使用rust_xlsxwriter创建新的output.xlsx文件&#xff0c;并写入数据到指定单元格&#xff0c;然后再保存工作簿。 Cargo.toml main.rs /*rust读取excel文件*/ use cala…

13.云原生之常用研发中间件部署

云原生专栏大纲 文章目录 mysql主从集群部署mysql高可用集群高可用互为主从架构互为主从架构如何实现主主复制中若是两台master上同时出现写操作可能会出现的问题该架构是否存在问题&#xff1f; heml部署mysql高可用集群 nacos集群部署官网文档部署nacoshelm部署nacos redis集…

像用Excel一样用Python:pandasGUI

文章目录 启动数据导入绘图 启动 众所周知&#xff0c;pandas是Python中著名的数据挖掘模块&#xff0c;以处理表格数据著称&#xff0c;并且具备一定的可视化能力。而pandasGUI则为pandas打造了一个友好的交互窗口&#xff0c;有了这个&#xff0c;就可以像使用Excel一样使用…

EtherCAT主站转Ethernet/IP网关

产品功能 1 YC-ECTM-EIP工业级Profinet 网关 2 EtherCAT转 EtherNet/IP 3 支持EtherNet/IP从站 4 即插即用 无需编程 轻松组态 ,即实现数据交互 5 导轨安装 支持提供EDS文件 6 EtherNET/IP与EtherCAT互转数据透明传输可接入PLC组态 支持CodeSys/欧姆龙PLC&#xff0c;西门…

Python 实现Excel自动化办公(上)

在Python 中你要针对某个对象进行操作&#xff0c;是需要安装与其对应的第三方库的&#xff0c;这里对于Excel 也不例外&#xff0c;它也有对应的第三方库&#xff0c;即xlrd 库。 什么是xlrd库 Python 操作Excel 主要用到xlrd和xlwt这两个库&#xff0c;即xlrd是读Excel &am…

《opencv实用探索·二十二》支持向量机SVM用法

1、概述 在了解支持向量机SVM用法之前先了解一些概念&#xff1a; &#xff08;1&#xff09;线性可分和线性不可分 如果在一个二维空间有一堆样本&#xff0c;如下图所示&#xff0c;如果能找到一条线把这两类样本分开至线的两侧&#xff0c;那么这个样本集就是线性可分&#…

Day03:Web架构OSS存储负载均衡CDN加速反向代理WAF防护

目录 WAF CDN OSS 反向代理 负载均衡 思维导图 章节知识点&#xff1a; 应用架构&#xff1a;Web/APP/云应用/三方服务/负载均衡等 安全产品&#xff1a;CDN/WAF/IDS/IPS/蜜罐/防火墙/杀毒等 渗透命令&#xff1a;文件上传下载/端口服务/Shell反弹等 抓包技术&#xff1a…

腾讯云4核8G服务器收费贵不贵?

腾讯云4核8G服务器多少钱&#xff1f;轻量应用服务器4核8G12M带宽一年446元、646元15个月&#xff0c;云服务器CVM标准型S5实例4核8G配置价格15个月1437.3元&#xff0c;5年6490.44元&#xff0c;标准型SA2服务器1444.8元一年&#xff0c;在txy.wiki可以查询详细配置和精准报价…

ky10-server docker 离线安装包、离线安装

离线安装脚本 # ---------------离线安装docker------------------- rpm -Uvh --force --nodeps *.rpm# 修改docker拉取源为国内 rm -rf /etc/docker mkdir -p /etc/docker touch /etc/docker/daemon.json cat >/etc/docker/daemon.json<<EOF{"registry-mirro…

蓝桥杯刷题2

1. 修建灌木 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scan new Scanner(System.in);int n scan.nextInt();for (int i 1;i < n1;i){int distance Math.max(i-1,n-i);System.out.println(distance*2);}scan.close…