Java SDK 性能测试代码配置及实操

测试方案

由于 Java SDK 无法单独使用,我们无法直接采集其性能相关数据。因此我们需要设计出对照试验,来对比集成前后,性能数据差异。

首先我们需要开发一个简单的服务程序,其对外暴露的接口,分别验证相同并发(使用 JMeter 开发压测脚本,模拟用户访问服务接口)情况下,不集成 Java SDK、集成 Java SDK 并采集数据两种场景下的性能数据(使用 nmon 采集服务器性能数据)。如下所示:

Java SDK 的初始化方式,我们选用 ConcurrentLoggingConsumer,该种初始化方式采集的数据不会直接发送到 SA,存放到指定日志文件中,避免数据上报到后台这一环节网络请求瓶颈对测试结果的影响,与真实使用情况一致。

测试环境搭建

研发同学提供的测试服务程序,git 地址见:GitHub - fzyouni/SDKDemo,项目结构如下所示:

Java SDK 性能测试代码配置及实操_第1张图片

该程序是一个简单的后台服务,我们只需要进行简单的修改,即可满足我们的测试要求。以上红框中的文件,是我们需要调整代码的文件。该项目初始化 SDK 的方式有两种,即 DemoApplication 中两处注解:
Java SDK 性能测试代码配置及实操_第2张图片其中注解 @SpringBootApplication 对应的初始化代码,在 SensorsConfig 中,如需要修改初始化参数,需要在该文件中修改代码,如下:

Java SDK 性能测试代码配置及实操_第3张图片

注解 @ImportResource 对应的初始化代码,在 spring-config.xml 中,如需要修改初始化参数,需要在该文件中修改代码,如下(未实际验证):
Java SDK 性能测试代码配置及实操_第4张图片 在 application.yml 文件中设置埋点数据存储文件路径(如果直接在 Java 代码中设置,可无需此操作),服务对外发布的端口号,如下所示:

Java SDK 性能测试代码配置及实操_第5张图片

在 log4j2.xml 文件中配置 Java SDK 运行日志存储路径

Java SDK 性能测试代码配置及实操_第6张图片

 

以上两处文件存储路径,均需要保证服务器中存在该文件夹,并具备写入权限。如果不存在该文件夹,需要先手动创建并赋予写入权限,否则会出现日志无法写入的错误提示

在 pom.xml 文件中,配置项目所依赖的 SDK 的版本信息,如下

Java SDK 性能测试代码配置及实操_第7张图片

 服务对外暴露的请求接口,在 TestController.java 中,如下所示:

Java SDK 性能测试代码配置及实操_第8张图片

可以看出该接口为 GET 请求,参数为 cookieId,其底层实际执行逻辑,见 TestServiceImpl.java 中,如下所示:

Java SDK 性能测试代码配置及实操_第9张图片

以上信息配置完毕后,既可本地运行项目(DemoApplication),检查配置十分正确及服务是否可以正常启动,服务正常启动如下所示:

Java SDK 性能测试代码配置及实操_第10张图片

本地验证通过后,即可打 Jar 包,准备发布到服务器上。点击 IDEA 左侧 Maven 栏,手动输入 mvn 命令:

Java SDK 性能测试代码配置及实操_第11张图片

先后执行 mvn clean、mvn package,即可完成打包工作

Java SDK 性能测试代码配置及实操_第12张图片

mvn clean:

Java SDK 性能测试代码配置及实操_第13张图片

mvn package:

Java SDK 性能测试代码配置及实操_第14张图片

打包完成后,最终生成的 jar 在 target 目录下:

Java SDK 性能测试代码配置及实操_第15张图片

接下来需要将 jar 上传到服务器中,连接服务器后,确保用户有权限的情况下,正常执行 Java 命令。若服务器未配置 Java 环境,需要先配置 Java 环境。进入 jar 包所在目录,执行命令:java -jar 命令即可启动服务,如下所示: 

Java SDK 性能测试代码配置及实操_第16张图片

接下来我们可以通过浏览器访问接口(或开发 JMeter 脚本),检查服务是否正常运行。浏览器访问:http://10.120.73.51:8090/searchGoods?cookieId=123456 ,如下所示:  

Java SDK 性能测试代码配置及实操_第17张图片

服务器打印信息:

ConcurrentLoggingConsumer 模式,默认在运行内存中存储 8192 字节数据,超过上述字节后将埋点信息写入到日志文件中(上文配置的 prefix),见下:

Java SDK 性能测试代码配置及实操_第18张图片

JMeter 脚本实现如下所示:

Java SDK 性能测试代码配置及实操_第19张图片

运行脚本,检查响应结果:

Java SDK 性能测试代码配置及实操_第20张图片

至此,服务集成 SDK,修改 SDK 相关配置,发布到服务器,JMeter 访问暴露接口请求的整个过程基本完成。备注信息:java -jar 启动服务后,如果想要关闭服务,同时按下 control + C ,即可关闭服务

java -jar 启动服务,不希望输出日志,可执行命令: java -jar demo-0.0.7-SNAPSHOT.jar > /dev/null & 

命令执行后,只会返回该服务运行的进程号,可通过执行 kill 命令,终止该服务。

通过命令 ps aux|grep demo-0.0.7-SNAPSHOT.jar  可获取服务运行的进程信息:

Java SDK 性能测试代码配置及实操_第21张图片

你可能感兴趣的:(测试相关,java,linux,jmeter)