Java安装并使用Jmter测试微服务高并发下的服务雪崩场景

news2024/11/16 13:52:22

高并发会给微服务带来什么样的的问题?

在微服务架构中,我们将业务拆分成一个个的服务,服务和服务之间可以互相调用,但是由于网络原因或者自身的原因,服务并不能保证服务100%是可用的,如果单个服务出现问题,调用这个服务的时候就会出现网络延迟在系统中一直阻塞等待(阻塞就意味着线程不能释放,大量的线程都会占用在这里),此时如果有大量的网络请求(高并发)涌入,会形成任务堆积,最终导致服务瘫痪

tomcat支持的线程是200-400,如果大于这个访问量就会无法访问

如果系统因为某个方法阻塞太久会直接影响到这个系统的其他方法,这个下面我们就去演示

以代码的形式模拟上述场景

进行以下修改

1 由于OrderController中代码已经很多了,这里新建一个测试的OrderController2用来模拟高并发带来微服务出问题带来的阻塞问题

2 为了保证只有一个OrderController能够运行,我们把正常的OrderController的@RestController注掉

3 模拟调用商品微服务需要两秒阻塞

4 为了不产生大量垃圾数据,把保存信息注掉

5 由于tomcat支持的线程数是200-400,我们为了方便测试修改配置文件让tomcat最大线程数改成10,默认是200

 #端口server:

server :

  port : 8091

 #显示tomcat最大线程数为10 默认200

  tomcat :

  max-threads : 10

6 新增测试方法 用来演示:如果系统因为某个方法阻塞太久(下单方法)会直接影响到这个系统的其他方法(测试方法)

 //测试高并发

@RequestMapping( "order/test" )

public String test(){

    return "测试高并发" ;

}

修改完之后重启Order服务进行测试,正常访问测试方法是没有任何问题的而且访问速度很快

接下来就要测试高并发下会给我们的测试方法带来什么样的影响

测试之前,我们需要借助一个工具进行测试jmeter

下面就安装jmeter以及进行高并发测试

什么是Jmeter?

Jmeter是Apache JMeter 是 Apache 组织基于 Java 开发的压力测试工具,用于对软件做压力测试。它的功能十分强大,今天我们只做测试高并发请求

下载Jmeter

下载网址:https://jmeter.apache.org/download_jmeter.cgi

下载到本地进行解压缩目录如下

我们只需要关心两个地方 启动文件和配置文件

Jmeter进行汉化

打开配置文件修改国际语言

language=zh_CN

保存重启服务(双击bat文件)

汉化前

汉化后

汉化成功

使用Jmeter进行高并发测试

1 添加线程组

2 配置线程并发数

3 添加HTTP取样

右键刚才配置好的线程组新增HTTP取样器

4 配置取样 根据项目配置和接口路径填写即可

5 为了方便查看并发发送结果,添加一个监听器 察看结果树

右键HTTP请求

6 启动jmeter高并发发送请求测试接口

点击启动按钮并且点击yes并且保存启动jmeter高并发发送请求

点击save保存

发现jemter已经启动成功并且已经发送了大量请求,绿色表示发送成功

这时候再访问我们的测试方法.看看他是不是会受到订单方法阻塞而受到影响 http://localhost:8091/order/test

很明显已经被影响了,虽然可以正常访问,但是没有那么快了,至此我们的代码测试和jmeter测试完成!

总结

通过测试发现,由于order方法囤积了大量阻塞线程请求,导致test方法出现了问题,这就是服务雪崩的雏形

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

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

相关文章

【kubernetes系列】Kubernetes之service

本章节将分享一下关于kubernetes中service的相关知识。 一、service 概述 Service也是Kubernetes里的最核心的资源对象之一,正是因为对此概念的支持,Kubernetes在某种角度下可以被看成是一种微服务平台。由于Kubernetes中的pod并不稳定,比…

从0到1精通自动化测试,pytest自动化测试框架,pytest分布式执行(pytest-xdist)(十六)

一、前言 平常我们手工测试用例非常多时,比如有1千条用例,假设每个用例执行需要1分钟 如果一个测试人员执行需要1000分钟才能执行完,当项目非常紧急的时候,我们会用测试人力成本换取时间成本,这个时候多找个小伙伴把…

【技术操作】如何通过抓包来分析EasyCVR不回复上级平台的invite请求?

EasyCVR平台基于云边端协同架构,可支持多协议、多类型的海量设备接入与分发,平台既具备传统安防视频监控的能力,也具备接入AI智能分析的能力,在线下均有大量应用。 有用户反馈,在级联时,使用EasyCVR作为下级…

【2023年全新保姆级教程】解决Ubuntu文件系统磁盘空间不足low disk space on filesystem root

** 解决Ubuntu22.04文件系统磁盘空间不足low disk space on filesystem root ** 大家好,我是洲洲,欢迎关注,一个爱听周杰伦的程序员。关注公众号【程序员洲洲】即可获得10G学习资料、面试笔记、大厂独家学习体系路线等…还可以加入技术交流…

QGIS实战操作-解决TIFF影像黑边问题

QGIS实战操作-解决TIFF影像黑边问题 问题描述 "TIFF图像黑边问题"就是当我们处理或使用TIFF格式的遥感或者地理信息数据时,经常会在图像边缘看到一些不该出现的黑色区域,这些黑边可能会影响我们对图像的观看体验,甚至可能对图像的…

Unity 自定义代码模板

文章目录 1. Unity 中自带的代码模板创建自己的代码模板3. 代码模板的修改4. 自定义标签 1. Unity 中自带的代码模板 在 Unity 的安装目录下找到 Unity\Editor\Data\Resources\ScriptTemplates 文件夹,结构如下: 对应上图可得出: 文件名后…

CSS知识点汇总(一)

介绍一下标准的 CSS 的盒子模型? 两种盒子模型:IE盒模型(border-box)、W3C标准盒模型(content-box) 盒模型: 分为内容(content)、填充(padding)、边界(margin)、 边框(border)四个部分&#x…

IntelliJ IDEA maven 引用本地 jar 文件

一、背景说明 由于某些特定原因,不能在远程maven仓库中下载所需要版本的jar文件,需要在maven中引用本地jar文件。 二、解决方案 1、创建 libs 目录 为了方便jar包管理,可以在工程目录下,创建一个与src目录平级的libs目录。如下…

OpenCV之Window开发环境配置

下载opencv开发包 win配置: 双击SDK包解压 解压中 解压成功 配置环境变量 验证环境 创建控制台应用并配置工程属性表添加opencv环境 创建属性表 配置属性 复制属性表并修改名Project1X64_Debug与Project1X64_Release 导入属性表 测试opencv功能 示例代码 #include <ope…

rsync安装使用

目录 一、磁盘性能测试安装fio磁盘性能测试工具测试内容为顺序读、随机读、顺序写、随机写、随机读写结果分析 二、CPU性能测试安装sysbench性能测试工具结果分析 三、内存性能测试结果分析 四、网络性能测试测试iperf3工具测试结果分析1.测试TCP吞吐量2 . 测试UDP丢包和延迟 此…

Kubernetes-Ingress、Ingress Controller、Ingress Class

概念 1.Ingress 是对K8S集群中服务的外部访问进行管理的 API 对象。Ingress 公开从集群外部到集群内服务的 HTTP 和 HTTPS 路由。 流量路由由 Ingress 资源上定义的规则控制。 2.Ingress Controller 通常负责通过负载均衡器来实现 Ingress。 3.必须拥有一个 Ingress Controller…

【已解决】如何下载使用公司内部Maven私有仓库中的依赖

文章目录 1、前言2、解决办法3、总结 1、前言 ​今天刚来公司实习&#xff0c;面对leader抛来的项目和文档&#xff0c;对于第一次实习的我&#xff0c;显然有点手足无措&#xff0c;于是就按着平时写代码的习惯。1、拉代码放本地&#xff1b;2、开始导入项目依赖&#xff1b;…

go channel 详解

一、概述 在Go语言中&#xff0c;channel是一种特殊的类型&#xff0c;用于在并发编程中实现不同的goroutine之间的通信和同步。本文将深入探讨golang的channel是如何工作的&#xff0c;并介绍如何使用channel来提高程序的性能和可靠性。 二、什么是Channel&#xff1f; 在G…

【Opencv】----- 图片无缝融合

上次写了一篇关于GAN缺陷生成的图片的&#xff0c;发现大家的对这个根本不感兴趣&#xff0c;可能是用于在座的各位觉得样本有的是&#xff0c;我为什么还苦哈哈的去生成啊&#xff0c;说的也不是没有道理&#xff0c;可能只是我搞了更加苦哈哈的工业深度学习吧&#xff0c;所以…

软件测试技能,JMeter压力测试教程,监听器之每秒事务数与响应时间(十四)

前言 压测的时候&#xff0c;我们会经常关注2个重要的指标 TPS 和 RT TPS&#xff1a;每秒处理的事务数(Transactions per Second)&#xff0c;jmeter的Throughput为吞吐量&#xff08;请求数/秒&#xff09; RT&#xff1a;响应时间(Reponse Time&#xff09;&#xff0c;从…

西亚文明的时空概念与历史上的文明形态

“西亚”这个地理概念主要指的是今日土耳其、伊朗、伊拉克、叙利亚、黎巴嫩、约旦、以色列和沙特等阿拉伯半岛国家所在的地区。若以地理区域来划分&#xff0c;与西亚文明比较密切的区域主要有&#xff1a;小亚细亚&#xff08;今土耳其&#xff09;、两河流域&#xff08;今伊…

n.moduleList 和Sequential的解析与对比

n.moduleList 和Sequential的解析与对比 1.nn.ModuleList2.nn.Sequential3、nn.Sequential与nn.ModuleList的区别4、使用场景 1.nn.ModuleList 2.nn.Sequential 3、nn.Sequential与nn.ModuleList的区别 4、使用场景

汇编输入int 16h

int 16h 读入缓冲区ASCII码 检测点17.1 int 16h会设置if1 assume cs:code code segment start:mov ah,0int 16hmov ah,1cmp al,rje redcmp al,gje greencmp al,bje bluejmp sret red:shl ah,1 green:shl ah,1 blue:mov bx,0b800hmov es,bxmov si,1mov cx,2000 s: mov byte ptr…

mysql 基础架构与组件

基础架构 下图是 MySQL 的一个简要架构图&#xff0c;从下图你可以很清晰的看到用户的 SQL 语句在 MySQL 内部是如何执行的。 先简单介绍一下下图涉及的一些组件的基本作用帮助大家理解这幅图。 连接器&#xff1a; 身份认证和权限相关(登录 MySQL 的时候)。查询缓存: 执行查…

Docker安装mysql8-超详细、每步都有截图

1.下载mysql8镜像&#xff08;版本根据自己选择&#xff1a;这里是8.0.20&#xff09; docker pull mysql:8.0.202.启动镜像 docker run -p 3307:3306 --name mysql8 -e MYSQL_ROOT_PASSWORD123456 -d mysql:8.0.20这里特殊的地方只是说明一下、对每个参数有个了解。没其他实…