必威体育Betway必威体育官网
当前位置:首页 > IT技术

使用siege执行压力测试

时间:2019-08-14 21:42:13来源:IT技术作者:seo实验室小编阅读:67次「手机版」
 

siege

没有安装siege?

可参考我的另一篇博客

使用siege执行压力测试笔记

场景分析

使用siege对https://www.baidu.com/进行加压。

要求

模拟20个用户同时访问

一共跑3个循环

实现

[admin@ ~]$ siege -c 20 -r 3 https://www.baidu.com/ //漫长的等待

测试结果

  English                  示意数据                 中文释意
transactions:              600 hits              处理事务总次数
Availability:                 90.91 %            处理事务成功率
Elapsed time:             13.54 secs             测试用时
Data transferred:         34.26 MB               测试传输数据量
response time:           0.36 secs               从发送到接收的平均响应时间
Transaction rate:         44.31 trans/sec        每秒事务处理量(tps)
Throughput:                 2.53 MB/sec          数据吞吐率
Concurrency:               16.07                 并发用户数
Successful transactions:         600             成功事物次数
failed transactions:              60             失败事务次数
Longest transaction:            2.54             最长响应时间
Shortest transaction:           0.02             最短响应时间

查看帮助

[admin@ ~]$ siege -h

New configuration template added to /root/.siege
Run siege -C to view the current settings in that file
SIEGE 4.0.4
Usage: siege [options]
       siege [options] URL
       siege -g URL
Options:
  -V, --version             VERSION, prints the version number.
  -h, --help                HELP, prints this section.
  -C, --config              CONFIGURATION, show the current config.
  -v, --verbose             VERBOSE, prints notification to screen.
  -q, --quiet               QUIET turns verbose off and suppresses output.
  -g, --get                 GET, pull down HTTP headers and display the
                            transaction. Great for APPlication debugging.
  -p, --print               PRINT, like GET only it prints the entire page.
  -c, --concurrent=NUM      CONCURRENT users, default is 10
  -r, --reps=NUM            REPS, number of times to run the test.
  -t, --time=NUMm           TIMED testing where "m" is modifier S, M, or H
                            ex: --time=1H, one hour test.
  -d, --delay=NUM           Time DELAY, random delay before each requst
  -b, --benchmark           BENCHMARK: no delays between requests.
  -i, --internet            INTERnet user simulation, hits URLs randomly.
  -f, --file=FILE           FILE, select a specific URLS FILE.
  -R, --rc=FILE             RC, specify an siegerc file
  -l, --log[=FILE]          LOG to FILE. If FILE is not specified, the
                            default is used: PREFIX/var/siege.log
  -m, --mark="text"         MARK, mark the log file with a string.
                            between .001 and NUM. (NOT COUNTED IN STATS)
  -H, --header="text"       Add a header to request (can be many)
  -A, --user-agent="text"   Sets User-Agent in request
  -T, --content-type="text" Sets Content-Type in request
      --no-parser           NO PARSER, turn off the HTML page parser
      --no-follow           NO FOLLOW, do not follow HTTP redirects

Copyright (C) 2017 by Jeffrey Fulmer, et al.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE.

常用参数

-c 200 指定并发数200
-d	指定请求的延迟时间,注意每个请求间随机延迟
-r 5 指定测试的次数5
-f urls.txt 指定url列表,可以一次给多个地址加压
-t 5 持续测试5分钟
-g	获取请求的headers信息并打印出来,debug专用
-H	指定请求的headers信息
-l或--log=[File]	指定测试结果的路径

深入实战

需求1:

对ur.tencent.com的下面几个页面进行加压,以便暴露系统的瓶颈。

http://ur.tencent.com/categories/7
http://ur.tencent.com/categories/7/?page=2
http://ur.tencent.com/categories/7/?page=3

要求

并发数是5,持续运行1分钟。

步骤:

[admin@ ~]$ vi urls.txt //创建文件插入上面3个链接

执行压测:

[admin@ ~]$ siege -c 5 -t 1M -f urls.txt

等待结果:

以上执行数说明:

显示执行总数421hits,成功数411,失败0,成功率却显示100.00%,是里面有status code(状态码) == 300的请求,这个会让请求总数变多,所以执行总数显示大于成功数+失败数

有关状态码可点击了解

需求2:

保存siege日志

对ur.tencent.com的下面几个页面进行加压,以便暴露系统的瓶颈,并将结果记录到日志。

http://ur.tencent.com/categories/7
http://ur.tencent.com/categories/7/?page=2
http://ur.tencent.com/categories/7/?page=3

步骤:

[admin@ ~]$ vi urls.txt //创建文件插入上面3个链接

执行压测:

[admin@ ~]$ siege -c 5 -t 1M -f urls.txt --log=result.csv

等待结果:

现在我们当前工作文件就已经出现了一个result.csv文件

[admin@ ~] sz result.csv //下载到本地

双击打开就有我们需要的结果日志了

需求3:

压测时候启用gzip压缩

gzip压缩就是指服务器在返回请求时候先将请求压缩一下,以减少response的体积,客户端收到response之后会自行解压,这是提升传输速度的一般做法。

我们仍然对上面的url进行加压,不过这次我们需要使用gzip。

在请求头中加入Accept-Encoding:gzip就可以告诉服务器返回压缩后的response。

执行压测:

[admin@ ~]$ siege -c 5 -t 1M -f urls.txt -H “Accept-Encoding:gzip” --log=result_gip.csv

等待结果:

现在我们当前工作文件就已经出现了一个result_gip.csv文件了

[admin@ ~] sz result_gip.csv //下载到本地

双击打开就有我们需要的结果日志了

需求4:对移动站点进行压测

www.baidu.com移动版本进行加压。

其实只需要发送相应的user-agent,服务器就会根据这个值判断浏览器是移动版还是桌面版。

该需求里,我们只需要发送iPhone的user-agent给服务器,服务器自然就会返回移动站点的请求了。

[admin@ ~]$ siege -c1 -r1 http://www.baidu.com //普通执行并发数1循环1次
** SIEGE 4.0.4
** Preparing 1 concurrent users for BATtle.
The server is now under siege...
HTTP/1.1 200     0.27 secs:   30737 bytes ==> GET  /
HTTP/1.1 200     0.09 secs:    1131 bytes ==> GET  /baidu.html?from=noscript
HTTP/1.1 200     0.09 secs:      91 bytes ==> GET  /img/gs.gif
HTTP/1.1 200     0.08 secs:    3757 bytes ==> GET  /5eN1bjq8AAUYm2zgoY3K/r/www/cache/bdorz/baidu.min.css
HTTP/1.1 200     0.04 secs:   33167 bytes ==> GET  /r/www/cache/static/jquery/jquery-1.10.2.min_65682a2.js
HTTP/1.1 200     0.07 secs:     705 bytes ==> GET  /img/baidu_jgylogo3.gif
HTTP/1.1 200     0.12 secs:    7877 bytes ==> GET  /img/bd_logo1.png

Transactions:		           7 hits
Availability:		      100.00 %
Elapsed time:		        0.76 secs
Data transferred:	        0.07 MB
Response time:		        0.11 secs
Transaction rate:	        9.21 trans/sec
Throughput:		        0.10 MB/sec
Concurrency:		        1.00
Successful transactions:           7
Failed transactions:	           0
Longest transaction:	        0.27
Shortest transaction:	        0.04

可以看到上面访问桌面版本的百度首页有7个请求。

模拟iphone7试一下,iphone的user-agent可以在这里找到。

[admin@ ~]$ siege -c1 -r1 -A"Apple-iPhone7C1/1202.440" http://www.baidu.com
** SIEGE 4.0.4
** Preparing 1 concurrent users for battle.
The server is now under siege...
HTTP/1.0 302     5.05 secs:       0 bytes ==> GET  /
HTTP/1.1 200     0.09 secs:    1229 bytes ==> GET  /?from=1015785a
HTTP/1.1 200     0.08 secs:    2340 bytes ==> GET  /static/index/u.png

Transactions:		           3 hits
Availability:		      100.00 %
Elapsed time:		        5.22 secs
Data transferred:	        0.00 MB
Response time:		        1.74 secs
Transaction rate:	        0.57 trans/sec
Throughput:		        0.00 MB/sec
Concurrency:		        1.00
Successful transactions:           3
Failed transactions:	           0
Longest transaction:	        5.05
Shortest transaction:	        0.08

解析上面使用的命令:

-c1 -r1 :并发数1循环1次

-A"Apple-iPhone7C1/1202.440":在请求中设置用户代理为iphone在这里找。

示意图:

可以看到移动版只有3个请求.

到这就结束了

相关阅读

什么是压测,为什么要进行压力测试?Jmeter工具的使用

大家好,我是IT修真院上海分院第5期学员,一枚正直善良的JAVA程序员。今天给大家分享一下,修真院官网JAVA任务6中问题,大家好,我是IT修真

数据库压力测试工具Hammerdb

本文主要介绍Hammerdb在OLTP(Online Transaction Processing,联机事务处理)系统中基于TPC-C的测试方法。 数据库压力测试 Database

LoadRunner压力测试实例步骤

LoadRunner 是一种预测系统行为和性能的工业标准级负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认

分享到:

栏目导航

推荐阅读

热门阅读