分布式压力测试工具
2011-09-20 23:51
344 查看
是否有这样的场景:公司需要选型某类产品,需要你来做压力测试。运维部门分给你几台服务器,剩下的自己搞定。
请问:你是如何做压力测试的?如何获取性能参数、系统负载的?如果需要测试的产品是分布式的,需要N台client压M台Server,又怎么办?数据分析如何做?
你是否是每次手动启动client和server,手动使用excel复制粘贴所有的数据?或者通过截图的方式从ganglia上截取服务器负载等情况?
理想中的压力测试应该是这样的:
你是否想要一个工具,将测试代码放到一定的目录下,执行启动命令,系统自动启动server、启动压力测试程序、定期收集数据。测试完成后自动收集所有服务器数据并生成报告?
perf-runner可以方便的解决上述问题。
画图需要使用gnuplot,同步文件需要rsync,仅仅在master安装:apt-get install gnuplot-x11 rsync
由于可能会涉及多个服务器组的启动,因此,perf-runner引入test-unit概念,一个test-unit是一组服务器,需要部署同样的代码或启动同样的程序。比如,测试多台memcached,所有的memcached server作为一个test-unit,先于测试代码启动;测试代码在memcached-server全部启动后启动开始测试。perf-runner中,test-unit按照文件夹的名称字母顺序从小到大启动。
比如,压力测试程序test,有两个test-unit:test-unit1和test-unit2,目录结构如下:
其中每个test-unit中start.sh 用于启动程序,stop.sh用于停止程序。servers.conf中配置服务器地址。例如test/test-unit1/servers.conf 内容如下:
所有的测试启动脚本放在master,启动时master自动同步脚本到各个服务器并执行。因此master需要有各个server的信任关系,方法如下:
在master执行:
启动压力测试集群:
输出如下:
其中 -ntest表示要查看名为test的压力测试,-u test__20110920.233504. 表示压力测试uuid为test__20110920.233504.
输出如下:
如果想查看服务器当前性能状态,可以使用bin/monitor.sh .例如:
Ctrl+C停止输出。
生成报告,使用bin/report_server.sh
打开浏览器 http://${master server ip}:8080/report.html , 至今为止,会有cpu_usage, cpu_load, memory, network, iostat 的报告。例如cpu load 图片如下:
还可以下载源数据进行进一步的分析!
-- EOF --
请问:你是如何做压力测试的?如何获取性能参数、系统负载的?如果需要测试的产品是分布式的,需要N台client压M台Server,又怎么办?数据分析如何做?
你是否是每次手动启动client和server,手动使用excel复制粘贴所有的数据?或者通过截图的方式从ganglia上截取服务器负载等情况?
理想中的压力测试应该是这样的:
你是否想要一个工具,将测试代码放到一定的目录下,执行启动命令,系统自动启动server、启动压力测试程序、定期收集数据。测试完成后自动收集所有服务器数据并生成报告?
perf-runner可以方便的解决上述问题。
使用方法
1、安装
git clone git@github.com:haitaoyao/perf-runner.git
画图需要使用gnuplot,同步文件需要rsync,仅仅在master安装:apt-get install gnuplot-x11 rsync
2、部署压力测试程序
一个性能测试需要一个名称。部署时将整个目录放在deploy目录下。由于可能会涉及多个服务器组的启动,因此,perf-runner引入test-unit概念,一个test-unit是一组服务器,需要部署同样的代码或启动同样的程序。比如,测试多台memcached,所有的memcached server作为一个test-unit,先于测试代码启动;测试代码在memcached-server全部启动后启动开始测试。perf-runner中,test-unit按照文件夹的名称字母顺序从小到大启动。
比如,压力测试程序test,有两个test-unit:test-unit1和test-unit2,目录结构如下:
其中每个test-unit中start.sh 用于启动程序,stop.sh用于停止程序。servers.conf中配置服务器地址。例如test/test-unit1/servers.conf 内容如下:
3、启动压力测试集群
压力测试集群模型如下:所有的测试启动脚本放在master,启动时master自动同步脚本到各个服务器并执行。因此master需要有各个server的信任关系,方法如下:
在master执行:
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa $ ssh-copy-id ${server_address}确保从master登陆所有的服务器不需要输入密码
启动压力测试集群:
$sh bin/start.sh -n test
输出如下:
start server_group: test_unit1 perf_test: test server_group: test_unit1 server: 10.130.137.169 start successfully start server_group: test_unit2 perf_test: test server_group: test_unit2 server: 10.130.137.169 start successfully ############################################## # # perf test: test # perf uuid: test__20110920.233504. # started # ##############################################集群启动成功,其中perf uuid为此次测试的唯一标识,保留以供后续查询。
4、查看集群状态
在master输入:sh bin/status.sh -ntest -u test__20110920.233504.
其中 -ntest表示要查看名为test的压力测试,-u test__20110920.233504. 表示压力测试uuid为test__20110920.233504.
输出如下:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ test unit: test_unit1 perf_test: test status @ 10.130.137.169: perf_test: test__20110920.233504. is still alive collector: cpu_load(pid: 7453) is alive collector: cpu_usage(pid: 7454) is alive collector: iostat(pid: 7455) is alive collector: memory(pid: 7456) is alive collector: network(pid: 7457) is alive ############################################### @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ test unit: test_unit2 perf_test: test status @ 10.130.137.169: perf_test: test__20110920.233504. is still alive collector: cpu_load(pid: 7872) is alive collector: cpu_usage(pid: 7873) is alive collector: iostat(pid: 7874) is alive collector: memory(pid: 7875) is alive collector: network(pid: 7876) is alive ###############################################
如果想查看服务器当前性能状态,可以使用bin/monitor.sh .例如:
sh bin/monitor.sh -n test -u test__20110920.233504. -i 5 -c cpu_load表示查看 压力测试test uuid test__20110920.233504. 的cpu_load情况, 刷新间隔为5秒,输出如下:
perf_test: test, uuid: test__20110920.233504., collector: cpu_load, time: 2011-09-20 23:40:43 test unit: test_unit1 10.130.137.169: 20110920234050, 0.16, 0.07, 0.06 test unit: test_unit2 10.130.137.169: 20110920234052, 0.16, 0.07, 0.06 perf_test: test, uuid: test__20110920.233504., collector: cpu_load, time: 2011-09-20 23:40:50 test unit: test_unit1 10.130.137.169: 20110920234055, 0.15, 0.07, 0.06 test unit: test_unit2 10.130.137.169: 20110920234057, 0.15, 0.07, 0.06
Ctrl+C停止输出。
5、停止压力测试,生成报告
使用 bin/stop.sh 停止压力测试。例如:haitao-yao-MBP:perf-runner haitao$ sh bin/stop.sh -ntest -u test__20110920.233504. stop perf unit: test_unit1 stop perf_test: test @ 10.130.137.169: test stopped collector: cpu_load(pid: 7453) killed collector: cpu_usage(pid: 7454) killed collector: iostat(pid: 7455) killed collector: memory(pid: 7456) killed collector: network(pid: 7457) killed stop perf unit: test_unit2 stop perf_test: test @ 10.130.137.169: test stopped collector: cpu_load(pid: 7872) killed collector: cpu_usage(pid: 7873) killed collector: iostat(pid: 7874) killed collector: memory(pid: 7875) killed collector: network(pid: 7876) killed Fetch result for test unit: test_unit1 result from 10.130.137.169 fetched Fetch result for test unit: test_unit2 result from 10.130.137.169 fetched cleanup result for test unit: test_unit1 result from 10.130.137.169 deleted cleanup result for test unit: test_unit2 result from 10.130.137.169 deleted结果数据收集在 $PER_RUNNER_HOME/data/${perf_test_name}/${perf_test_uuid},收集后,测试服务器的数据随即被删除。
生成报告,使用bin/report_server.sh
sh bin/report_server.sh -ntest -u test__20110920.233504. -p8080
打开浏览器 http://${master server ip}:8080/report.html , 至今为止,会有cpu_usage, cpu_load, memory, network, iostat 的报告。例如cpu load 图片如下:
还可以下载源数据进行进一步的分析!
6、总结
这就是perf runner,希望对大家有用。玩儿的开心!-- EOF --
相关文章推荐
- 分布式TCP压力测试工具 tcpcopy
- 分布式TCP压力测试工具 tcpcopy
- tsung--开源多协议分布式压力测试工具
- tsung--开源多协议分布式压力测试工具 .
- 分布式TCP压力测试工具 tcpcopy
- 分布式TCP压力测试工具 tcpcopy-有感兴趣的没?
- 分布式TCP压力测试工具 tcpcopy
- 服务器压力测试系列一:压力测试工具tsung安装
- apache 压力测试工具ab备忘
- AB压力测试工具
- jemete(java apache) 压力测试工具 (接口测试工具) window apache php 环境
- 压力测试工具apache-ab讲解
- Web性能压力测试工具之WebBench详解
- 找到一款不错的网站压力测试工具webbench
- 一款不错的网站压力测试工具webbench
- Apache 压力测试工具Jmeter基础用法
- Apache压力测试工具
- 十款压力测试工具
- Web性能压力测试工具之ApacheBench(ab)详解
- Linux下Web网站压力测试工具webbench