Linux性能优化-网络篇

文章目录

  • 前言
  • 一、网络性能指标
  • 二、网络基准测试
    • 如何评估系统的网络性能
    • 各协议层的性能测试
      • 转发性能
      • TCP/UPD性能
      • HTTP性能
      • 应用负载性能
  • 三、网络指标的获取
    • 查询带宽
    • 网络吞吐和PPS
    • 网络连通
  • 总结


前言

如何评价一套新环境内主机和应用的网络性能,有哪些指标需要注意,如何建立网络指标基准。当系统上线后,服务运行过程中,遇到网络问题如何通过指标排查网络问题。


一、网络性能指标

  • 带宽,表示链路的最大传输速率,单位通常为b/s (比特/s)。常用的带宽有1000M、10G、40G、100G等。
  • 吞吐量,表示没丢包时的最大数据传输速率,单位通常为b/s (比特/s) 或者B/s(字节/秒)。
    吞吐量受带宽限制,而吞吐量/带宽,就是网络使用率
  • 延时,表示从网络请求发出后,一直到收到远端响应,所需要的时间延迟。在不同的场景中,这一个指标会有不同的含义。比如,他可以表示,建立连接需要的时间(比如 TCP握手延时),或一个数据包往返所需的时间(比如 RTT)(ping命令)
  • PPS, Packet Per Second (包/秒) 的缩写,表示以网络包为单位的传输速率。PPS通常用来评估网络的转发能力,比如硬件交换机,通常可以达到线性转发。而基于Linux服务器的转发,则容易受网络包大小的影响。通常用在需要大量转发的场景。对于TCP或者WEB服务来说,更多会用并发链接数和每秒请求数(Query per Second)等指标。
  • 并发连接数(TCP连接数量)
  • 丢包率
    端到端的数据包丢失。丢包率是指测试中所丢失数据包数量占所发送数据组的比率,
    计算方法为:{(发送报文-接收报文)/发送报文}*100%。
  • 重传率

二、网络基准测试

如何评估系统的网络性能

  • 基于HTTP或者HTTPS的Web应用程序,显然属于应用层,需要测试HTTP/HTTPS的性能;
  • 对于大多数游戏服务器来说,为了支持更大的同时在线人数,通常会基于TCP或UDP,与客户端进行交互,这时就需要我们测试TCP/UDP的性能;
  • 还有一些场景,把Linux作为一个软交换机或者路由器来使用,这种情况下,更关注网络包的处理能力即PPS, 重点关注网络层的转发性能。

各协议层的性能测试

转发性能

网络层,关注的是网络包的处理能力,即PPS。Linux内核自带的pktgen,可以测试这个指标。

TCP/UPD性能

iperf和netperf是最常用的网络性能测试工具,测试TCP和UDP的吞吐量。
传输层,我们关注的是TCP、UDP的传输层协议的工作状态,比如TCP连接数、TCP重传、TCP错误数等。

HTTP性能

测试HTTP性能,有大量工具可以使用,如ab、webbench等。

应用负载性能

iperf或者ab等测试工具,得到的TCP、HTTP等性能数据,和用户实际请求很可能不一致,因为用户请求往往附带各种负载(playload), 而这些负载会影响Web应用程序内部处理逻辑,从而影响最终性能。
为了得到应用程序的实际性能,需要性能工具可以模拟用户的请求负载,可以用wrk、TCPCopy Jmeter 或者 LoadRunner等实现。

三、网络指标的获取

如何通过命令查下当前主机的网络指标信息,和网络状况呢。

查询带宽

一般由网卡指标确定,可以通过 ethtool eth0 查询。
如下图,Speed: 20000Mb/s,注意这里的单位是b

[root@yks ~]# ethtool bond0
Settings for bond0:Supported ports: [ ]Supported link modes:   Not reportedSupported pause frame use: NoSupports auto-negotiation: NoSupported FEC modes: Not reportedAdvertised link modes:  Not reportedAdvertised pause frame use: NoAdvertised auto-negotiation: NoAdvertised FEC modes: Not reportedSpeed: 20000Mb/sDuplex: FullPort: OtherPHYAD: 0Transceiver: internalAuto-negotiation: offLink detected: yes

网络吞吐和PPS

可以通过sar命令获取网络统计信息。

[root@yks ~]# sar -n DEV 1 | grep -E 'bond0|IFACE'
10:18:58 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil
10:18:59 PM     bond0     98.00    166.00     14.67     74.57      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。

网络的吞吐量很多时候也可以结合监控查看网卡的读取和写入的数值。

网络连通

主机网络连通性,最常用的是基于ICMP协议的ping命令。
服务连通性,telnet也可以用来检查tcp连通性。


总结

本节是网络篇的第一节内容,主要是介绍了理论性的内容。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

跳跃游戏(2)

问题描述 给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。 输入&#xff1…

DINO结构中的exponential moving average (ema)和stop-gradient (sg)

DINO思路介绍 在 DINO 中,教师和学生网络分别预测一个一维的嵌入。为了训练学生模型,我们需要选取一个损失函数,不断地让学生的输出向教师的输出靠近。softmax 结合交叉熵损失函数是一种常用的做法,来让学生模型的输出与教师模型的…

Flutter 中的 AnimatedDefaultTextStyle 小部件:全面指南

Flutter 中的 AnimatedDefaultTextStyle 小部件:全面指南 在 Flutter 中,AnimatedDefaultTextStyle 是一个用于动画化默认文本样式的组件,它可以在文本显示期间平滑地过渡文本样式,如字体大小、颜色和字体族。这在实现复杂的文本…

pytorch应该安装哪个nvcc -V 还是 nvidia-smi 对比的cuda?

当使用nvidia-smi时会显示 cuda driver版本,如下: NVIDIA-SMI 510.47.03 Driver Version: 510.47.03 CUDA Version: 11.6 当使用 nvcc -V 时会显示 cuda runtime version,如下: nvcc: NVIDIA (R) Cuda compiler driver …

Docker安装Oracle11g数据库

操作系统:centOS9使用此方法检查是否安装Docker:docker --help,如果有帮助文件则证明安装成功使用此语句检查Docker是否正在运行:docker images,实际上是查看本地镜像如果发现未运行则开启Docker:systemctl…

普华永道调查:“拥抱AI”的行业正呈现出生产率激增景象

全球知名四大会计师事务所之一的普华永道最新报告显示,一些最有可能将人工智能技术融入业务的企业,其生产率增长速度几乎是其他行业的5倍,这有望推动整体经济。周二(5月21日)发布的报告称,2018年至2022年间…

MyCat2之安装与配置文件介绍

安装 1.新建文件夹tools mkdir tools,并进入tools 2.下载MaCat wget http://dl.mycat.org.cn/2.0/install-template/mycat2-install-template-1.21.zip wget http://dl.mycat.org.cn/2.0/1.21-release/mycat2-1.21-release-jar-with-dependencies.jar 3.解压zip u…

怎样打造一份个性化画册呢?我来教你

在这个数字化的时代,传统的照片已经不能满足我们对个性化回忆的需求。个性化画册,不仅能够承载我们的记忆,还能展现自我风格。今天,就让我来教你如何打造一份属于自己的个性化画册。 1.要制作电子杂志,首先需要选择一款适合自己的…

kafka3.6.1版本学习

kafka目录结构 bin linux系统下可执行脚本文件 bin/windows windows系统下可执行脚本文件 config 配置文件 libs 依赖类库 licenses 许可信息 site-docs 文档 logs 服务日志 启动ZooKeeper 进入Kafka解压缩文件夹的config目录,修改zookeeper.properties配置文件 #t…

【吊打面试官系列】Java高并发篇 - Java 死锁以及如何避免?

大家好,我是锋哥。今天分享关于 【Java 死锁以及如何避免?】面试题,希望对大家有帮助; Java 死锁以及如何避免? Java 中的死锁是一种编程情况,其中两个或多个线程被永久阻塞,Java 死锁情况出现至…

【每日刷题】Day50

【每日刷题】Day50 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 654. 最大二叉树 - 力扣(LeetCode) 2. 119. 杨辉三角 II - 力扣&#xff08…

「动态规划」粉刷房子

力扣原题链接,点击跳转。 假设有n个房子,每个房子可以粉刷成红色、蓝色或者绿色。相邻2个房子不能刷同一种颜色。下标为i的房子粉刷成下标为j的颜色的价格是costs[i][j]。至少需要花多少钱? 我们用动态规划的思想来解决这个问题。首先定义状…

微信行驶证识别

1.官网文档 行驶证识别 | 微信开放文档 2.免费次数购买微信OCR识别 | 微信服务市场 需要购买,否则会报错{"errcode":101003,"errmsg":"not enough market quota hint: [] rid: "} 错误总结 {\"errcode\":41005,\"…

MATLAB system identification系统辨识app的使用

系统辨识 前言系统辨识第一步 选取时域数据到app第二步 分割数据第三步 设置传递函数的参数第四步 Estimate第五步 结束 前言 接上节:simulink-仿真以及PID参数整定 系统模型的辨识工作,在控制领域,一般用于开发控制器的先手工作。一般而言…

【数据结构与算法 | 基础篇】栈:中缀表达式转变为后缀表达式

1. 前言 假设我们已经知道中缀表达式和后缀表达式的概念. 我们可以用符号栈来实现中缀表达式向后缀表达式的转变. 2. 符号栈实现中缀表达式转变为后缀表达式 (1). 思路 我们设计了可变字符串与符号栈. 如果传入的字符串的字符是数字字符,则直接将该字符append到…

Python | 十、调试(pdb库)

pdb 是 Python 的官方标准库之一,提供了一个交互式源代码调试器。它可以让开发者在程序执行过程中暂停,检查代码状态(如变量的值),单步执行代码,以及运行到某个特定位置等。这些功能使得开发者能够理解代码…

调整图片和表格尺寸的命令:resizebox

\resizebox 是 LaTeX 中的一个命令&#xff0c;用于调整插入的内容&#xff08;如图像、表格、文本等&#xff09;的大小。它的语法如下&#xff1a; \resizebox{<width>}{<height>}{<content>}其中&#xff1a; <width> 和 <height> 分别表示…

IDEA提示Untrusted Server‘s certificate

如果你用的是Intellij系列IDE&#xff08;GoLand, PHPStorm, WebStorm, IDEA&#xff09;&#xff0c;突然弹出个提示『Untrusted Servers certificate 』 莫慌&#xff0c;这是因为你用了破解版的 IDE&#xff0c;破解过程中有个hosts绑定的操作&#xff1a; 0.0.0.0 account.…

代数拓扑学

啊&#xff0c;哈喽&#xff0c;小伙伴们大家好。我是#张亿&#xff0c;今天呐&#xff0c;学的是代数拓扑学 代数拓扑学是拓扑学中主要依赖 [1]代数工具来解决问题的一个分支。同调与同伦的理论是代数拓扑学的两大支柱&#xff08;见同调论&#xff0c;同伦论&#xff09;。 …

K8s集群调度续章

目录 一、污点&#xff08;Taint&#xff09; 1、污点&#xff08;Taint&#xff09; 2、污点组成格式 3、当前taint effect支持如下三个选项&#xff1a; 4、查看node节点上的污点 5、设置污点 6、清除污点 7、示例一 查看pod状态&#xff0c;模拟驱逐node02上的pod …