记一次fastjson引起的内存泄漏
背景介绍:
在正式上线之前,组里要求进行一次性能测试,希望能尽早发现问题,提前解决问题
要求使用jmeter进行最短路径测试,直接请求单个服务,将服务器性能压满
看看瓶颈在哪里
在了解是什么引发了问题之前,先解决一些工具和概念上的问题
一、Jmeter(对jmeter已经有了解的同学可以略过这个部分)
1.jmeter简介
Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。
Apache jmeter 可以用于对静态的和动态的资源(文件,Servlet,Perl脚本,java 对象,数据库和查询,FTP服务器等等)的性能进行测试。它可以用于对服务器、网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。你可以使用它做性能的图形分析或在大并发负载测试你的服务器/脚本/对象。
——摘自jmeter百科
因为其简单易用的gui界面,免费的特性,故本次选择使用jmeter来进行性能测试。运行环境为Windows 10系统,JDK版本为1.8.0,JMeter版本为3.3。
2.jmeter的安装部署和使用
-
从apache jmeter官网选择合适的版本,下载安装包解压即可用
-
Jmeter依赖jdk,所以在运行前需要先配置好java的环境变量,打开cmd执行java -version,看到输出版本号证明环境变量配置成功
-
用nodepad++打开jmeter.bat脚本,可以看到依赖的jkd版本最低为1.8.0
-
windows下打开解压后的文件夹,运行jmeter.bat脚本文件即可打开gui界面,用于编辑测试脚本
-
新建一个空的测试计划,上传到linux服务器
-
配置linux执行jmeter的环境变量
-
配置完成后执行jmeter -v出现版本提示说明配置环境变量成功
-
执行jmeter –help
-
启动脚本命令可以参考help提示执行
-
启动脚本jmeter -n -t test.jmx -l result.jtl 可以看到如下结果
-
至此windows和linux下的jmeter部署成功
- jmeter测试脚本的编写
-
为了后续测试方便,定义了很多的变量,用于从启动脚本接收参数,避免每次更换测试接口都要重新改写脚本
-
**注意${__P(参数名,默认值)},大括号后是连续两个下划线**
-
测试时有时候需要一些前置操作,比如登陆,或者从某个接口获取参数传递给后面使用时,可以配置多个线程组,然后通过正则提取变量,设置自定义参数