这篇文章的主题是对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分析

  1. 新打开一个命令行
  2. jvisualvm
  3. 打开抽样器,同时进行分析
  4. 发现除了netty相关的方法,logback相关的方法占用时间最多。

  1. 我们调低日志等级,在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
  1. 再次观察发现,除了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网关相关推荐

  1. soul从入门到进阶01——soul网关初体验

    笔者的环境 MacBook Pro 处理器 2.8 GHz 四核Intel Core i7 内存 16 GB 1600 MHz DDR3 其他环境准备 maven.jdk.git 概要简介 本篇文章主 ...

  2. soul从入门到进阶05——soul-bootstrap数据同步流程

    我们在 soul-admin的数据同步流程中分析了admin的数据同步流程,这篇我们来看看soul-bootstrap的数据同步流程 启动 soul-bootstrap 打印如下日志,我们同样从日志着 ...

  3. soul从入门到进阶02——soul-admin的数据同步流程

    soul-admin 的数据同步流程分析 在上一篇文章中我们提到,根据官网的介绍数据配置流程 soul网关的配置数据在修改后立即同步到soul gateway 中,不需要重启,性能高,生效快. 这个特 ...

  4. 从入门到精通进阶篇 - 设置负载阶梯式压测场景(详解教程)

    1.简介 在性能测试中,有时需要模拟一种实际生产中经常出现的情况,即:从某个值开始不断增加压力,直至达到某个值,然后持续运行一段时间,然后继续加压达到某个值持续运行,如此循环直到达到预期的峰值,运行一 ...

  5. wrk2入门-http性能压测工具总结

    wrk入门总结 一.功能介绍: 二.安装过程: git地址: make编译过程中问题解决: 创建软链接到指定目录 验证是否安装成功 三.wrk 初步使用 基本用法: 使用方法--readme 参数设定 ...

  6. jmeter压测_简单七步,快速入门 JMeter原生压测

    导入本地的 JMeter 原生脚本,即可快速发起一次压测. 前提条件 JMeter 脚本需要在本地调试成功. 请同时上传依赖的 CSV 或者 JAR 文件.CSV 文件的 File Name 只需要文 ...

  7. JMeter压测入门简单使用

    JMeter压测入门简单使用. 下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache//jmeter/binaries/apache-jmeter-5.2. ...

  8. 4. 堪比JMeter的.Net压测工具 - Crank 进阶篇 - 认识wrk、wrk2

    1. 前言 上一篇文章我们了解了bombardier,并知道了bombardier.yml与开源项目bombardier的关系,接下来的文章我们了解一下wrk.wrk2,并对比一下它们与bombard ...

  9. 堪比JMeter的.Net压测工具 - Crank 入门篇

    1. 前言 Crank 是.NET 团队用来运行基准测试的基准测试基础架构,包括(但不限于)来自TechEmpower Web 框架基准测试的场景,是2021年.NET Conf 大会上介绍的一项新的 ...

最新文章

  1. CSS之定位(绝对定位元素的布局)
  2. 5.MATLAB路径管理
  3. Python调用HTTP接口并传递cookie
  4. mysql 浮点数定义2_MySQL学习笔记(二):数据类型
  5. java安全编码指南之:拒绝Denial of Service
  6. 反思 大班 快乐的机器人_幼儿园大班教案《快乐的桌椅》含反思
  7. 汇顶科技【软件工程师】面经
  8. 2.Java 面试题整理(基础篇二)
  9. 职场上有3种类型的人,最后一种类型老板最喜欢,你是哪一类?
  10. java 原子long_java中long和double类型操作的非原子性探究
  11. HTTP与HTTPS之间的联系与连接状态
  12. LCA问题——倍增算法,Tarjan算法讲解
  13. termux android api,Termux API
  14. maven自带clean_maven install、maven clean、project clean
  15. 查看欧拉系统服务器ip,EulerOS 系统配置
  16. Spring Boot整合JPA
  17. echarts3在Y轴上做基准线
  18. android 加载gif 动画,GifView——Android显示GIF动画
  19. html5多屏互动游戏,2017TFC深度盘点:未来H5游戏的发展趋势 重度化强社交多屏互动...
  20. JSP页面兼容IE7

热门文章

  1. 别样肉客宣布进军全新品类 在华推出两款别样猪肉肉酱产品
  2. C++文件操作Read函数
  3. python中selenium模块驱动谷歌详解
  4. MinIO学习功能记录
  5. OpenJudge NOI题库 1.7 编程基础之字符串
  6. 开源无国界?你开源出去的代码, 可能有一天你自己都不能用了!
  7. 【LeetCode系列】1185. 一周中的第几天
  8. 优达学城《无人驾驶入门》学习笔记——卡尔曼滤波器实现详解
  9. 短路与和与、短路或和或的区别
  10. python一维表二维表转化