性能压测初识

1. 性能压测工具使用介绍

1)准备工作

工具:jmeter mac jdk

使用homebrew下载jmeter:brew install jmeter

mac终端使用jmeter,使用jmeter -v 查看版本,使用jmeter命令打开操作界面

使用jmeter还需要安装jdk,官网下载,本地安装即可

*如遇到jmeter无法保存测试计划时,可修改选项-外观-选择其他样式,默认样式有问题

2)测试计划

要求是N并发,达到M QPS,开始测试

不习惯英文,可在选项(Options)上设置语言

a. 创建线程组,设置线程数

b.添加http请求,设置URL和请求参数,如需设置header,则在线程组上添加http信息头部管理器

c. 添加响应断言,可设置成功返回200和失败返回500代码

d. 添加查看结果树,可以看到每一次请求的具体参数和返回,方便定位问题

e. 添加聚合报告(一般最后看指标都是在这)

一般情况下,添加以上就够了,保存测试计划后点执行即可在 查看结果树/聚合报告 中看到结果了。

f1. 对于API压测,需要设置随机参数,此时我们可以通过添加CSV数据文件设置配置文件(可以是csv格式,也可以是txt格式的)

在http请求中使用参数格式 ${参数名} 参数名是在csv的变量名称上设置的

f2. 如果要求到达吞吐量,可以添加常量吞吐量定时器,可以保证请求在这个并发量左右

f3. 如果要求严格并发,则可以添加同步定时器Synchronized Timer,设置并发数

如果使用了f2和f3,则需要设置线程组调度器,设置持续请求的时间

3) 聚合报告,我这里主要看吞吐量,99%响应时长

2. 性能压测问题定位经验总结

1)遇到的问题:

很容易遇到的问题都是connect refused/too many connections/connection reset by peer,这种说明大量的连接出现了阻塞,需要排查现有的tcp连接,最容易出现的是数据库连接数过多导致的超时和请求拒绝;如果其中有rpc连接,也可以排查一下是否有连接没有正常关闭(如果启用的是短连接);

目前解决方案都比较暴力:

如果短连接不好控制连接数,可以使用长连接,我这边使用的是go,go底层的rpc使用长连接,会使用锁,排队请求,所以只是会等待,除非等待超时;或者选用市面上已有的插件,如grpc;

数据库的连接是最容易爆的,最好使用连接池管理,我是使用的gorm,其实如果可以,尽量让请求打到redis上,redis的高并发完全可以接住!

2)定位问题

首先肯定是找错误日志,那如果连错误日志都没有,可以在几个关键节点(rpc调用/redis调用/mysql调用)上做mock返回,看问题出在哪里,再根据具体情况解决

另外 如果在本地调试,本地参数也需要进行变更:

在Mac进行性能测试可能存在系统资源限制,可以尝试以下命令: 

sudo sysctl -w kern.ipc.somaxconn=2048  //修改最大连接数,默认128

sudo sysctl -w kern.maxfiles=12288 //修改读取文件最大值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值