前言
最近在看neo4j相关的官网文档以及一些调优参数,同时也学了下Jmeter,为了测试下neo4j服务的性能,虽然不是专业搞测试的,但是我觉得每个优秀的开发者都应该学会主动压测自己服务和代码的性能,并非写完代码之后直接扔给测试就完事了,兵法云:知彼知己,才能百胜不殆嘛。
jmeter是什么
jmeter是一款开源的测试工具,源码100%基于Java并开源,最初的设计目的是用来测试Web应用的,由于其非常轻量级和免费,后来又扩展到其他测试领域。
jmeter的一些特点:
1.能够对HTTP,FTP,TCP,JDBC等服务器进行压力和性能测试,
2.完全的可移植性和100% 纯java。
3.完全 Swing 和轻量组件支持(预编译的JAR使用 javax.swing.*)包。
4.完全多线程 框架允许通过多个线程并发取样和 通过单独的线程组对不同的功能同时取样。
5.精心的GUI设计允许快速操作和更精确的计时。
6.缓存和离线分析/回放测试结果。
jmeter的高可扩展性:
1.可链接的取样器允许无限制的测试能力。
2.各种负载统计表和可链接的计时器可供选择。
3.数据分析和可视化插件提供了很好的可扩展性以及个性化。
4.具有提供动态输入到测试的功能(包括JavaScript)。
5.支持脚本编程的取样器(在1.9.2及以上版本支持BeanShell)。
jmeter一些指标的意义
Samples:样本数
Average:平均响应时间
Median:中位数,50%响应时间小于此值
90%line:90%响应时间小于此值
Min:最短响应时间
Max:最大响应时间
Error:未命中数/比率
Throughput:吞吐量——每秒完成请求事务数【可以理解成tps或者qps,一般100用户压15min左右,其值会在800左右——很多地方并没有严格去计较,就像tps和qps概念是不一样的,可是很多时候可以混为一谈】
Kb/sec:每秒接收数据量
jmeter的安装
下载地址: http://ftp.kddilabs.jp/infosystems/apache/jmeter/binaries/apache-jmeter-3.1.tgz
jmeter是java写的,所以要求你的电脑上需要先提前安装JDK,在windows上直接解压下载后的压缩包,然后进入
apache-jmeter-3.1\bin目录
双击jmeter.bat启动,看到下面的一个UI
注意,jmeter已经有多语言支持,如果是英文语言版本的我们可以在上图的设置选项里面改为中文设置。
快速体验例子(一)
如何对百度首页url进行一次性能测试? (GET请求)
(1)右击 测试计划=>添加=>Threads (Users)=>线程组 注意名称我已经改成百度首页测试
(2)右击 百度首页测试=>添加=>Sampler=>HTTP请求
(3) 添加结果集展示或聚合报告
上图里面有很多的结果集报告,大家可以根据情况添加
我这里添加了三个
(一)右击 百度首页测试=>添加=>监听器=>察看结果树(非常重要,类似debug,有详细的请求响应体,初学者建议一定要添加,否则出了问题,你根本看不到提示)
(二)右击 百度首页测试=>添加=>监听器=>用表格察看结果(单次请求详细报告)
(三)右击 百度首页测试=>添加=>监听器=>聚合报告(所有的请求报告额外加入汇总聚合报告)
快速体验例子(二)
对neo4j的一个rest接口进行一次批量测试,(post请求+用户名密码认证+http header参数设置)
注意例子一不用的时候,可以禁用,不影响另一个测试,jmeter里面的所有子组件都可以禁用,然后测试的时候,会忽略这个组件,这个功能,非常实用,建议大家尝试一下:
(1)线程组里面配置1000次样本压测:
(2)HTTP请求的一些参数设置: 注意这次HTTP请求下面多了两个组件:
(A) HTTP请求=>添加=>配置元件=>HTTP授权管理器(管理post的用户名和密码)
(B) HTTP请求=>添加=>配置元件=>HTTP信息头管理器(管理请求头携带参数)
(3)这次结果里面多加了图形结果,这个结果是以图表的方式展示,适合大批量的测试 时候观察性能的:
总结:
从上图可以非常漂亮的看出压测结果,底部有平均响应时间,非常方便,此外 整个配置项最后可以保存成一个jmx文件,以后再次启动jmeter依然存在。从整体体验来说 jmeter还是非常不错的,开发人员掌握这个以后,如虎添翼,随时随刻都能对自己的服务进行一个压力评测。
官网链接:http://jmeter.apache.org/
有什么问题可以扫码关注微信公众号:我是攻城师(woshigcs),在后台留言咨询。
技术债不能欠,健康债更不能欠, 求道之路,与君同行。