Siege压测使用和说明

时间:2021-12-11 05:29:34

原文地址: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、分析并整理测试结果,给出测试瓶颈点