九、性能测试之网络测试

2023-09-16 16:53:24

一、网络知识

  • 1、网络–接收方限制-网络连接配置
    sysctl:sysctl用于运行时配置内核参数,这些参数位于/proc/sys目录下。

  • linux系统启动,依次读取

    • /etc/sysctl.d/*.conf
    • /run/sysctl.d/*.conf
    • /usr/lib/sysctl.d/*.conf
  • sysctl --help 查看帮助

  • 2、我们通常说的网络,都是在tcp/ip协议族的基础上运作的,http协议,只是这个协议族中的一个

    • tcp协议:通过数据发送者和接收者相互回应对方发来的确认信息,可靠的进行数据传输
    • ip协议:指定数据发送的ip信息,以及通过路由器转发数据
  • 3、三次握手和四次挥手

    • tcp三次握手
      • 初次见面,握手(你好,你好,你好),确保数据100%准确到达
      • tcp组成:源地址、源端口、目的地址、目的端口
        • 源地址:发起方的地址(ip)
          • 肯定唯一,但可能不固定
        • 源端口:发起通信的端口
          • 每一次通信,都要占用1个端口
        • 目的地址:接收方(服务)的地址(ip)
        • 目的端口:接收方(服务)的端口
        • 端口:
          • 电脑最多 65535个端口
          • 1- 1023:公认端口,绑定在一些特定的服务器上,不能被使用,比如常见的 21、22、25、80、443
          • 1024-49151:注册端口,松散的绑定在一些服务上,比如8080、9800、3000
          • 49152~65535: 动态私有端口,约16800个
          • 一台电脑,一般能用于tcp通信的端口,大约是16400个
        • tcp源端口
          • 每一次通信,都会占用一个端口
            • 端口开启:发送方分配一个端口,数据从端口出去,进入网络
            • 端口关闭:端口开启的时间到了,关闭端口
          • 对于普通使用,完全没有问题
            • 但是性能测试,就可以会有问题
              • 性能测试,在发起方1台机器上,短时间发起大量请求,占用大量端口,导致端口不够用
              • 问题:address already in use:connect
              • 优化方向:
                • 扩大端口范围: 1024 ~ 65535 达到6.4w端口
                • 让端口占用的时长缩短: 去掉keepalive
              • 定位问题:
                • 1、查看报错,根据接口返回进行分析
                  • windows(大多数情况,性能测试发起方系统为windows)
                  • netstat -ano | find "TCP" /i /c
                  • /i:搜索时不区分大小写
                  • /c:统计搜索结果
                  • 如果你发起方机器,这个命令的数值,约1.4w,可以肯定,你本地端口成为性能瓶颈
                  • linux/mac
                  • netstat -ano | grep "TCP" | wc -l
                  • ss -s
    • 二、判断带宽是否有问题

      • 1B=8bit
      • 1Mb/s=1024Kb/s=1024/8KB/s=128KB/s 我们可以在聚合报告查看吞吐率的发送和接收哪一个更接近这个的值,假如服务器是1mb/s带宽,如果这边的值已经接近128了,那带宽就是瓶颈
      • 2Mb/s=256Kb/s,4Mb/s=512KB/s 在这里插入图片描述
      • 1)查看本机带宽:
        • 1、ping目标服务器
          • 看时间 没有测试前的时间 与在进行性能测试时的 时间之间有没有明显的差异

          • 看丢包: 如果有丢包 肯定时网络瓶颈
            在这里插入图片描述

            • ps:有的服务器会禁ping命令
        • 2、查看网卡
          • 网络传输介质与终端设备连接的关隘
          • 发起方\源
            • 1.0Gbps=1024Mbps=1024/8MB/s=128MB/s
            • 200Mbps=100/8MB/s=12.5MB/s
          • 服务方\目的地
            • linux :ethtool 网卡名称| grep Speed
              在这里插入图片描述
            • 修改命令:ethtool -s 网卡名称 Speed 1000

    三、网络调优实战:当接口报地址被占用/连接超时

    • 原因1:是源端口不够用
    • HttpHostConnectException:Connect to 192.163.xxx:8080[192.163.****] Connection time out:connect

在这里插入图片描述

  • 解决方案:
    • 1、我们尝试去掉keep-alive,发现没有根本解决问题,只是把报错时间延后

在这里插入图片描述

  • 2、在windows和linux解决源端口的问题
  • 1)windows:修改2个注册表
    • 1、注册表:[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Service\Tcpic\Parameters]:修改里面的MaxUserPort:

      • 如有这个值,则设置为十进制的65534
      • 没有这个值,则新增DWORD,name为MaxUserPort,value为65534
      • 重启系统
    • 2、注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Sevices\Tcpio\Parameters: 修改里面的TcptimedWaitDelay

      • 如有,设置一个十进制是事件,单位秒(默认240s)
      • 没有,则新增DWORD,name为TcpTimedWaitDelay,value为十进制的时间30
      • 重启系统
        在这里插入图片描述
    • 2)Linux:修改端口范围
      • sysctl -a |grep net.ipv4.ip_local_port_range 查看当前系统的端口号

      • net.ipv4.ip_local_port_range = 32768 60999 定义了本地TCP/UDP端口范围,即可用的端口号范围 默认值为32768-60999,可用的约为2.8W
        在这里插入图片描述

      • 改端口范围:

        # 把端口号过滤,设置为1024至65535,并使其生效
        sysctl -w net.ipv4.ip_local_port_range="1024 65535"
        sysctl -p
        
  • 原因2:服务器要调优
  • 解决方案:
    • os操作系统:
      • 1、sysctl:用于运行时配置内核参数
        • 这些参数位于/proc/sys目录下
        • linux系统启动,依次读取
          • /etc/sysctl.d/*.conf
          • /run/sysctl.d/*.conf
          • /usr/lib/sysctl/d/*.conf
        • sysctl --help
          在这里插入图片描述
        • 对配置进行修改:在这里插入图片描述
    • 2、ulimit:用于控制shell进程的资源(临时修改)
      • ulimit -a 查看当前所有的限制
        • 第一列:限制项
        • 第二列:该限制项目命令参数及单位
        • 第三列:目前限制值(unlimit表示不限制)
        • 注意:这个是临时修改限制值(立刻生效,但是系统重启后还原)
          在这里插入图片描述
    • 修改限制:ulimt -要修改的参数 -修改后的值
      在这里插入图片描述

参数含义用法
-ccore文件上限设定core文件的最大值,单位:块
-d数据块大小程序数据块最大值:单位:KB
-e调度优先级最高的优先级
-f文件大小文件最大大小,单位:块
-i待处理的信号最大待处理信号
-l最大内存锁内存锁最大值,单位:KB
-m最大内存大小可使用的内存最大值,单位:KB
-n打开文件数量同一时间最多可开启的文件数量
-p缓冲区大小指定管道缓冲区的大小,单位:512字节
-qPOSIX消息队列队列最大长度,单位:字节
-r时间优先级时间最高优先级
-s栈大小栈的最大值,单位:KB
-tCPU时间进程使用CPU的时间上限
-u程序数量用户最多可开启的进程+线程数目
-v虚拟内存可以使用的虚拟内存上限,单位:KB
-x文件锁最多文件数量
  • 3、永久修改vim /etc/security/limits.conf
    • 使用演示(配置完了记得保存重启
      在这里插入图片描述

    • 上面的值具体是什么含义呢,来看下面吧:

      • 配置范围配置
        • *代表所有用户
        • %代表所有用户组在这里插入图片描述
      • 是否强制配置
        • soft:非强制限制
        • hard:强制限制
      • 具体选项配置
        • 我们一般最关注nofile(同一时间最多可开启的文件数量)
        • nproc (用户最多可开启的进程+线程数目)
          在这里插入图片描述
    • 应用连接池:
      • 1、应用连接池
      • 2、数据库连接池
    • 接收方(目的地)限制:

    • 查看某个进程允许打开的最大文件数

      • cat /proc/PID/limits

      • ps: 不管你是用 ulimit命令修改,还是 修改文件limits.conf, 你的应用程序要使用这个配置,那么你的应用程序需要重启
        在这里插入图片描述

      • cat /proc/sys/fs/file-max 查看系统允许打开的最大数量
        在这里插入图片描述

    • 检查系统配置是否成为瓶颈:查看某个进程当前已经打开的文件总数

      • lsof -p PID | wc -l 查看具体某个进程打开的文件数
      • lsof | wc -l 查看当前系统打开的总文件数量
        • 我们操作的时候可以先查看某个进程允许打开的最大文件数(cat /proc/PID/limits),然后再查看具体某个进程打开的文件数(lsof -p PID | wc -l),然后再进行修改(vim /etc/security/limits.conf
    • 禁ping
# 禁ping
sysctl -w net.ipv4.icmp_echo_ignore_all=1 修改
sysctl -w net.ipv4.route.flush=1 刷新
sysctl -p 生效

# 开启
sysctl -w net.ipv4.icmp_echo_ignore_all=0
sysctl -w net.ipv4.route.flush=1
sysctl -p
更多推荐

半导体IC电子器件需要老化吗?

前言本文表明,基于初始时刻故障率的时间导数的浴盆曲线(BTC)可以被视为老化测试(BI​​T)是否应该进行的合适标准。进行。还表明,上述标准实际上是产品制造商从众多供应商处收到的批量生产组件的随机统计故障率(SFR)的方差,这些供应商对可靠性的承诺是未知的,并且它们的随机SFR因此,可能会在一个非常大的范围内变化,从零

国内首家!阿里云 Elasticsearch 8.9 版本释放 AI 搜索新动能

简介:阿里云作为国内首家上线Elasticsearch8.9版本的厂商,在提供ElasticsearchRelevanceEngine™(ESRE™)引擎的基础上,提供增强AI的最佳实践与ES本身的混合搜索能力,为用户带来了更多创新和探索的可能性。近年来,人工智能的快速发展和广泛应用在各个行业中都取得了显著的成果。在搜

2023年中国研究生数学建模竞赛D题解题思路

为了更好的帮助大家第一天选题,这里首先为大家带来D题解题思路,分析对应赛题之后做题阶段可能会遇到的各种难点。稍后会带来D题的详细解析思路,以及相关的其他版本解题思路成品论文等资料。赛题难度评估:A、B>C>E、F>D选题人数评估:D>E、F>C>A、BD题区域双碳目标与路径规划研究以当下热门话题双碳碳中和为命题背景设置

内网穿透的应用-Cloudreve搭建云盘系统,并实现随时访问

文章目录1、前言2、本地网站搭建2.1环境使用2.2支持组件选择2.3网页安装2.4测试和使用2.5问题解决3、本地网页发布3.1cpolar云端设置3.2cpolar本地设置4、公网访问测试5、结语1、前言自云存储概念兴起已经有段时间了,各互联网大厂也纷纷加入战局,一时间公有云盘遍地开花。但一段时间后,公有云盘潜在的

【2023全网最全最火】Selenium WebDriver教程(建议收藏)

在本教程中,我将向您介绍SeleniumWebdriver,它是当今市场上使用最广泛的自动化测试框架。它是开源的,可与所有著名的编程语言(如Java、Python、C#、Ruby、Perl等)一起使用,以实现浏览器活动的自动化。通过本文,我将告诉您开始使用SeleniumWebDriver测试Web应用程序所需了解的所

https跳过SSL认证时是不是就是不加密的,相当于http?

https跳过SSL认证时是不是就是不加密的,相当于http?,其实不是,HTTPS跳过SSL认证并不相当于HTTP,也不意味着没有加密。请注意以下几点:HTTPS(HypertextTransferProtocolSecure)本质上是在HTTP的基础上添加了安全性层(SSL/TLS),用于加密和保护数据传输。通过使

一、并发编程之----AQS上

对于一个程序员来说,需要解决多线程问题,这就需要好好学习下并发了。并发编程设计比较广泛,那我们就先从线程、进程开始吧一、线程、进程二、并发1、为什么会出现2、是什么并发是针对一个共享变量,多个线程同一时间去编辑该共享变量。3、会出现什么问题其中一个线程a获取到共享变量x后进行修改,而这一时刻,线程b拿到了共享变量x,也

华纳云:如何搭建Nginx服务器做到负载均衡

要搭建Nginx服务器实现负载均衡,您可以使用Nginx作为反向代理来分发客户端请求到多个后端服务器。以下是一个基本的步骤指南:前提条件:您需要一台安装有Nginx的服务器。您需要有多台后端服务器,这些服务器将处理客户端请求。步骤:安装Nginx:如果您还没有安装Nginx,请使用适合您操作系统的包管理工具来安装Ngi

【MATLAB】【函数介绍】cp2tform函数从控制点对推断空间变换

官方链接:https://ww2.mathworks.cn/help/images/ref/cp2tform.html?s_tid=doc_ta.cp2tform函数的作用是根据传入的控制点对的坐标推断空间变换参数。函数语法如下:从控制点对推断空间变换,并将此变换作为tform结构返回,有些转换类型具有可选的富家参数t

【EasyExcel】excel表格的导入和导出

【EasyExcel】excel表格的导入和导出【一】EasyExcel简介【二】EasyExcel使用【1】EasyExcel相关依赖【2】写Excel(1)最简单的写(方式一)(2)最简单的写(方式二)(3)排除模型中的属性字段(4)向表格中导出指定属性(5)插入指定的列(6)复杂头数据写入(7)重复写到Excel

c++用dijkstra堆优化版求严格次短路(洛谷p2865)acwing(Tle)版本

先看原题:贝茜把家搬到了一个小农场,但她常常回到FJ的农场去拜访她的朋友。贝茜很喜欢路边的风景,不想那么快地结束她的旅途,于是她每次回农场,都会选择第二短的路径,而不象我们所习惯的那样,选择最短路。贝茜所在的乡村有R(1\leR\le10^5)R(1≤R≤105)条双向道路,每条路都联结了所有的N(1\leN\le50

热文推荐