原文地址:http://blog.csdn.net/shero_zsmj/article/details/52170213
siege是一个压力测试和评测工具,可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在预定义并发量下重复进行。siege可以从预定义列表中获取随机的URL,所以siege可用于仿真用户请求负载。
一、siege工具安装
siege官网地址http://www.joedog.org/
最新版本3.0.8,下载地址http://download.joedog.org/siege/
1、安装
wget http://download.joedog.org/siege/siege-3.0.8.tar.gz tar xzvf siege-3.0.8.tar.gz cd siege-3.0.8 ./configure make && make install
二、整理测试环境和测试URL
1、修改本机Hosts,确认压测的URL可用且返回正确数据
2、发压测邮件说明给相关负责人,防止出现邮件监控报警而OPS不知道业务
3、整理压测的URL,为了确认监控日志为自己压测,可在URL后带特殊标识(比如&test=1)
siege参数详解:
-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文件的设定
urls.txt文件:是很多行待测试URL的列表以换行符断开,格式为:
[protocol://]host.domain.com[:port][path/to/file]
用法举例:
siege -c 300 -r 100 -furl.txt
说明:-c是并发量,-r是重复次数。url.txt就是一个文本文件,每行都是一个url,它会从里面随机访问的。
压测URL示例:
eg1: siege -c 300-t 5M -u URL -H "Host: cx.soft.360.cn"
eg2: siege -c 300-t 5M 'http://10.143.25.32/soft/getinfo?info=[[1,"",1],[55,"",1],[3,"",1],[4,"",1],[56,"",1],[6,"",1],[7,"",1],[8,"",1],[9,"",1],[10,"",1],[11,"",1],[12,"",1],[13,"",1],[14,"",1],[15,"",1],[16,"",1],[17,"",1],[51,"",1],[52,"",1],[57,"",1],[21,"",1],[22,"",1],[23,"",1],[24,"",1],[25,"",1],[53,"",1],[54,"",1],[28,"",1],[29,"",1],[30,"",1],[31,"",1],[32,"",1],[33,"",1],[34,"",1],[35,"",1],[37,"",1],[38,"",1],[39,"",1],[40,"",1],[41,"",1],[42,"",1],[43,"",1],[44,"",1],[45,"",1],[46,"",1],[47,"",1],[48,"",1],[49,"",1],[50,"",1]]&test=1'-H "Host: cx.soft.360.cn"
4、在被压测服务器上,进行日志监控 tail -f access_log grep"&test=1"
三、开始压测以及压测结果
压测结果参数说明:
Transactions://完成多少次处理
Availability: //成功率%
Elapsed time://总共使用时间secs
Data transferred://总数据传输M(不包含头数据)
Response time://平均响应时间secs
Transaction rate://平均每秒完成多少次处理trans/sec
Throughput://平均每秒传送数据MB/sec
Concurrency: //实际最高并发连接数
Successful transactions://成功处理次数
Failed transactions: //失败处理次数
Longest transaction://满足一个请求所需最长时间
Shortest transaction://满足一个请求所需最短时间
压测机器:c0025v.add.bjcc.qihoo.NET c0026v.add.bjcc.qihoo.Net
被压机器:c0027v.add.bjcc.qihoo.net
1、siege -c 300 -t 5M 2台同时请求
2、siege -c 100 -t 5M 2台同时请求
.
3、siege -c 50 -t 5M 2台同时请求
4、siege -c 70 -t 5M 1台请求
测试流程:
做测试时需要知道的几个步骤:
1. 了解测试的需求。 了解此次测试需要使用什么样的场景,期望系统到达最大用户数是多少等等。(具体内容具体分析)
2了解应用服务器和数据库服务器相关信息。是同一台机器还是分离?服务器的用户名,登陆密码等信息
3.测试环境准备。
4.所要测试网站如果有验证码,确定开发是否已经做了处理。是否已经屏蔽或可以任意万能码
一、测试准备
1、选择测试服务器,做好下线(从LVS摘除)工作
2、部署测试程序,修改相关配置(重点为数据库等)
3、整理业务URL规则,以及预估业务权重比例,给出测试案例
4、收集检测测试结果工具或方法
5、列出业务可能存在的问题或业务瓶颈点(预估)
二、开始测试
1、检测测试环境 检测一个简单测试案例,是否返回预期结果
2、查看测试日志 编写日志正则脚本,确保测试业务真实有效
3、进行单元测试,根据URL,分别对每个URL进行5-10次的测试请求
4、对比测试结果,确认业务可用,返回数据格式与预期一致等(联系客户端陈曦,进行接口check)
5、整理测试结果,并编写测试结果报告(附带测试条件)
三、结果整理
1、统计测试过程中系统CPU、内存、IO、网卡带宽、连接数、平均等待时长,最大QPS,业务处理时长,是否数据库
2、分析并整理测试结果,给出测试瓶颈点