soul从入门到进阶04——压测soul网关
这篇文章的主题是对soul网关进行压测
笔者的环境
- MacBook Pro
- 处理器 2.8 GHz 四核Intel Core i7
- 内存 16 GB 1600 MHz DDR3
1. 压测soul-examples-http
和第一篇一样,我们在IDEA
启动soul里面提供的soul-examples-http
wrk -t16 -c200 -d30s http://localhost:8188/order/findById?id=1
结果如下
Running 30s test @ http://localhost:8188/order/findById?id=116 threads and 200 connectionsThread Stats Avg Stdev Max +/- StdevLatency 13.24ms 72.08ms 1.20s 98.38%Req/Sec 2.61k 0.93k 6.48k 61.13%1233237 requests in 30.03s, 130.55MB readSocket errors: connect 0, read 139, write 0, timeout 0
Requests/sec: 41067.29
Transfer/sec: 4.35MB
再压一次
Running 30s test @ http://localhost:8188/order/findById?id=116 threads and 200 connectionsThread Stats Avg Stdev Max +/- StdevLatency 14.57ms 82.24ms 1.30s 98.19%Req/Sec 2.89k 1.05k 7.47k 63.53%1368666 requests in 30.03s, 144.88MB readSocket errors: connect 0, read 139, write 1, timeout 0
Requests/sec: 45576.08
Transfer/sec: 4.82MB
平均延迟在14ms
2. 压测网关
由于笔者在尝试性能分析的时候,如果用IDEA启动soul-bootstrap,分析的时候,IDEA的进程可能会造成影响。所以使用dist里面的jar包启动网关
- 解压
soul-bootstrap-bin-2.2.1.tar
- cd soul-bootstrap-bin-2.2.1/bin
./start.sh
wrk -t16 -c200 -d30s http://localhost:9195/http/order/findById?id=1
结果如下
Running 30s test @ http://localhost:9195/http/order/findById?id=116 threads and 200 connectionsThread Stats Avg Stdev Max +/- StdevLatency 48.46ms 66.25ms 547.24ms 85.81%Req/Sec 483.72 203.05 1.49k 69.31%229111 requests in 30.08s, 24.25MB readSocket errors: connect 0, read 146, write 0, timeout 0
Requests/sec: 7616.13
Transfer/sec: 825.59KB
再压一次
wrk -t16 -c200 -d30s http://localhost:9195/http/order/findById?id=1
Running 30s test @ http://localhost:9195/http/order/findById?id=116 threads and 200 connectionsThread Stats Avg Stdev Max +/- StdevLatency 48.62ms 56.24ms 538.26ms 84.30%Req/Sec 370.29 120.45 1.66k 73.76%177061 requests in 30.10s, 18.74MB readSocket errors: connect 0, read 28, write 0, timeout 0
Requests/sec: 5883.01
Transfer/sec: 637.72KB
Running 30s test @ http://localhost:9195/http/order/findById?id=116 threads and 200 connectionsThread Stats Avg Stdev Max +/- StdevLatency 69.51ms 100.77ms 866.66ms 87.01%Req/Sec 419.00 255.33 2.15k 67.98%195986 requests in 30.09s, 20.75MB readSocket errors: connect 0, read 116, write 0, timeout 0
Requests/sec: 6512.55
Transfer/sec: 705.97KB
3. 对比分析
- 发现网关的平均 Latency比较大
- Req/Sec 也比较小
- 从延迟和吞吐量两个比较重要的性能指标来衡量,由soul网关来转发的请求,性能都降低了
4. 使用jvisualvm分析
- 新打开一个命令行
jvisualvm
- 打开抽样器,同时进行分析
- 发现除了netty相关的方法,logback相关的方法占用时间最多。
- 我们调低日志等级,在
application-local.yml
中将日志等级改为warn
,重启soul-bootstrap
,再次压测。
logging:level:root: warnorg.springframework.boot: warnorg.apache.ibatis: warnorg.dromara.soul.bonuspoint: warnorg.dromara.soul.lottery: warnorg.dromara.soul: warn
- 再次观察发现,除了netty相关的方法,logback相关方法没有占用很多CPU时间了
5. 再次压测
调整日志等级后,再次压测,结果如下
wrk -t16 -c200 -d30s http://localhost:9195/http/order/findById?id=1
Running 30s test @ http://localhost:9195/http/order/findById?id=116 threads and 200 connectionsThread Stats Avg Stdev Max +/- StdevLatency 43.51ms 62.44ms 854.90ms 84.41%Req/Sec 801.56 339.68 2.36k 69.19%383568 requests in 30.08s, 40.60MB readSocket errors: connect 0, read 36, write 0, timeout 0
Requests/sec: 12750.98
Transfer/sec: 1.35MB
wrk -t16 -c200 -d30s http://localhost:9195/http/order/findById?id=1
Running 30s test @ http://localhost:9195/http/order/findById?id=116 threads and 200 connectionsThread Stats Avg Stdev Max +/- StdevLatency 40.64ms 58.38ms 504.55ms 83.93%Req/Sec 0.91k 400.14 3.23k 70.31%433715 requests in 30.07s, 45.91MB readSocket errors: connect 0, read 17, write 0, timeout 0
Requests/sec: 14422.16
Transfer/sec: 1.53MB
wrk -t16 -c200 -d30s http://localhost:9195/http/order/findById?id=1
Running 30s test @ http://localhost:9195/http/order/findById?id=116 threads and 200 connectionsThread Stats Avg Stdev Max +/- StdevLatency 42.13ms 60.95ms 643.43ms 84.68%Req/Sec 846.06 352.06 2.55k 70.30%404615 requests in 30.10s, 42.83MB readSocket errors: connect 0, read 53, write 0, timeout 0
Requests/sec: 13444.37
Transfer/sec: 1.42MB
6. 对比结果
网关的qps已经达到了1.3w,但是仍然和只请求http服务有一定的差距。
soul从入门到进阶04——压测soul网关相关推荐
- soul从入门到进阶01——soul网关初体验
笔者的环境 MacBook Pro 处理器 2.8 GHz 四核Intel Core i7 内存 16 GB 1600 MHz DDR3 其他环境准备 maven.jdk.git 概要简介 本篇文章主 ...
- soul从入门到进阶05——soul-bootstrap数据同步流程
我们在 soul-admin的数据同步流程中分析了admin的数据同步流程,这篇我们来看看soul-bootstrap的数据同步流程 启动 soul-bootstrap 打印如下日志,我们同样从日志着 ...
- soul从入门到进阶02——soul-admin的数据同步流程
soul-admin 的数据同步流程分析 在上一篇文章中我们提到,根据官网的介绍数据配置流程 soul网关的配置数据在修改后立即同步到soul gateway 中,不需要重启,性能高,生效快. 这个特 ...
- 从入门到精通进阶篇 - 设置负载阶梯式压测场景(详解教程)
1.简介 在性能测试中,有时需要模拟一种实际生产中经常出现的情况,即:从某个值开始不断增加压力,直至达到某个值,然后持续运行一段时间,然后继续加压达到某个值持续运行,如此循环直到达到预期的峰值,运行一 ...
- wrk2入门-http性能压测工具总结
wrk入门总结 一.功能介绍: 二.安装过程: git地址: make编译过程中问题解决: 创建软链接到指定目录 验证是否安装成功 三.wrk 初步使用 基本用法: 使用方法--readme 参数设定 ...
- jmeter压测_简单七步,快速入门 JMeter原生压测
导入本地的 JMeter 原生脚本,即可快速发起一次压测. 前提条件 JMeter 脚本需要在本地调试成功. 请同时上传依赖的 CSV 或者 JAR 文件.CSV 文件的 File Name 只需要文 ...
- JMeter压测入门简单使用
JMeter压测入门简单使用. 下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache//jmeter/binaries/apache-jmeter-5.2. ...
- 4. 堪比JMeter的.Net压测工具 - Crank 进阶篇 - 认识wrk、wrk2
1. 前言 上一篇文章我们了解了bombardier,并知道了bombardier.yml与开源项目bombardier的关系,接下来的文章我们了解一下wrk.wrk2,并对比一下它们与bombard ...
- 堪比JMeter的.Net压测工具 - Crank 入门篇
1. 前言 Crank 是.NET 团队用来运行基准测试的基准测试基础架构,包括(但不限于)来自TechEmpower Web 框架基准测试的场景,是2021年.NET Conf 大会上介绍的一项新的 ...
最新文章
- CSS之定位(绝对定位元素的布局)
- 5.MATLAB路径管理
- Python调用HTTP接口并传递cookie
- mysql 浮点数定义2_MySQL学习笔记(二):数据类型
- java安全编码指南之:拒绝Denial of Service
- 反思 大班 快乐的机器人_幼儿园大班教案《快乐的桌椅》含反思
- 汇顶科技【软件工程师】面经
- 2.Java 面试题整理(基础篇二)
- 职场上有3种类型的人,最后一种类型老板最喜欢,你是哪一类?
- java 原子long_java中long和double类型操作的非原子性探究
- HTTP与HTTPS之间的联系与连接状态
- LCA问题——倍增算法,Tarjan算法讲解
- termux android api,Termux API
- maven自带clean_maven install、maven clean、project clean
- 查看欧拉系统服务器ip,EulerOS 系统配置
- Spring Boot整合JPA
- echarts3在Y轴上做基准线
- android 加载gif 动画,GifView——Android显示GIF动画
- html5多屏互动游戏,2017TFC深度盘点:未来H5游戏的发展趋势 重度化强社交多屏互动...
- JSP页面兼容IE7