IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

easy_runner一个简单的压测程序

淘宝JAVA中间件团队博客 2011-09-14 13:35:46 累计浏览 3,329 次
本机暂存

    这次再公开一个小工具 easy_runner 一个来用做压测的小工具

    我主要用来做MySQL压测的时候,直接压业务端用的.

    程序很简单,总共不到400来行,推荐程序员自己压测用,比LoadRunner这种重型压测工具使用起来方便多了

    下载可以到 http://code.google.com/p/easy-runner/ checkout出源码来

    使用说明见 http://code.google.com/p/easy-runner/wiki/Usage

介绍

    一个Python实现的简单压测工具

Details

    Easy Runner主要实现了多线程压测,类似LoadRunner?,能得出QPS和RT,并能通过matlibplot画出曲线图.

特性

  • 支持多scenario同时执行
  • 可为不同scenario设置think time和线程数
  • 支持warming
  • 可画出性能曲线
  • 使用方便,启动迅速,一条命令即可开始压测
  • 优势

  • scenario直接使用python编写scenario,使天然支持多协议
  • Easy Runner一共300来行代码,维护方便
  • 劣势

  • 是通过多线程来加大压力,对客户端要求较高,不能有太多的线程数
  • 使用说明

    设置篇

        见easy_runner下的setting.py进行配置

  • MONITOR_INTERVAL = 1 #设置性能监控的时间间隔,默认为1s,设的越小数据越正确
  • SCENARIOS_PATH=(“./scenario”,) #设置剧本的存放路径,可以设置多个路径,程序会从设置的路径载入剧本
  • LOG_PATH_AND_FILE_NAME = “D:\\\\tmp\\\\runner.log” #设置log存放路径,压测信息都会记录在这个log下,以便分析和作图
  • PIC_SAVE_PATH_AND_PREFIX = “D:\\\\tmp\\\\pic” #设置性能曲线的生成路径和文件前缀.可设为None,如果为None,生成的图片会直接以窗口方式打开
  • THREAD_RULE=(10,3) #线程预热规则,前一个参数表示预热间隔,后一个参数表示每次预热会启动的线程数,可设为None,如果为None,则无预热
  • 剧本编写篇

        例子见附件中的easy_runner\\scenario\\example.py 这是一个压测剧本 其中

  • thread_num=200 为为这个剧本开启的并发线程数
  • think_time = 0 为这个剧本执行时的think time 单位为秒
  • run_count = 1000 为这个脚本的执行次数
  • name=”update” 指定这个剧本的名字,如果不同的剧本使用相同的名字,那么在最后做性能曲线时,相同名字的数据会进行合并显示
  • def init(self): 剧本初始化函数
  • def action(self): 剧本会被重复执行的函数..需要返回True为成功,False为失败
  • def destory(self): 剧本执行完后的资源释放函数
  •     注意,剧本的类名必须是class Scenario(core.scenario.abstract_scenario):

    使用篇

        如果已经做好了设置,也编写好了脚本即可以开始压测了. 开始压测很简单,直接在命令行键入python starter.py 就会开始压测. 这个时候会根据MONITOR_INTERVAL设置的时间间隔,直接输出QPS和RT信息,并同时开始记log (注:如果log已存在的话,原log会被重命名) 如果需要停止压测,在命令行直接输入q 回车 即可结束压测.

    生成图形篇

        生成图形也很简单,直接在命令行键入python plot.py 就是自动分析刚才的log文件生成图形(plot.py需要matlibplot的支持~)

        图形样例如下:

  • 返回成功的QPS:
  •     

  • 返回失败的QPS:
  •     

  • 总QPS(失败+成功):
  •     

  • 响应时间
  •     

    同分类推荐文章

    1. 从零重建 macOS 开发机:可复现的环境初始化流程 (2026-06-14 20:36:00)
    2. 百度物理网络监控工具开源第二弹:毫秒级监控工具 baize,让你的网络问题无处遁形 (2026-06-11 08:10:28)
    3. How to Set Up Homebrew Tap for Private CLI Tools: A Complete Guide (2026-05-27 02:13:03)

    查看更多 DevOps 文章 →

    建议继续学习

    1. 用Hyer来进行网站的抓取 (累计阅读 158,251)
    2. MySQL数据库在实际应用一些方面的介绍 (累计阅读 36,399)
    3. WordPress插件开发 -- 在插件使用数据库存储数据 (累计阅读 29,164)
    4. Mysql监控指南 (累计阅读 21,351)
    5. 由浅入深探究mysql索引结构原理、性能分析与优化 (累计阅读 16,523)
    6. 在Apache2.2.XX下安装Mod-myvhost模块 (累计阅读 13,057)
    7. 15个最好的免费开源电子商务平台 (累计阅读 12,541)
    8. 浅谈MySQL索引背后的数据结构及算法 (累计阅读 11,908)
    9. 整理了一份招PHP高级工程师的面试题 (累计阅读 11,708)
    10. 深入浅出INNODB MVCC机制与原理 (累计阅读 9,693)