jvm-sandbox-repeater环境搭建

news2024/11/17 23:31:38

引流回放这个技术现在真的越来越成为了很多公司测试同学必备的一个工具了。当然引流回放的技术有很多,比如下来会提到的jvm-sandbox-repeater。 当然你也可以通过日志分析解析的方式去获取到请求返回的信息等。因为刚听过testerhome开发者大会,好几个主题也讨论到了引流回放,而现在大热的引流回放就是 https://github.com/alibaba/jvm-sandbox-repeater

引流回放面向的目标人群 - 面向测试开发工程师

  • 线上有个用户请求一直不成功,我想在测试环境Debug一下,能帮我复现一下吗?
  • 压测流量不知道怎么构造,数据结构太复杂,压测模型也难以评估,有什么好的办法吗?
  • 不想写接口测试脚本了,我想做一个流量录制系统,把线上用户场景做业务回归,可能会接入很多服务系统,不想让每个系统都进行改造,有好的框架选择吗?
  • 我想做一个业务监控系统,对线上核心接口采样之后做一些业务校验,实时监控业务正确性。

我们就按照官网的操作步骤来吧。不过有些地方我们得适当修改下,不确定这些是否适合其他同学哈。

1. 安装sandbox以及repeater

curl -s https://github.com/alibaba/jvm-sandbox-repeater/releases/download/v1.0.0/install-repeater.sh | sh

注: 这种方式安装的的repeater 没有办法被sandbox 识别出来,导致repeater的插件一直没办法被加载

所以推荐是直接通过拉取repeater的源码

git clone https://github.com/alibaba/jvm-sandbox-repeater.git

cd jvm-sandbox-repeater/bin

sh install-local.sh

install-local.sh

#!/usr/bin/env bash

# repeater's target dir
REPEATER_TARGET_DIR=../target/repeater

# exit shell with err_code
# $1 : err_code
# $2 : err_msg
exit_on_err()
{
    [[ ! -z "${2}" ]] && echo "${2}" 1>&2
    exit ${1}
}

# package
sh ./package.sh || exit_on_err 1 "install failed cause package failed"

# extract sandbox to ${HOME}
curl -s https://ghproxy.com/https://github.com/alibaba/jvm-sandbox-repeater/releases/download/v1.0.0/sandbox-1.3.3-bin.tar | tar x -C ${HOME} || exit_on_err 1 "extract sandbox failed"

# copy module to ~/.sandbox-module
mkdir -p ${HOME}/.sandbox-module || exit_on_err 1 "permission denied, can not mkdir ~/.sandbox-module"
cp -r ${REPEATER_TARGET_DIR}/* ${HOME}/.sandbox-module  || exit_on_err 1 "permission denied, can not copy module to ~/.sandbox-module"

install-local.sh的脚本如上,其他它与上述的sh脚本的区别在于 repeater它是直接通过源码打包的,其他都是一样的,所以只能有理由怀疑的是repeater的问题。导致了插件没有办法被加载。具体可以看下,我通过官方的脚本安装以及通过源码安装后执行sandbox.sh的日志差异

在这里插入图片描述

这个是根据官方的方式安装的,加载完module-jar以后就直接进行端口绑定了。

在这里插入图片描述

通过源码打包的方式,就会出现加载module-lib的逻辑,所以这个就是具体的差异的地方,这个问题会直接repeater完全没有启动。这个原因下来再说为啥会有这个情况

先解释下上边的脚本,脚本的主要作用就是安装sandbox以及repeater, 而安装的路径分别是在 ~/sandbox 与 ~/.sandbox-module 。

2. 修改repeater的配置

这里我们先采用standalone的模式,所以我们需要修改~/.sandbox-module/cfg/repeater.properties的配置信息

在这里插入图片描述

改为true. 至于其上面的那些配置想都是配合repeater-console一起使用的,所以我们暂时可以先不用管

同时再修改repeater-config.json, 它默认是在~/.sandbox-module/cfg/repeater-config.json

具体配置含义参见:RepeaterConfig.java

这里我们将配置修改为如下:

{
  "degrade": false, 
  "exceptionThreshold": 1000,
  "httpEntrancePatterns": [
    "^/greeting.*$", // 这里主要是录制接口为greeting的
  ],
  "javaEntranceBehaviors": [
  ],
  "javaSubInvokeBehaviors": [
  ],
  "pluginIdentities": [
    "http",
    "mybatis",
    "ibatis",
    "dubbo-provider",
    "dubbo-consumer"
  ],
  "repeatIdentities": [
    "java",
    "http"
  ],
  "sampleRate": 10000,
  "useTtl": true
}

启动被测服务

克隆源码

git clone https://github.com/chenhengjie123/gs-rest-service.git

这个项目是在看其他帖子看到的,是个开源的demo,我在这也引用下。

进入到项目路径:/gs-rest-service/complete,使用**mvn install**命令,把项目中打好的包,放到本地仓库

在这里插入图片描述

在 target 目录下,可以看到,生成了一个jar包,如下所示

在这里插入图片描述

在 target 目录下,使用命令 java -jar gs-rest-service-0.1.0.jar 启动项目,出现如下所示内容,项目启动成功

在这里插入图片描述

记录下这个pid,下来会用到

获取到项目PID后,到 sandbox 目录 ~/sandbox/bin下,使用命令./sandbox.sh -p 53972 -P 12580,运行命令后,出现如下内容,说明成功

在这里插入图片描述

也可以通过查看sandbox日志来确定,是否有启动成功,日志如下所示:

在这里插入图片描述

参数说明

  • p 被录制应用进程号
  • P repeater启动端口,这个每个人定义的都可以不同,一定是一个未占用的端口

attach 模式下,录制应用名和录制环境这两个参数都会被默认为 unknown。这个应用名与录制环境在standalone作用不大,如果是在repeater-console上就比较重要,用来区分不用应用的流量以及配置使用。

attach关闭

运行命令**./sandbox.sh -p 53972 -S**,出现如下内容,jvm-sandbox关闭成功

jvm-sandbox[default] shutdown finished.

模拟请求

在这里插入图片描述

此时我们可以看下repeater的日志,如下:

在这里插入图片描述

repeater的日志默认也是在sandbox相同的路径下 ~/logs/sandbox/repeater

同时在~/.sandbox-module/ 目录下也会多出一个 repeater-data 里面也记录下这此录制的内容,只是通过了序列化保存了。

在这里插入图片描述

问题

前面说到的 repeater的问题下来会单独来说明这个问题

另外一个就是github的下载经常容易失败,建议大家可以参考上边的链接,做一个加速,在github的链接上增加一个 https://ghproxy.com/ 即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/113213.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

不愧是阿里内部的「排序和数据结构学习笔记」面面俱到、太全了

算法——成为程序员强者的必经之路 算法到底有多重要不必多说,说「算法正在统治世界」也不为过。 在编程行业内,有句话是这么说的「薪资越高、算法越重要」,互联网头部企业花费了大量的时间和金钱,用来研究新算法,不…

Python pandas有几千个库函数,你用过几个?(6)

上一篇链接: Python pandas有好几百个库函数,你都用过吗(5)_Hann Yang的博客-CSDN博客 DataFrame 类方法(211个,其中包含18个子类、2个子模块) >>> import pandas as pd >>&g…

详解c++---string的介绍(下)

这里写目录标题前言string的Modifiersoperatorappendpush_backassigninserterasereplaceswappop_backString的operationsc_strcopyfindrfindfind_first_offind_last_offind_first_not_of和find_last_not_of前言 本片文章我们将继续介绍string的使用,点击&#xff1…

从IP V4 向IP V6 过渡(计算机网络-网络层)

目录 从IP V4 向IP V6 过渡 用双协议栈进行从 IPv4 到 IPv6 的过渡 使用隧道技术从 IPv4 到 IPv6 过渡 从IP V4 向IP V6 过渡 向 IPv6 过渡只能采用逐步演进的办法,同时,还必须使新安装的 IPv6 系统能够向后兼容 IPv6 系统必须能够接收和转发 IPv4 分…

node.js+uni计算机毕设项目基于微信小程序停车系统(程序+小程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置: Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等…

node.js+uni计算机毕设项目基于微信小程序的订房系统(程序+小程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置: Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等…

【12.23-12.24】Member Inference Attack

文章目录前言一、Repeated Knowledge Distillation with Confidence Masking to Mitigate Membership Inference Attacks1.1 Member Inference Attack2.2 Confidence Score Masking2.3 Knowledge Distillation二、Membership Inference Attacks Against Machine Learning Model…

垃圾收集器

1.术语 (1).吞吐量 CPU用于运行用户代码的时间与CPU总消耗的比值。 (2).全局停顿(Stop The World) 是在垃圾回收过程中,需要将JVM内存冻结的一种状态。在全局停顿状态下,除GC线程外,Java其它线程都是停止执行的,本地方法可以执行…

二叉树15:左叶子之和

主要是我自己刷题的一些记录过程。如果有错可以指出哦,大家一起进步。 转载代码随想录 原文链接: 代码随想录 leetcode链接:404. 左叶子之和 题目: 给定二叉树的根节点 root ,返回所有左叶子之和。 示例&#xff1a…

支持设备的待机唤醒功能

系统待机唤醒功能 1 说明背景 1.1 需求 支持 GPU 进入低功耗模式,让用户选择降低设备的功耗 1.2 概念 上位词:APM, ACPI 同类词:睡眠模式, S0~S5 下位词:系统挂起, 系统唤醒, 运行时设备电源管理 1)ACPI 在计算机…

Rabbit MQ的基本使用

目录 1. MQ是什么,有哪些作用? 2. 主要的MQ框架有哪些? 3. RabbitMQ安装 4. RabbitMQ中的主要概念 5. 消息队列的核心概念 6. 一个简单的生产者和消费者示例。 6.1 消息发送者模块 1. MQ是什么,有哪些作用? 消…

Jenkins配合git构建持续构建流程

作者:朱金灿 来源:clever101的专栏 为什么大多数人学不会人工智能编程?>>> 理解CI CI(Continuous Integration)翻译成持续集成,是指在源代码变更后自动检测、检出、构建、自动化测试到发布的过程。常见的开源CI工具有J…

Go类型与进制

iota:总是从0开始,递增为1的整数 一、进制 二进制0b1001000 0100 1000 八进制 0o110 01 001 000》 1 * 8^21 * 8^10 * 8^072 十六进制0x48 0100 1000 十进制转二进制 除以基数2,直到商为0为止,反向提取余数。 转为十六进制 除以基…

机器视觉(六):频域图像增强

目录: 机器视觉(一):概述 机器视觉(二):机器视觉硬件技术 机器视觉(三):摄像机标定技术 机器视觉(四):空域图像增强 …

【云原生】Grafana Alerting 告警模块介绍与实战操作

文章目录一、概述二、Grafana Alerting 模块介绍三、配置图表四、告警告警规则五、配置告警通道(Contact points)1)Email1、配置smtp(grafana.ini)2、配置消息模板3、配置告警通道2)WebHook1、编写webhook …

【问题记录与解决】TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。

目录 一、报错内容二、尝试再运行(最终解决)一、报错内容 先来看报错截图: 再往上看看: 程序其实是正确执行了一部分的,可以看出首次运行时,是需要下载一些东西的。 二、尝试再运行(最终解决) 所测试的代码如下: # 昵 称:XieXu # 时 间: 2022/12/24/0024 18:44 fr…

刷机-把机顶盒当服务器使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、为啥要刷机顶盒什么?二、使用步骤1.拆机2.准备下载工具3.准备烧录软件和固件4.烧录5.如何使用总结前言 今天给大家分享一篇关于如何把机顶盒刷机…

国考省考行测:接语选择题,接下来最可能讲,上文可能谈,引言可能谈,有过渡句,看新主体,无过渡句,看主旨意思

国考省考行测:接语选择题,接下来最可能讲,上文可能谈,引言可能谈,有过渡句,看新主体,无过渡句,看主旨意思 2022找工作是学历、能力和运气的超强结合体! 公务员特招重点就是专业技能…

vue3 +ts 第二篇

1.watch watchEffect 监听汇总 watchwatchEffect默认情况是惰性的,也就是说仅在侦听的源数据变更时才执行回调。不需要手动传入依赖更明确哪些状态的改变会触发侦听器重新运行副作用;会先执行一次用来自动收集依赖获取到侦听状态变化前后的值。无法获取…

【概念理解】内存对齐问题详述

内存之对齐,一文即可知 文章目录内存对齐1.概述2.如何进行内存对齐3.位域对齐大端存储与小端存储1.基本概念参考博客😊点此到文末惊喜↩︎ 内存对齐 1.概述 定义(什么是内存对齐) 编译器为程序中的每个数据单元安排在适当的位置…