首页 > 其他分享 >负载均衡压力测试的方法

负载均衡压力测试的方法

时间:2023-08-18 17:47:13浏览次数:31  
标签:负载 均衡 压测 测试 服务器 连接

四层负载均衡采用开源软件LVS(Linux Virtual Server)结合Keepalived的方式实现负载均衡,七层负载均衡由Tengine实现负载均衡。

压力测试建议

在进行压力测试时,配置建议如下:

  • 压测负载均衡转发能力建议使用短连接。

    一般来说压测除了验证会话保持和均衡性等功能外,主要是验证负载均衡的转发能力,因此使用短连接比较合适,用于测试负载均衡和后端服务器的处理能力。使用短连接测试时,需要注意客户端端口不足的问题。

  • 压测负载均衡吞吐量建议使用长连接,用于测试带宽上限或特殊业务。

    压测工具的超时时间建议设置为一个较小值,如5秒。超时时间太大的话,测试结果会体现在平均响应时间加长,不利于判断压测水位是否已到达。超时时间调小,测试结果会体现在成功率上,便于快速判断压测水位。

  • 后端服务器提供一个静态网页用于压测,以避免应用逻辑带来的损耗。
  • 压测时,监听配置建议如下:
    • 不开启会话保持功能,否则压力会集中在个别后端服务器。
    • 关闭健康检查功能,减少健康检查对后端服务器的访问请求。
    • 性能测试服务的5000并发规格能够提供5个及5个以上的公网IP。

压力测试工具建议

不建议您使用Apache ab作为压力测试工具:Apache ab在大量并发场景下存在3s、6s、9s阶梯式停顿的现象。Apache ab会通过判断content length来确定请求是否成功,而负载均衡挂载多台后端服务器时,返回的content length会不一致,导致测试结果有误。

可能导致压测性能低的原因

四层监听经过LVS后直接到达后端服务器;七层监听经过LVS后,还需要经过Tengine才到达后端服务器。

如果您使用七层监听进行压力测试,发现压测性能比较低。可能是以下原因造成的:

  • 客户端端口不足。

    在进行压力测试时,客户端端口不足会导致建立连接失败。负载均衡会默认抹除TCP连接的timestamp属性,Linux协议栈的tw_reuse(time_wait 状态连接复用)无法生效,time_wait状态连接堆积导致客户端端口不足。

    解决方法:客户端使用长连接代替短连接。使用RST报文断开连接,即socket设置SO_LINGER属性。

  • 后端服务器accept队列满。

    后端服务器accept队列满,导致后端服务器不回复syn_ack报文,客户端超时。

    解决方法:默认net.core.somaxconn的值为128,执行sysctl -w net.core.somaxconn=1024命令更改net.core.somaxconn的值,并重启后端服务器上的应用。

  • 后端服务器连接过多。

    由于架构设计的原因,使用七层负载均衡时,用户长连接经过Tengine后变成短连接,可能导致后端服务器连接过多,从而表现为压测性能低。

  • 后端服务器依赖的应用成为瓶颈。

    请求经过负载均衡到达后端服务器后,后端服务器本身负载正常,但由于所有的后端服务器上的应用又依赖其它应用,例如数据库,当数据库成为瓶颈时,也会引起性能降低。

  • 后端服务器的健康检查状态异常。

    在压测时,容易忽略后端服务器的健康检查状态,如果有后端服务器健康检查失败或者健康检查状态经常跳跃(好到坏,又从坏到好,反复变化),也会导致压测性能低。

转载自:压力测试的方法 (alibabacloud.com)

标签:负载,均衡,压测,测试,服务器,连接
From: https://www.cnblogs.com/dier-gaohe/p/17641149.html

相关文章

  • 8月18日测试总结
    8月18日测试总结触手(xyx)题目大意:给定\(n\)个柱子,每一次只能刷相邻的\(x\)个柱子,在这\(x\)个柱子中,只能刷到其中高度最低的,问最大的粉刷面积及其最少操作次数思路:首先,用一个单调队列维护可能的操作高度,然后,再用一个单调队列维护当前位置的最终高度,也就是所有操作高度......
  • 测试 | CICD | JEKINS 持续
    #Jenkins持续集成##介绍: *持续集成CI *jenkins介绍 Jenkins是开源的java语言开发的持续集成工具,支持CI(持续集成),CD(持续交付项目)。集成Jenkins可以用于一些测试和项目部署。##jenkins安装配置 *1.下载war包放到一个没有中文的目录下 *2.使用指令启动jenkins服务--bs架......
  • SPI驱动0.96寸OLED单色屏刷新率测试以及代码优化改进,方法适用于SPI驱动其他设备
    目前嵌入式当中OLED常用驱屏方式有两种:SPI或IIC。以速度来讲,SPI速度相较于IIC会快上一些,硬件IIC相较于模拟IIC速度又会快上一些。此外还有模拟SPI的,但该种用法我遇到较少,本文就硬件SPI驱动OLED屏幕做一个简单的刷新率测试。 测试硬件平台:CH32V307VCT6+杜邦线连接0.96寸SPI接口O......
  • 软件测试|测试平台开发-Flask 入门:编写第一个简单 Web 应用
    简介Flask是一个轻量级的PythonWeb框架,它使得创建Web应用变得简单快捷。相比于Django框架,它具有以下的优点:轻:Flask是一个轻量级的Web框架,使用Python语言编写易:较其他同类型框架更为灵活、轻便且容易上手快:小型团队在短时间内就可以完成功能丰富的中小型网站或Web服务......
  • 软件测试|使用 VMware 安装 Ubuntu 虚拟机的详细教程
    简介在日常工作中,我们有时候会遇到需要在Linux系统中部署环境,但是申请服务器资源的时效性又不高,很多时候就需要我们自己在电脑中有一套Linux的环境,但是如何在Windows电脑中部署Linux系统呢?很多时候,在电脑中创建一个虚拟机是我们的首选,在本教程中,我们将介绍如何使用VMware虚拟化软......
  • 软件测试|Linux三剑客之grep命令详解
    简介grep是一款在Linux和类Unix系统中广泛使用的文本搜索工具。它的名字来源于GlobalRegularExpressionPrint(全局正则表达式打印),它的主要功能是根据指定的模式(正则表达式)在文本文件中搜索并打印匹配的行。grep非常强大且灵活,可以用于日志分析、文件过滤、代码搜索等多种场......
  • 软件测试|Linux三剑客之sed命令详解
    简介sed(StreamEditor)是一款流式文本编辑器,在Linux和类Unix系统中广泛使用。它的设计目的是用于对文本进行处理和转换,可以用于替换、删除、插入、打印等操作。sed命令通过逐行处理文本,允许您使用简单的命令来编辑大量文本数据。本文将详细介绍sed命令的基本用法和一些常见的......
  • java私有方法单元测试
    使用junit5,类的代码为packagecom.sysush.tool;publicclassTool1{privatevoidhelloworld(){System.out.println("helloworld");}privateintadd(Integera,Integerb){returna+b;}}测试代码为:importorg.junit.jupiter.api.Test;importjava.lang......
  • vue3项目,vie框架,相对路径图片,测试时正常显示,发布后不显示问题解决方案
    参考Vite官网的说明,修改图片的引用路径后,图片发布后可以正常显示constimgUrl=newURL('./img.png',import.meta.url).hrefdocument.getElementById('hero-img').src=imgUrl官网地址: https://cn.vitejs.dev/guide/assets.html ......
  • OpenCV3.3深度神经网络DNN模块 实例1:读取单张PNG文件(opencv3.3环境测试)
    1#include<opencv2/opencv.hpp>2#include<opencv2/dnn.hpp>//dnn模块类3#include<iostream>45usingnamespacecv;6usingnamespacestd;78intmain(intargc,char**argv){9Matsrc=imread("tx.png");10......