简单的http负载测试程序

boom的Python项目详细描述


http://blog.ziade.org/boom.png

砰!是一个简单的命令行工具,用于向web应用程序发送一些负载。

https://img.shields.io/coveralls/tarekziade/boom.svghttps://img.shields.io/travis/tarekziade/boom/master.svghttps://img.shields.io/pypi/v/boom.svghttps://img.shields.io/pypi/pyversions/boom.svghttps://img.shields.io/pypi/dd/boom.svg

砰!是一个脚本,你可以使用它来快速测试你的 Web应用部署。如果你需要更复杂的工具, 我建议你看看Funkload 或者Locust

砰!是专门为取代我的apache bench而写的, 提供一些缺失的功能并解决我遇到的一些烦恼 带AB.

我对这个工具没有特别的野心,因为我没有 在python领域找到了这样的工具,我写了这个。

还有很多其他的工具,比如围城 似乎很受欢迎。

但是,砰!是个不错的选择,因为它可以在任何平台上工作 并且能够通过使用greenlet模拟成千上万的用户。

安装

砰!需要geventrequests。如果你在窗户下面 我强烈建议使用xxx-win32-py2.7.exe安装gevent 您可以在以下位置找到安装程序:https://github.com/surfly/gevent/downloads

砰!应该使用最新版本。

如果您使用的是Linux,安装源代码版本通常会更好 想法。你需要利比夫来对付格文特。

ubuntu下的示例:

$ sudo apt-get install libev libev-dev python-dev

然后:

$ pip install boom

基本用法

基本用法示例:具有最大并发性的100个查询 10个用户:

$ boom http://localhost:80 -c 10 -n 100
Server Software: nginx/1.2.2
Running 100 queries - concurrency: 10.
Starting the load [===================================] Done

-------- Results --------
Successful calls        100
Total time              0.3260 s
Average                 0.0192 s
Fastest                 0.0094 s
Slowest                 0.0285 s
Amplitude               0.0191 s
RPS                     306
BSI                     Pretty good

-------- Legend --------
RPS: Request Per Second
BSI: Boom Speed Index

砰!有更多选项:

$ boom --help
usage: boom [-h] [--version] [-m {GET,POST,DELETE,PUT,HEAD,OPTIONS}]
            [--content-type CONTENT_TYPE] [-D DATA] [-c CONCURRENCY] [-a AUTH]
            [--header HEADER] [--pre-hook PRE_HOOK] [--post-hook POST_HOOK]
            [--json-output] [-n REQUESTS | -d DURATION]
            [url]

Simple HTTP Load runner.

positional arguments:
  url                   URL to hit

optional arguments:
  -h, --help            show this help message and exit
  --version             Displays version and exits.
  -m {GET,POST,DELETE,PUT,HEAD,OPTIONS}, --method {GET,POST,DELETE,PUT,HEAD,OPTIONS}
                        HTTP Method
  --content-type CONTENT_TYPE
                        Content-Type
  -D DATA, --data DATA  Data. Prefixed by "py:" to point a python callable.
  -c CONCURRENCY, --concurrency CONCURRENCY
                        Concurrency
  -a AUTH, --auth AUTH  Basic authentication user:password
  --header HEADER       Custom header. name:value
  --pre-hook PRE_HOOK   Python module path (eg: mymodule.pre_hook) to a
                        callable which will be executed before doing a request
                        for example: pre_hook(method, url, options). It must
                        return a tupple of parameters given in function
                        definition
  --post-hook POST_HOOK
                        Python module path (eg: mymodule.post_hook) to a
                        callable which will be executed after a request is
                        done for example: eg. post_hook(response). It must
                        return a given response parameter or raise an
                        `boom.boom.RequestException` for failed request.
  --json-output         Prints the results in JSON instead of the default
                        format
  -n REQUESTS, --requests REQUESTS
                        Number of requests
  -d DURATION, --duration DURATION
                        Duration in seconds

设计

boom通过gevent使用greenlet创建virtual users,并使用请求来执行 询问。

使用greenlets可以让boom产生大量的虚拟用户,而很少 资源。产生1000个用户并与他们一起构建一个web应用程序并不是问题。

如果你对这个项目感兴趣,欢迎参加 https://github.com/tarekziade/boom

如果你的公关被合并,一定要把你自己添加到贡献者列表中。并确保按字母顺序排列!

历史记录

1.0-2016-09-05

  • 为pycharm用户更新.gitignore
  • 按字母顺序排列贡献者列表以简化(阅读OCD)
  • 用sadface替换hahahaha的bsi响应
  • 添加travis ci
  • 添加工作服
  • 更新tox以在本地测试2.7和3.5(travis ci处理其余部分)

0.9-2016年8月28日

  • python 3支持
  • 删除Python2.6支持
  • 修复unittest2 dep
  • 已添加–用于验证请求-响应数据的验证程序选项
  • 将–挂钩改为–预挂钩
  • 添加了新选项–post hook用于验证请求-响应数据
  • 修复了对失败的DNS解析的错误处理
  • 用urllib3的parse url替换urlparse.urlparse

0.8-2013年7月14日

  • 更好的进度条
  • 添加了–json输出选项
  • 综合毒性
  • 确保DNS解析与gevent 0.x和1.x一起工作
  • 改进的测试
  • 删除了全局变量

0.7-2013年5月21日

  • 修正了空状态下的typeerror-19
  • 捕获dns错误并将其很好地显示出来
  • 添加了SSL支持-17
  • 添加了清除错误显示-16

没有早期版本的注释。

所有者

  • 塔雷克·齐亚德

贡献者

  • 克里斯亚当斯
  • 里卡尔安格鲁德
  • 卢卡斯·巴尔塞尔扎克
  • 拉尔夫·比恩
  • 安德里亚·克罗蒂
  • 阿道夫·菲托利亚
  • 托马斯·哈纳切克
  • 汉利·汉森
  • 马辛库兹明斯基
  • 杰克·皮尔克斯
  • 王振普
  • 威尼斯人
  • 马丁·沃尔德里奇

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在表被注释到配置之前获取表的元数据?   java滚动条不会出现在JList上   java JOGL监视器GPU内存   java为什么要使用RecyclerView onDraw延迟   java定制Oppo Reno 2 Z CPH1951(手机型号)的固件(闪存文件)   java自定义线程池执行器   java如何解决发布版本中重复的jar条目[com/安卓/volley/R.class]?   java如何使用Bukkit API触发事件?   java在blazemeter jmeter RTE插件中使用ctrl+w输入   C#/Visual Studio的java JDT等价物   java为什么当maxread值很大而收到的消息数量很小时,卡夫卡消费者会无限期消费?   java游戏2。x:包含模板列表的绑定模型   带压缩的java日志旋转   运行时。exec用java运行程序读取它正在做什么