34丨关于Linux网络,你必须知道这些(下)
性能指标
- 带宽,表示链路的最大传输速率,单位通常为 b/s (比特 / 秒)。
- 吞吐量,表示单位时间内成功传输的数据量,单位通常为 b/s(比特 / 秒)或者 B/s(字节 / 秒)。吞吐量受带宽限制,而吞吐量 / 带宽,也就是该网络的使用率。
- 延时,表示从网络请求发出后,一直到收到远端响应,所需要的时间延迟。在不同场景中,这一指标可能会有不同含义。比如,它可以表示,建立连接需要的时间(比如 TCP 握手延时),或一个数据包往返所需的时间(比如 RTT)。
- PPS,是 Packet Per Second(包 / 秒)的缩写,表示以网络包为单位的传输速率。PPS 通常用来评估网络的转发能力,比如硬件交换机,通常可以达到线性转发(即 PPS 可以达到或者接近理论最大值)。而基于 Linux 服务器的转发,则容易受网络包大小的影响。
网络配置
$ ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 10.240.0.30 netmask 255.240.0.0 broadcast 10.255.255.255inet6 fe80::20d:3aff:fe07:cf2a prefixlen 64 scopeid 0x20<link>ether 78:0d:3a:07:cf:3a txqueuelen 1000 (Ethernet)RX packets 40809142 bytes 9542369803 (9.5 GB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 32637401 bytes 4815573306 (4.8 GB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
$ ip -s addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000link/ether 78:0d:3a:07:cf:3a brd ff:ff:ff:ff:ff:ffinet 10.240.0.30/12 brd 10.255.255.255 scope global eth0valid_lft forever preferred_lft foreverinet6 fe80::20d:3aff:fe07:cf2a/64 scope linkvalid_lft forever preferred_lft foreverRX: bytes packets errors dropped overrun mcast9542432350 40809397 0 0 0 193TX: bytes packets errors dropped carrier collsns4815625265 32637658 0 0 0 0
- errors 表示发生错误的数据包数,比如校验错误、帧同步错误等;
- dropped 表示丢弃的数据包数,即数据包已经收到了 Ring Buffer,但因为内存不足等原因丢包;
- overruns 表示超限数据包数,即网络 I/O 速度过快,导致 Ring Buffer 中的数据包来不及处理(队列满)而导致的丢包;
- carrier 表示发生 carrirer 错误的数据包数,比如双工模式不匹配、物理电缆出现问题等;
- collisions 表示碰撞数据包数。
套接字信息
# head -n 3 表示只显示前面 3 行
# -l 表示只显示监听套接字
# -n 表示显示数字地址和端口 (而不是名字)
# -p 表示显示进程信息
$ netstat -nlp | head -n 3
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 840/systemd-resolve# -l 表示只显示监听套接字
# -t 表示只显示 TCP 套接字
# -n 表示显示数字地址和端口 (而不是名字)
# -p 表示显示进程信息
$ ss -ltnp | head -n 3
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 127.0.0.53%lo:53 0.0.0.0:* users:(("systemd-resolve",pid=840,fd=13))
LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1459,fd=3))
- Recv-Q 表示套接字缓冲还没有被应用程序取走的字节数(即接收队列长度)。
- 而 Send-Q 表示还没有被远端主机确认的字节数(即发送队列长度)。
- Recv-Q 表示 syn backlog 的当前值。
- 而 Send-Q 表示最大的 syn backlog 值。
而 syn backlog 是 TCP 协议栈中的半连接队列长度,相应的也有一个全连接队列(accept queue),它们都是维护 TCP 状态的重要机制。
协议栈统计信息
$ netstat -s
...
Tcp:3244906 active connection openings23143 passive connection openings115732 failed connection attempts2964 connection resets received1 connections established13025010 segments received17606946 segments sent out44438 segments retransmitted42 bad segments received5315 resets sentInCsumErrors: 42
...$ ss -s
Total: 186 (kernel 1446)
TCP: 4 (estab 1, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 0Transport Total IP IPv6
* 1446 - -
RAW 2 1 1
UDP 2 2 0
TCP 4 3 1
...
网络吞吐和 PPS
# 数字 1 表示每隔 1 秒输出一组数据
$ sar -n DEV 1
Linux 4.15.0-1035-azure (ubuntu) 01/06/19 _x86_64_ (2 CPU)13:21:40 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
13:21:41 eth0 18.00 20.00 5.79 4.25 0.00 0.00 0.00 0.00
13:21:41 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
13:21:41 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
- rxpck/s 和 txpck/s 分别是接收和发送的 PPS,单位为包 / 秒。
- rxkB/s 和 txkB/s 分别是接收和发送的吞吐量,单位是 KB/ 秒。
- rxcmp/s 和 txcmp/s 分别是接收和发送的压缩数据包数,单位是包 / 秒。
- %ifutil 是网络接口的使用率,即半双工模式下为 (rxkB/s+txkB/s)/Bandwidth,而全双工模式下为 max(rxkB/s, txkB/s)/Bandwidth。
$ ethtool eth0 | grep SpeedSpeed: 1000Mb/s
连通性和延时
# -c3 表示发送三次 ICMP 包后停止
$ ping -c3 114.114.114.114
PING 114.114.114.114 (114.114.114.114) 56(84) bytes of data.
64 bytes from 114.114.114.114: icmp_seq=1 ttl=54 time=244 ms
64 bytes from 114.114.114.114: icmp_seq=2 ttl=47 time=244 ms
64 bytes from 114.114.114.114: icmp_seq=3 ttl=67 time=244 ms--- 114.114.114.114 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 244.023/244.070/244.105/0.034 ms
- 第一部分,是每个 ICMP 请求的信息,包括 ICMP 序列号(icmp_seq)、TTL(生存时间,或者跳数)以及往返延时。
- 第二部分,则是三次 ICMP 请求的汇总。
小结
34丨关于Linux网络,你必须知道这些(下)相关推荐
- 详情讲述Linux网络编程关注的问题丨epoll原理丨reactor模型丨三次挥手丨四次握手丨多线程丨单线程丨C/C++Linux丨C++后端开发
90分钟搞懂linux网络编程关注的问题 1. 三次挥手,四次握手 2. epoll实现原理剖析 3. reactor模型封装 单线程.多线程以及多进程 视频讲解如下,点击观看: 详情讲述Linux网 ...
- Linux网络编程必看书籍推荐
首先要说讲述计算机网络和TCP/IP的书很多. 先要学习网络知识才谈得上编程 讲述计算机网络的最经典的当属Andrew S.Tanenbaum的<计算机网络>第五版,这本书难易适中. &l ...
- Linux网络包接收过程的监控与调优
Linux内核对网络包的接收过程大致可以分为接收到RingBuffer.硬中断处理.ksoftirqd软中断处理几个过程.其中在ksoftirqd软中断处理中,把数据包从RingBuffer中摘下来, ...
- Kali Linux网络扫描教程(内部资料)
Kali Linux网络扫描教程(内部资料) 试读样张:http://pan.baidu.com/s/1qWuNSYw 前 言 Kali Linux是业内最知名的安全渗透测试专用操作系统.它的前身就 ...
- linux网络批量安装上限,linux基于网络的批量安装
准备: DHCP服务器 TFTP服务器 FTP服务器 Kickstart文件 拥有PXE ROM芯片,支持网络启动的客户端,即要安装系统的裸机 Linux镜像文件 这里用一台主机同时提供DHCP,TF ...
- 【CentOS Linux 7】【Linux网络配置基础】
Linux系统及应用---调研报告 [CentOS Linux 7]实验1[VMware安装.新建虚拟机:63个基础命令运行结果图] [CentOS Linux 7]实验2[Shell编程及应用] [ ...
- Linux网络编程——黑马程序员笔记
01P-复习-Linux网络编程 02P-信号量生产者复习 03P-协议 协议: 一组规则. 04P-7层模型和4层模型及代表协议 分层模型结构: OSI七层模型: 物.数.网.传.会.表.应TCP/ ...
- Linux网络编程服务器模型选择之并发服务器(上)
转载:http://www.cnblogs.com/lizhenghn/p/3617666.html 与循环服务器的串行处理不同,并发服务器对服务请求并发处理.循环服务器只能够一个一个的处理客户端的请 ...
- Linux日常运维管理技巧(一)监控系统状态、监控网卡流量、监控IO性能、查看系统进程、查看网络状态、Linux下抓包tcpdump、Linux网络相关、DNS配置
目录 监控系统状态 监控网卡流量 监控IO性能 查看系统进程 查看网络状态 Linux下抓包 Linux网络相关 监控系统状态 w/uptime查看系统负载 [root@zyshanlinux-01 ...
最新文章
- Future 模式介绍
- 给一个由n个单词组成的字符串排序
- Web开发(一)·期末不挂之第二章·HTML基础一(考试必考冷知识)
- linux的HAL库函数,STM32 HAL库 IIC 协议库函数
- STM32CubeMX软件工程描述_USART配置过程
- java编程思想2_《JAVA编程思想2》笔记
- linux/mac下一键删除下载失败的maven jar包
- python创建一个csv文件_Python程序中用csv模块来操作csv文件的基本使用教程
- 【转载】使用Winrar对压缩文件进行加密,并且给定解压密码
- lcd1602c语言程序分析,LCD1602 C程序
- 现代信号处理——时频分析与时频分布(短时Fourier变换)
- 台式计算机如何联络无线网,台式电脑怎样设置无线网络
- 贵州:科技创新促高质量发展
- 一些动网美化方法集合【蓝雨动力整理】
- 逻辑思维语音01——麦当劳
- workbench中施加预紧力进行模态分析
- Python @装饰器
- 汽车外饰360vr实景展示有哪些应用场景?
- Python开HTTP服务器
- 实例:用C#.NET手把手教你做微信公众号开发(7)--普通消息处理之位置消息
热门文章
- php 正则过滤style,PHP 过滤常用标签的正则表达式
- 用java实现冒泡排序_Java实现冒泡排序
- 三菱gx软件初始化失败怎么解决_三菱PLC的常见问题大全!
- 为什么复制粘贴时html,关于javascript:为什么你应该停止复制和粘贴
- java空间租用_java影片租赁平台
- python xpath循环_初学Python,就用它爬取一点情话说给她听!
- 马赛克,克星,真来了!
- 一个没法商用,但是好玩有趣的 Python 手绘图形库!
- python函数作为参数例题_笨办法学Python 习题 19: 函数和变量
- python scipy模块文档_scipy模块stats文档