当前位置: 首页 > news >正文

硬件性能 - 网络瓶颈分析

简介

本文章主要通过Linux命令查看网络信息、判断是否出现网络瓶颈等简单分析方法。其他硬件性能分析如下:

1. 硬件性能 - CPU瓶颈分析

2. 硬件性能 - 掌握内存知识

3. 硬件性能 - 磁盘瓶颈分析

目录

1. 监控命令 sar

2. 带宽利用率

3. 网络延迟

4. 网络连接数

5. 模拟网络故障


 

1. 监控命令 sar

sar 命令实时查看网络情况(详细命令:Linux性能监控命令_sar & 自动保存30天历史信息)

# 监控网卡信息
sar -n DEV 间隔时间 监控次数# 监控网卡异常信息
sar -n EDEV 间隔时间 监控次数# 查看历史信息(06表示本月6号,只保存1个月信息)
sar -f /var/log/sa/sa06 -n DEV

 

每1秒输出一次网卡信息

IFACE   :网卡名
rxpck/s :每秒接收的包
txpck/s :每秒发送的包
rxkB/s  :每秒接收的大小(单位 KB)
txkB/s  :每秒发送的大小(单位 KB)
rxcmp/s :每秒接收的压缩包
txcmp/s :每秒发送的压缩包
rxmcst/s:每秒接收的多播包

 

每1秒输出一次网卡异常信息

IFACE   :网卡名
rxerr/s :每秒接收错误的数量
txerr/s :每秒发送错误的数量
coll/s  :每秒发生冲突的数量
rxdrop/s:每秒接收丢弃的数据包数量
txdrop/s:每秒发送丢弃的数据包数量
txcarr/s:每秒发送信号载波的数量
rxfram/s:每秒接收帧错误的数量
rxfifo/s:每秒接收的FIFO错误数量
txfifo/s:每秒发送的FIFO错误数量
txcomp/s:每秒传输完成的数量

 

 

2. 带宽利用率

        监测带宽利用率可以清晰知道系统当前网络传输的整体效率。如果带宽利用率接近100%,可能意味着已经达到带宽瓶颈。

由于没有命令可以直接查看带宽利用率,我们可以用 sar 的监控结果计算,公式如下:

(接收大小 + 发送大小) / 最大传输 * 100

 

接收大小 (rxkB/s) 和发送大小 (txkB/s) 如 sar 监控结果:

sar -n DEV 1

 

传输大小查看方法

1. 先根据自己的 IP 找到网卡名

ip a

2. 在查看网卡的带宽(传输大小)

ethtool 网卡名

 

根据我们刚才的结果来计算

每秒接收大小:563.63 KB
每秒发送大小:1014.05 KB
最大传输大小:1000Mb/s 换算成KB:(1000/8)*1024=128000 KB
  • 单位换算:1MB = 8Mb,1MB = 1024KB

按公式计算(乘以100是为了代入百分号)

( 563.63 + 1014.05 ) / 128000 * 100 = 1.23%

从结果来看,利用率非常低,无性能瓶颈

        当然了,如果觉得计算不方便,可以直接看发送和接收的大小是否接近最大传输。以千兆网络为例:(1000/8)*1024=128000 KB,只需要看发送和接收大小相加是不是接近 128000 即可。如果接近这个值,说明可能存在网络瓶颈;如果相差较远,则没有网络瓶颈。

 

 

3. 网络延迟

        除了带宽利用率,网络延迟也是衡量传输性能的指标之一。您可以使用工具如ping、traceroute 或者 mtr 来评估网络延迟和响应时间。如果网络延迟较高或响应时间不稳定,可能表示网络传输达到了瓶颈。

使用 ping 命令,查看另一个网络是否通畅

icmp_seq:发出ICMP回显请求
ttl     :数据包的生存时间
time    :从发送 ICMP 请求到接收到回应所花费的往返时间
# 最后一行
发送3包,接收3包,0%丢包,时间2060ms

从ping命令分析网络

  1. 较高的往返时间:当 ping 命令输出中的往返时间较高时,表示从发送请求到接收响应所需的时间较长。一般来说,正常的往返时间应该在几毫秒或几十毫秒内。当往返时间超过100毫秒或更高时,可以认为存在网络延迟问题。

  2. 延迟波动较大:ping 命令的输出中,每次往返时间的变化应保持相对稳定。如果出现明显的波动,例如从几毫秒突然跳到几百毫秒,或者时间间隔内的方差较大,那么这可能是网络连接存在延迟问题的迹象。

  3. 丢包率较高:在 ping 命令输出中,丢失的 ICMP 请求百分比(packet loss)较高,即未收到响应的请求占总请求数的比例较大时,可能是由于网络延迟导致请求无法到达目标主机或无法返回响应。

 

结合 watch 命令实时查看是否丢包(Ctrl + C 退出)

# 每3秒发送1个包
watch -n 3 ping -c 1 IP地址

   

 

4. 网络连接数

        如果网络传输达到瓶颈,可能会导致网络连接的延迟增加或连接失败。当连接请求到达系统时,如果队列已满,新的连接请求将被拒绝。将会导致网络延迟增加、带宽利用率降低等问题。

         连接数仅仅只能初步估计网络瓶颈,还需要考虑系统负载、带宽利用率、网络设备的能力等都可能对网络性能产生影响。更深入的网络性能分析和故障排除通常需要结合其他工具和指标来进行。

查看系统套接字最大连接数(默认128)

sysctl net.core.somaxconn

查看当前系统连接数

netstat -ant | grep ESTABLISHED | wc -l

   

 

5. 模拟网络故障

tc 命令模拟网络故障

# 模拟延迟100ms
sudo tc qdisc add dev 网卡名 root netem delay 100ms# 模拟丢包率10%
sudo tc qdisc change dev 网卡名 root netem loss 10%# 模拟网络延迟100ms,带宽限制为1Mbps
sudo tc qdisc add dev 网卡名 root handle 1:0 netem delay 100ms rate 1mbit# 模拟网络抖动,延迟100ms ± 50
sudo tc qdisc add dev 网卡名 root handle 1:0 netem delay 100ms 50ms distribution normal# 还原网络设置
sudo tc qdisc del dev 网卡名 root

相关文章:

硬件性能 - 网络瓶颈分析

简介 本文章主要通过Linux命令查看网络信息、判断是否出现网络瓶颈等简单分析方法。其他硬件性能分析如下: 1. 硬件性能 - CPU瓶颈分析 2. 硬件性能 - 掌握内存知识 3. 硬件性能 - 磁盘瓶颈分析 目录 1. 监控命令 sar 2. 带宽利用率 3. 网络延迟 4. 网络连接数 …...

stm32驱动MCP2515芯片,项目已通过测试

最近公司做一个项目,需要3路can通道,但是stm32看了很久,最多也就只有2个can,所以找到了一款MCP2515芯片,可以用spi驱动can。 已经实现了can的发送和接收,接收采用的是外部中断接收的方式。和单片机本身带的…...

Nginx部署前后端分离项目

dev.env.js解释 //此文件时开发环境配置文件 use strice//使用严格模式 const merge require(webpacl-merge)//合并对象 const prodEnv require(./prod.env)//导出 module.exports merge(prodEnv,{//合并两个配置文件对象并生成一个新的配置文件,如果合并的过程…...

pytorch多分类问题 CrossEntropyLoss()函数的输入size/shape不一致问题

在使用pytorch实现一个多分类任务的时候,许多多分类任务在训练过程中都会有如下的代码: criterion nn.CrossEntropyLoss() loss criterion(output, target) # output.size : [batch_size, class_num] # target.size : [batch_size]许多的初学者会卡在…...

硬盘或者U盘提示需要格式化的解决办法

插入硬盘之后提示: 使用驱动器 G:中的光盘之前需要将其格式化 是否要将其格式化? 如下图所示 顿时慌了啊,里面还有比较重要的东西呢,这一下子完蛋? 遇事找某宝,上面估计有这种技术服务。果然有这一类的技术服务&…...

Clip-Path

前言 借助clip-path,我们可以实现一些复杂的animation动画效果,我们先来简单概述一下它的特性,如MDN所描述的。 The clip-path CSS property creates a clipping region that sets what part of an element should be shown. Parts that are inside the region are shown, whi…...

Matlab绘图系列教程-Matlab 34 种绘图函数示例(下)

Matlab绘图系列教程:揭秘高质量科学图表的绘制与优化 文章目录 Matlab绘图系列教程:揭秘高质量科学图表的绘制与优化第一部分:入门指南1.1 简介关于本教程的目的与范围Matlab绘图在科学研究中的重要性 1.2 准备工作安装Matlab及其工具箱 1.3 …...

【Vue+Django】Training Management Platform Axios并发请求 - 20230703

需求陈述 由于API是特定单位/特定类别/特定教学方式的数据,故汇总数据需要循环请求不同单位/不同类别/不同教学方式。 技术要点 1.axios并发请求 2.JS for循环 3.Vue数组中出现 ob :Observer无法取值问题的解决方法 4.将数据转化为数组 5.一次请求所有数据后&…...

smart Spring:自定义注解、拦截器的使用(更新中...)

文章目录 〇、使用自定义注解的好处和工作原理一、如何使用自定义注解1.自定义一个注解2.在类、属性、方法上进行使用3.元注解 二、使用拦截器的好处和工作原理三、如何使用拦截器参考 本博客源码: 〇、使用自定义注解的好处和工作原理 自定义注解是Java语言提供的…...

php导出pdf

插件官网:TCPDF 博主用的是tp6框架 、tcpdf插件 composer require tecnickcom/tcpdf --ignore-platform-reqs 后面是忽略平台要求的参数 ---------------中文乱码start------------------ 关于中文乱码问题: 网上说的下载字体放入fonts 利用tools…...

【ECMAScript6_2】字符串

1、字符的Unicode表示法 ES6 加强了对 Unicode 的支持,允许采用\uxxxx形式表示一个字符,其中xxxx表示字符的 Unicode 码点。(\u0000-\uFFFF) 码点超过取值范围之后不能正确解读,但是只要给码点加上{}就可以正确解读。 …...

37.RocketMQ之Broker消息存储源码分析

highlight: arduino-light 消息存储文件 rocketMQ的消息持久化在我们在搭建集群时都特意指定的文件存储路径,进入指定的store目录下就可以看到。 下面介绍各文件含义 CommitLog 存储消息的元数据。produce发出的所有消息都会顺序存入到CommitLog文件当中。 CommitLog由多个文件…...

RabbitMq应用延时消息

一.建立绑定关系 package com.lx.mq.bind;import com.lx.constant.MonitorEventConst; import lombok.extern.slf4j.Slf4j; import org.springframework.amqp.core.*; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annota…...

【WEB自动化测试】- 浏览器操作方法

一、常用方法 1. maximize_window() 最大化窗口 (重点) 说明:如果能够在打开页面时,全屏显示页面,就能尽最大可能加载更多的页面,提高可定位性 2. set_window_size(width, height) 设置浏览器窗口的大小 (了解) 场景&#xff1…...

VSCode设置鼠标滚轮滑动设置字体大小

1:打开"文件->首选项->设置 2 :打开settings.json文件 英文版这里有个坑 一般点击我下图右上角那个{ } 就可以打开了 在 设置的json 文件中加入如下 “editor.mouseWheelZoom”: true { “editor.mouseWheelZoom”: true, “json.schemas”: [ ]}...

Spring MVC是什么?详解它的组件、请求流程及注解

作者:Insist-- 个人主页:insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注 前言 本文将讲解Spring MVC是什么,它的优缺点与九大组件,以及它的请求流程与常用的注解。 目录 一、Spring MVC是什…...

基于Spring Boot的广告公司业务管理平台设计与实现(Java+spring boot+MySQL)

获取源码或者论文请私信博主 演示视频: 基于Spring Boot的广告公司业务管理平台设计与实现(Javaspring bootMySQL) 使用技术: 前端:html css javascript jQuery ajax thymeleaf 后端:Java springboot框架 …...

docker 基本命令安装流程

docker 基本命令安装流程 1.更新Ubuntu的apt源索引 $ sudo apt-get update2.安装包允许apt通过HTTPS使用仓库 $ sudo dpkg --configure -a $ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common3.添加Docker官方GPG key $ curl -f…...

尚硅谷大数据Flink1.17实战教程-笔记02【Flink部署】

尚硅谷大数据技术-教程-学习路线-笔记汇总表【课程资料下载】视频地址:尚硅谷大数据Flink1.17实战教程从入门到精通_哔哩哔哩_bilibili 尚硅谷大数据Flink1.17实战教程-笔记01【Flink概述、Flink快速上手】尚硅谷大数据Flink1.17实战教程-笔记02【Flink部署】尚硅谷…...

【LeetCode每日一题合集】2023.7.3-2023.7.9

文章目录 2023.7.3——445. 两数相加 II(大数相加/高精度加法)2023.7.4——2679. 矩阵中的和2023.7.5——2600. K 件物品的最大和(贪心)代码1——贪心模拟代码2——Java一行 2023.7.6——2178. 拆分成最多数目的正偶数之和&#x…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

day36-多路IO复用

一、基本概念 &#xff08;服务器多客户端模型&#xff09; 定义&#xff1a;单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用&#xff1a;应用程序通常需要处理来自多条事件流中的事件&#xff0c;比如我现在用的电脑&#xff0c;需要同时处理键盘鼠标…...

tomcat入门

1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效&#xff0c;稳定&#xff0c;易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...

深入理解Optional:处理空指针异常

1. 使用Optional处理可能为空的集合 在Java开发中&#xff0c;集合判空是一个常见但容易出错的场景。传统方式虽然可行&#xff0c;但存在一些潜在问题&#xff1a; // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...

MFE(微前端) Module Federation:Webpack.config.js文件中每个属性的含义解释

以Module Federation 插件详为例&#xff0c;Webpack.config.js它可能的配置和含义如下&#xff1a; 前言 Module Federation 的Webpack.config.js核心配置包括&#xff1a; name filename&#xff08;定义应用标识&#xff09; remotes&#xff08;引用远程模块&#xff0…...

OPENCV图形计算面积、弧长API讲解(1)

一.OPENCV图形面积、弧长计算的API介绍 之前我们已经把图形轮廓的检测、画框等功能讲解了一遍。那今天我们主要结合轮廓检测的API去计算图形的面积&#xff0c;这些面积可以是矩形、圆形等等。图形面积计算和弧长计算常用于车辆识别、桥梁识别等重要功能&#xff0c;常用的API…...