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

文章通过创建OrderController2模拟高并发导致的微服务问题,展示了服务间的阻塞如何影响系统性能。通过降低Tomcat的最大线程数至10并使用Jmeter进行压力测试,证明了当订单方法因阻塞导致线程堆积时,其他方法如测试方法的响应速度会变慢,揭示了服务雪崩的现象。
摘要由CSDN通过智能技术生成
高并发会给微服务带来什么样的的问题?

在微服务架构中,我们将业务拆分成一个个的服务,服务和服务之间可以互相调用,但是由于网络原因或者自身的原因,服务并不能保证服务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方法出现了问题,这就是服务雪崩的雏形

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小花皮猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值