热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

分布式压力测试工具

是否有这样的场景:公司需要选型某类产品,需要你来做压力测试。运维部门分给你几台服务器,剩下的自己搞定。请问:你是如何做压力测试的?如何获取性能参数、系统负载的?如果需要测试的产品是分布式的,需要N台c

是否有这样的场景:公司需要选型某类产品,需要你来做压力测试。运维部门分给你几台服务器,剩下的自己搞定。

请问:你是如何做压力测试的?如何获取性能参数、系统负载的?如果需要测试的产品是分布式的,需要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 --


推荐阅读
  • Python实现变声器功能(萝莉音御姐音)的方法及步骤
    本文介绍了使用Python实现变声器功能(萝莉音御姐音)的方法及步骤。首先登录百度AL开发平台,选择语音合成,创建应用并填写应用信息,获取Appid、API Key和Secret Key。然后安装pythonsdk,可以通过pip install baidu-aip或python setup.py install进行安装。最后,书写代码实现变声器功能,使用AipSpeech库进行语音合成,可以设置音量等参数。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • Centos下安装memcached+memcached教程
    本文介绍了在Centos下安装memcached和使用memcached的教程,详细解释了memcached的工作原理,包括缓存数据和对象、减少数据库读取次数、提高网站速度等。同时,还对memcached的快速和高效率进行了解释,与传统的文件型数据库相比,memcached作为一个内存型数据库,具有更高的读取速度。 ... [详细]
  • 微软评估和规划(MAP)的工具包介绍及应用实验手册
    本文介绍了微软评估和规划(MAP)的工具包,该工具包是一个无代理工具,旨在简化和精简通过网络范围内的自动发现和评估IT基础设施在多个方案规划进程。工具包支持库存和使用用于SQL Server和Windows Server迁移评估,以及评估服务器的信息最广泛使用微软的技术。此外,工具包还提供了服务器虚拟化方案,以帮助识别未被充分利用的资源和硬件需要成功巩固服务器使用微软的Hyper - V技术规格。 ... [详细]
  • Sleuth+zipkin链路追踪SpringCloud微服务的解决方案
    在庞大的微服务群中,随着业务扩展,微服务个数增多,系统调用链路复杂化。Sleuth+zipkin是解决SpringCloud微服务定位和追踪的方案。通过TraceId将不同服务调用的日志串联起来,实现请求链路跟踪。通过Feign调用和Request传递TraceId,将整个调用链路的服务日志归组合并,提供定位和追踪的功能。 ... [详细]
  • 本文介绍了Python对Excel文件的读取方法,包括模块的安装和使用。通过安装xlrd、xlwt、xlutils、pyExcelerator等模块,可以实现对Excel文件的读取和处理。具体的读取方法包括打开excel文件、抓取所有sheet的名称、定位到指定的表单等。本文提供了两种定位表单的方式,并给出了相应的代码示例。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 代理模式的详细介绍及应用场景
    代理模式是一种在软件开发中常用的设计模式,通过在客户端和目标对象之间增加一层中间层,让代理对象代替目标对象进行访问,从而简化系统的复杂性。代理模式可以根据不同的使用目的分为远程代理、虚拟代理、Copy-on-Write代理、保护代理、防火墙代理、智能引用代理和Cache代理等几种。本文将详细介绍代理模式的原理和应用场景。 ... [详细]
  • 手把手教你使用GraphPad Prism和Excel绘制回归分析结果的森林图
    本文介绍了使用GraphPad Prism和Excel绘制回归分析结果的森林图的方法。通过展示森林图,可以更加直观地将回归分析结果可视化。GraphPad Prism是一款专门为医学专业人士设计的绘图软件,同时也兼顾统计分析的功能,操作便捷,可以帮助科研人员轻松绘制出高质量的专业图形。文章以一篇发表在JACC杂志上的研究为例,利用其中的多因素回归分析结果来绘制森林图。通过本文的指导,读者可以学会如何使用GraphPad Prism和Excel绘制回归分析结果的森林图。 ... [详细]
  • 本文总结了使用不同方式生成 Dataframe 的方法,包括通过CSV文件、Excel文件、python dictionary、List of tuples和List of dictionary。同时介绍了一些注意事项,如使用绝对路径引入文件和安装xlrd包来读取Excel文件。 ... [详细]
  • CentOS7.8下编译muduo库找不到Boost库报错的解决方法
    本文介绍了在CentOS7.8下编译muduo库时出现找不到Boost库报错的问题,并提供了解决方法。文章详细介绍了从Github上下载muduo和muduo-tutorial源代码的步骤,并指导如何编译muduo库。最后,作者提供了陈硕老师的Github链接和muduo库的简介。 ... [详细]
  • node.jsurlsearchparamsAPI哎哎哎 ... [详细]
  • 一、修改注册表去掉桌面图标小箭头1按下win+R组合快捷键,打开windows10系统的“运行”窗口,输入“regedit”,打开注册表编辑器,找到HKEY_CLASSES_ROOT\lnkfi ... [详细]
author-avatar
xiejiahui62272
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有