简单的http负载测试程序
boom的Python项目详细描述
砰!是一个简单的命令行工具,用于向web应用程序发送一些负载。
砰!是一个脚本,你可以使用它来快速测试你的 Web应用部署。如果你需要更复杂的工具, 我建议你看看Funkload 或者Locust。
砰!是专门为取代我的apache bench而写的, 提供一些缺失的功能并解决我遇到的一些烦恼 带AB.
我对这个工具没有特别的野心,因为我没有 在python领域找到了这样的工具,我写了这个。
还有很多其他的工具,比如围城 似乎很受欢迎。
但是,砰!是个不错的选择,因为它可以在任何平台上工作 并且能够通过使用greenlet模拟成千上万的用户。
安装
砰!需要gevent和requests。如果你在窗户下面 我强烈建议使用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
没有早期版本的注释。
所有者
- 塔雷克·齐亚德
贡献者
- 克里斯亚当斯
- 里卡尔安格鲁德
- 卢卡斯·巴尔塞尔扎克
- 拉尔夫·比恩
- 安德里亚·克罗蒂
- 阿道夫·菲托利亚
- 托马斯·哈纳切克
- 汉利·汉森
- 马辛库兹明斯基
- 杰克·皮尔克斯
- 王振普
- 威尼斯人
- 马丁·沃尔德里奇