性能与压力测试

性能与压力测试

性能指标

  • 响应时间:Response Time,RT 指用户从客户端发起一个请求到接收从服务端返回的响应耗费的时间。
  • 每秒点击次数:Hits Per Second,HPS
  • 每秒处理交易数:Transaction Per Second,TPS
  • 每秒处理查询次数:Query Per Second,QPS
  • 最大响应时间:Max Response Time,MRT
  • 最小响应时间:Mininum Response Time
  • 90% 响应时间:90% Response Time
  • 错误率:一批请求中出现结果错误的比例

JMeter的安装和使用

JMeter 官方网站

安装好之后进入根目录下的 bin/ 目录下,双击 jmeter.bat 开始运行,在选项中切换为中文语言。

在 Test Plan 中添加一个线程组,设置该线程组的属性

线程组

这里设置 200 个线程,每个线程循环 100 次,共计 20,000 次访问测试

右击线程组生成一个 http 请求

http 请求

填写 http/https 协议类型,要访问的服务器名或 ip 地址,服务所在端口号,要测试的接口路径,参数或者请求体等。

这里测试本地服务器上 10001 端口上跑的一个服务的 index 页面,该页面初始化需要查询数据库

添加几个结果分析页面
结果分析
点击绿色小箭头,开始测试

几分钟后,查看汇总报告
汇总报告
可以看到这 20,000 个样本中测试花费时间的平均值、最小值、最大值、异常、吞吐量等。

查看聚合报告
聚合报告
可以看到这 20,000 个样本中 90%、95%、99% 完成所需时间

测试

注:

  • Hello:一个微服务下的小请求 返回一个 hello-world 字符串,不查库
  • Gateway:网关微服务,88 端口,接收前端发送的 api/ 开头的请求,功能即进行路由
  • Gateway+Hello:通过网关向 Hello 发送请求
  • 首页一级菜单:查询数据库一级菜单。SQL 语句为 SELECT (…) FROM pms_category WHERE parent_cid=0。查出 20 多个数据
  • 三级分类:stream 流两次循环查库+数据封装,以及其他离谱操作
  • 首页全量数据,包括CSS、JS、静态资源的获取
压测内容压测线程数(循环)吞吐量/s90% 响应时间/ms99% 响应时间/ms
Hello502016149
Gateway5013584611
Gateway+Hello5050051731
首页一级菜单+thymeleaf50846292686
三级分类501.16734272029
首页全量数据未响应未响应未响应未响应
首页一级菜单打开缓存、日志级别、数据库索引5031702337
三级分类优化、一次查库5061373414433

中间件的优化

业务优化

数据库操作: 查询字段加索引,尽可能少与数据库交互
模板渲染: 打开缓存
静态资源的获取: NGINX 动静分离
日志级别: debug 级别改为 error 级别

jvisualvm 的使用与分析

使用 JDK 自带的工具 jvisualvm 来监控内存、跟踪垃圾回收、跟踪 cpu、跟踪线程。

  • cmd 启动。cmd 中直接输入 jvisualvm

模拟内存溢出

JVM 优化

-Xms 1024m : JVM 启动时堆的大小
-Xmx 1024m : JVM 启动状态时堆的最大值
-Xmn 512m : 年轻代的空间大小

通过增大 Eden 区的大小,来减少 YGC 发生的次数

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值