大概分为两部分:发起请求、统计数据
发起请求:jmeter
统计数据:sysstat :硬件设备统计、请求并发、系统吞吐量、响应时间统计
jmeter: qps responseTime currentThreadsNum
收集数据:flume (分布式、稳定、安全)
数据存储:influxdb (分布式、时序、结构简单、轻便)
数据展示:grafana(与influxdb结合比较完备,可配置化、动态展示数据)
jmeter :
jmeter试压-》
增加AbstractBackendListenerClient抽象类的实现类,FileBackendListenerClient将监听器数据log4j2输出到日志文件-》
ant-install构建打包
jmeter源码中添加包需要再lib/opt下编译才生效
运行时是读取lib包下,需要添加到lib下即可
添加后台进程,不断增量读取log日志,批量写入influxdb中
(提高性能使用线程安全的 ConcurrentLinkedDeque)curl -i -XPOST 'http://localhost:8086/write?db=jmeter' --data-binary @jmeter_data.txt
jmeter执行流程:
jmeter在core包中org.apache.jmeter.threads.ThreadGroup.start类中开始并发线程,每个线程根据线程组生成线程树,
org.apache.jmeter.threads.JmeterThread.process_sampler递归执行每个sampler
实际执行的接口AbstractJavaSamplerClient.runTest方法,所以需要手动实现这个接口的runtest方法,返回samplerResult
分布式:jmeter master+slavers 通过RMI协议通信(默认端口1099),master把测试计划发送给每个slavers,slavers传递samplerResult给master
(所以测试计划只需要在master,但是测试数据和配置文件需要添加给每个slavers)
influxdb grafana配置:
influxdb:https://docs.influxdata.com/influxdb/v0.13/
安装:
/etc/yum.repos.d/ 下添加influxdb的安装文件 influxdb.repo