Linux性能优化-网络篇

devtools/2024/9/24 13:15:56/

文章目录

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


前言

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


一、网络性能指标

  • 带宽,表示链路的最大传输速率,单位通常为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.ppmy.cn/devtools/46511.html

相关文章

Kotlin 抽象类

文章目录 定义构造函数普通成员(属性或方法)抽象成员(属性或方法)实例化抽象类使用伴生对象继承抽象类 定义 在 Kotlin 中,抽象类使用abstract class定义: abstract class 类名 { 属性/方法 }我们可以尝试…

通过 .NET COM 互操作设置 System.Drawing.Color

1. 问题背景 在尝试使用 Aspose.Words 库执行 COM 互操作时,遇到了一个关键问题:无法设置颜色。理论上,可以通过向 DocumentBuilder.Font.Color 赋值来设置颜色,但尝试时却出现了 OLE 错误 0x80131509。 以下代码示例演示了这个…

原生js实现文件分片上传

分片上传是一种文件上传技术,它允许将大文件分割成多个较小的片段(通常称为“分片”或“块”),然后将这些片段分别上传到服务器。服务器在接收到所有分片后,会将它们组合成一个完整的文件。 分片上传有以下优点&#…

Linux系统之mv命令的基本使用

Linux系统之mv命令的基本使用 一、mv命令介绍1. mv命令简介2. mv命令的使用结果 二、mv命令的使用帮助1. 在命令行的帮助信息2. mv常用选项 三、mv命令的基本使用1. 创建源目录和目标目录2. 新建测试文件3. 将源目录文件复制到目标目录4. 将文件进行改名5. 将目录的所有文件转移…

css-表头筛选的特定样式

背景 饿了么的表头筛选样式比较简单,如图1,产品觉得不够醒目(觉得用户可能不知道这是筛选,我表示不理解) 要求改进筛选的样式,达到图2的效果,主要是状态列,既希望这列的宽度固定&a…

异地公司如何文件共享?

很多企业面临着异地办公的挑战。随着公司业务的扩展和发展,分布在不同地区的办公室需要频繁地共享文件和数据。由于网络环境的限制,异地公司文件共享变得困难且耗时。在这篇文章中,我们将介绍一种能够解决异地公司文件共享问题的解决方案。 科…

管理能力学习笔记十二:高效组织会议

会议常见的问题 没有决策缺乏准备组织混乱主持人独角戏 学习目标 有效管理:可将会议时间减少25%高效的会议可以有效的节省成本,提高绩效 高效组织会议的四大原则 原则一:制定会议规则 与下属一起制定会议规则,达成共识。 一…

初始C++(类与对象)

感谢大佬的光临各位,希望和大家一起进步,望得到你的三连,互三支持,一起进步 个人主页:LaNzikinh-CSDN博客 文章目录 前言一.引用二.内联函数三.类和对象总结 前言 之前讲c的命令空间和第一个程序的运行,继…