压力测试工具siege
最近整改了一个线上服务,功能自测完毕后,需要进行性能的压力测试,同事推荐了siege这个工具,先熟悉一下相关的东西,后面有时间再好好研究它的源码实现。本文仅仅简单介绍一下这个工具的使用方法。
1、下载与安装
下载地址: http://download.joedog.org/siege/ 可根据需要下载版本
$ wget http://download.joedog.org/siege/siege-latest.tar.gz
$ tar zxf siege-latest.tar.gz 解压安装
$ cd siege-4.0.2/ 进入安装路径下
$ ./configure 配置安装路径(默认路径)
$ sudo make 编译
$ sudo make install 编译安装
2、查看siege安装路径
$ which siege
/usr/local/bin/siege
3、查看siege版本
$ siege -V
SIEGE 4.0.2
4、常用参数
-C 或 --config:在屏幕上打印显示出当前的配置,配置是包括在他的配置文件$HOME/.siegerc中,可以编辑里面的参数,这样每次siege 都会按照它运行
-v:运行时能看到详细的运行信息
-c n 或 --concurrent=n:模拟有n个用户在同时访问,n不要设得太大,因为越大,siege 消耗本地机器的资源越多
-i 或 --internet:随机访问urls.txt中的url列表项,以此模拟真实的访问情况(随机性),当urls.txt存在时有效
-d n 或 --delay=n:hit每个url之间的延迟,在0-n之间
-r n 或 --reps=n:重复运行测试n次,不能与 -t同时存在
-t n 或 --time=n:持续运行siege ‘n’秒(如10S),分钟(10M),小时(10H)
-l:运行结束,将统计数据保存到日志文件中siege .log,一般位于/usr/local/var/siege .log中,也可在.siegerc中自定义
-R SIEGERC 或 --rc=SIEGERC:指定用特定的siege 配置文件来运行,默认的为$HOME/.siegerc
-f FILE 或 --file=FILE:指定用特定的urls文件运行siege ,默认为urls.txt,位于siege 安装目录下的etc/urls.txt
-u URL 或 --url=URL:测试指定的一个URL,对它进行”siege “,此选项会忽略有关urls文件的设定
-H 或 --header:指定http请求头部的一些内容
-A 或 --user-agent:指定http请求中user-agent字段内容
-T 或 --content-type:指定http请求中的content-type字段内容
5、常用命令举例
上面说了一大堆,其实掌握-b, -c, -t, -r, -f这几个就足够了
(1)200个并发对http://www.google.com发送请求100次
siege -c 200 -r 100 http://www.google.com
(2)在urls.txt中列出所有的网址
siege -c 200 -r 100 -f urls.txt
(3)随机选取urls.txt中列出所有的网址
siege -c 200 -r 100 -f urls.txt -i
(4)delay=0,更准确的压力测试,而不是功能测试
siege -c 200 -r 100 -f urls.txt -i -b
(5)指定http请求头 文档类型
siege -H "Content-Type:application/json" -c 200 -r 100 -f urls.txt -i -b
6、结果说明
horstxu@horstxu-Lenovo-G400:~/Downloads/siege-3.0.8$ siege http://www.[某个网站].com -c10 -t5s -b
** SIEGE 3.0.8
** Preparing 10 concurrent users for battle.
The server is now under siege...
HTTP/1.1 200 0.14 secs: 1917 bytes ==> GET /
HTTP/1.1 200 0.15 secs: 1917 bytes ==> GET /
……………………
HTTP/1.1 200 0.16 secs: 1917 bytes ==> GET /
Lifting the server siege... done. Transactions: 325 hits
Availability: 100.00 %
Elapsed time: 4.89 secs
Data transferred: 0.59 MB
Response time: 0.15 secs
Transaction rate: 66.46 trans/sec
Throughput: 0.12 MB/sec
Concurrency: 9.85
Successful transactions: 325
Failed transactions: 0
Longest transaction: 0.21
Shortest transaction: 0.11
上面省略号省略了一些冗余的输出,并且我们屏蔽网站域名免得打广告。在上面的测试中,我们设置了10个并发用户,测试5秒时间,并且每个请求之间没有时延,也就是收到回复后马上发出下一个。测试的结果是,4.89秒内完成了325次请求,共传输0.59MB的数据,平均响应时间0.15秒,平均每秒66.46次请求,拓扑量0.12MB每秒,并发数平均9.85。
7、关于POST请求的一个坑
上游需要通过POST往服务发送json的请求,在网上查了很多资料基本都是千篇一律的:
siege -c 1 -r 1 -H "Content-Type:application/json"
经过实际测试,这是有问题的。
发送请求为:
siege -c 1 -r 1 -H "Content-Type:application/json" 127.0.0.1:7940/XXXXXX/get_distance POST {"aoi_id":"17826672289218563804","path_list":[{"p1":{"x":12131122.6,"y":3223344.33},"p2":{"x":12841122,"y":3113344}}],"skip_flag":0,"debug_flag":"111111"}
从log里面看到通过rpc接收到的请求里面为空,感到很纳闷,遂tcpdump抓包,导出之后看一下:
可以看到发送的竟然不是POST请求,而是GET请求,那TM服务肯定无法解析了。
后面发现用下面的方法可以成功发送POST请求:
siege -c 1 -r 1 '127.0.0.1:7940/XXXXXX/get_distance POST <./postfile.json'
就是把之前的json串存到文件里面去,注意后缀名一定要为.json
再次抓包:
可以看到请求正确了
回复也自然正常了
本文参考自:
http://www.jianshu.com/p/19b921511775
https://buzheng.org/usage-of-siege.html
https://xstarcd.github.io/wiki/shell/siege.html
http://blog.csdn.net/xuriwuyun/article/details/12711927
http://www.cnblogs.com/xuning/p/4060166.html
压力测试工具siege的更多相关文章
- HTTP/FTP压力测试工具siege
HTTP/FTP压力测试工具siege 压力测试可以检测服务器的承载能力.针对HTTP和FTP服务,Kali Linux提供专项工具siege.该工具可以模拟多个用户同时访问同一个网站的多个网页, ...
- [转载]压力测试工具siege的用法
压力测试工具siege 原文:http://blog.csdn.net/qingye2008/article/details/34500949 Siege是Linux下的一个web系统的压力测试工具, ...
- 压力测试工具siege的用法
Siege是linux下的一个web系统的压力测试工具,支持多链接,支持get和post请求,可以对web系统进行多并发下持续请求的压力测试. 安装 Siege 01 02 03 04 #wget h ...
- 压力测试工具--Siege
Siege是一款开源的压力测试工具,设计用于评估WEB应用在压力下的承受能力.可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行.s ...
- Web性能压力测试工具——Siege
最近需要对Istio里的bookinfo进行分析,老是手去刷新太慢了,就找了个自动点的工具——Siege Siege是一款开源的压力测试工具,设计用于评估WEB应用在压力下的承受能力.可以根据配置对一 ...
- 简单的压力测试工具 siege
$ siege -c 1000 -r 100 -b http://127.0.0.1:13579/3344 HTTP/1.0 200 0.02 secs: 49 bytes ==> GET /3 ...
- web压力测试工具(小而精)
实际的测试过程中,我们一般都是采用A.B两台机器,一台跑Web服务,另外一台跑ab测试.也有的情况是单机对单机可能测不出结果,那就要采用很多台机器同是跑AB去请求一台机器进行测试,根据多台机器反馈的结 ...
- Linux下四款Web服务器压力测试工具(http_load、webbench、ab、siege)介绍
一.http_load程序非常小,解压后也不到100Khttp_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载.但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会把 ...
- Web性能压力测试工具之Siege详解
PS:Siege是一款开源的压力测试工具,设计用于评估WEB应用在压力下的承受能力.可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进 ...
随机推荐
- juqery.fn.extend和jquery.extend
jquery.fn == jquery.prototype //true jquery.extend( obj1,obj2 ) 用一个或多个对象来拓展一个对象,返回拓展之后的对象 var aaa = ...
- 九.Spring Boot JPAHibernateSpring Data
1.项目结构 2.导入jar包 <!-- 添加Spring-data-jpa依赖. --> <dependency> <groupId>org.springfram ...
- iOS:tableView表头下拉放大的效果
现在很多app设置了这样的效果,如何实现这一效果呢,其实只需要简单的两个方法,那么我们直接上代码 首先我们在storyBoard里拖一个tableView并设置Navigation,接下来我们在tab ...
- Linux的进程间通信-文件和文件锁
前言 使用文件进行进程间通信应该是最先学会的一种IPC方式.任何编程语言中,文件IO都是很重要的知识,所以使用文件进行进程间通信就成了很自然被学会的一种手段.考虑到系统对文件本身存在缓存机制,使用文件 ...
- 流畅的python第十五章上下文管理器和else块学习记录
with 语句和上下文管理器for.while 和 try 语句的 else 子句 with 语句会设置一个临时的上下文,交给上下文管理器对象控制,并且负责清理上下文.这么做能避免错误并减少样板代码, ...
- scikit-learn(window,linux)安装
scikit-learn是python的机器学习库 记录下载window中和linux中如何下载scikit-learn 方法一 直接下载Anaconda 这是一个非常齐全的python发行版本,里面 ...
- ini配置文件的读取
.ini 文件是Initialization File的缩写,即初始化文件.是windows的系统配置文件所采用的存储格式,统管windows的各项配置,一般用户就用windows提供的各项图形化管理 ...
- .net framework中重新注册IIS
要为 ASP.NET 修复 IIS 映射,请按照下列步骤执行操作:运行 Aspnet_regiis.exe 实用工具:单击“开始”,然后单击“运行”.在“打开”文本框中,键入 cmd,然后按 ENTE ...
- Telnet服务配置
telnet:远程连接,使用未加密的用户/密码组进行验证,由xinetd服务管理.配置文件为/etc/xinetd.d/telnet Telnet服务的配置步骤如下: 一.安装telnet软件包 #r ...
- HTML+JavaScript实现链式运动特效
在学习js的过程中,发现这家伙做特效真是不错,尽管说眼下水平还不够,只是也能写点简单的效果. 今天分享一个简单的运动框架.然后利用这个框架实现简单的链式运动特效. 1.move.js 在运动框架中.主 ...