使用siege对web接口进行post方式的压力测试

本文介绍了如何使用Siege工具进行压力测试,包括安装配置、命令行参数详解及实际应用场景。通过具体案例展示了如何针对特定服务接口进行有效的压力测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为了达到压力测试的效果,需要申请一台线上机器,并且安装压力测试的工具siege。

 

安装新版siege。资料说yum安装的版本2.70对于post方式支持的不好,验证后发现请求可以正常发过去,但是打开debug模式也拿不到返回值。

wget  http://download.joedog.org/siege/siege-3.1.3.tar.gz

【如果下载地址不对,请登录官网查看最新的版本。https://www.joedog.org/

下载完后,解压进入目录。如下操作是在普通用户下进行的

# sudo ./configure --prefix=/usr/local/siege --mandir=/usr/local/man

# sudo make

# sudo make install

 

如下的这些参数含义,自行查阅相关资料,不再赘述。

Usage: siege [options]

       siege [options] URL

       siege -g URL

Options:

  -V, --version

  -h, --help

  -C, --config

  -v, —verbose 

  -q, —quiet   

  -g, --get

 

  -c, --concurrent=NUM

  -i, --internet

  -b, --benchmark

  -t, --time=NUMm

 

  -r, --reps=NUM

  -f, --file=FILE

  -R, --rc=FILE

  -l, --log[=FILE]

 

  -m, --mark="text"

  -d, --delay=NUM

 

  -H, --header="text"

  -A, --user-agent=“text"

  -T, --content-type="text"

 

我当时是需要对电话会议通行能力提供商的服务接口进行压力测试,验证其是否能够提供稳定的服务。

表单提交的方式是post,提交的内容是xml格式的内容,废了一些周折,最后写出如下的命令。

siege命令运行的格式:

siege --debug -c10 -t10M -H'Authorization:ZmY4MDgwODEzZTljYjMxZTAxM2ViMTc2NjFiYjAxNTQ6MjAxNDA2MTcxNDMzMzY=' ' https://sandboxapp.***.com/ivr/createconf?sig=C0E95E8EEDB9A3C&maxmember=10 POST </tmp/createconf.xml ' >>/tmp/siege2.log

参数说明

 -c10  :10个并发。

-t10M:压力测试持续10分钟,还可以按次数。

-H:http请求的header。

url:https://***。url中的POST </tmp/createconf.xml 是post提交请求的文件路径。

 

最终的思路:用php脚本先生成siege运行的参数,然后运行

(1)生成url+sig ,header+sig 【sig是服务商提供的账号应用id等信息和时间戳生成的一个校验参数】

(2)生成post的body,写入tmp/createconf.xml 中

(3)运行 siege 。并发数按照2的N次方递增,一次运行时间固定10分钟。

 

 

压力测试的结果包括如下内容:

Transactions: 访问次数 

Availability: 成功次数 

Elapsed time: 测试用时 

Data transferred: 测试传输数据量 

Response time: 平均响应时间 

Transaction rate:每秒事务处理量 

Throughput: 吞吐率 

Concurrency: 并发用户数 

Successful transactions: 成功传输次数 

Failed transactions: 失败传输次数 

Longest transaction: 最长响应时间 

Shortest transaction: 最短响应时间

 

结果分析:

siege的结果参数,整理形成报告。

 

 

2017年10月23日 

最近测试一个接口,服务端始终返回400,后来试了-T参数才成功,例如
sudo siege --debug -c10 -t10M -T -H'Content-type:application/json' 'http://10.0.1.77:8888/kafka/produce POST </tmp/senddata.json' >>/tmp/siege2.log

读了下源码,在main.c中由my.conttype接收了 T 参数 ,在 url.c 中如果不传递 T 会赋予默认值,在header里面指定的Content-type不生效。

public char *
url_get_conttype(URL this) {

  if (this->conttype == NULL) {
    if (! empty(my.conttype)) {
      this->conttype = xstrdup(my.conttype);
    } else {
      this->conttype = xstrdup("application/x-www-form-urlencoded");
    }
  }
  return this->conttype;
}

 

 

 

 

 by hyb

 

 

 

 

 

 

转载于:https://www.cnblogs.com/newbalanceteam/p/5025269.html

很好用的网络压力测试工具 Linux版 siege的安装 unzip filename.zip cd siege-*.*.* ./configure --prefix=/usr/local/siege --mandir=/usr/local/man --with-ssl=/usr/local/ssl mkdir -p /usr/local/siege/etc mkdir -p /usr/local/siege/var make make install 查看配置文件 /usr/local/siege/bin/siege -C 二、siege使用 举例说明: 50个用户(每次并发量)重复100次 共产生 50*100 个请求 /usr/local/siege/bin/siege -c 50 -r 100 www.baidu.com 50个用户 重复100次 发送GET参数 /usr/local/siege/bin/siege -c 50 -r 100 http://www.baidu.com/s?wd=siege&rsv_spt=1&issp=1&rsv_bp=0&ie=utf-8&tn=baiduhome_pg&rsv_sug3=4&rsv_sug=2&rsv_sug1=4&rsv_sug4=60 50个用户 重复100次 发送POST参数 (注意引号) /usr/local/siege/bin/siege -c 50 -r 100 "https://www.abc.com/a.php POST name=zhangsan" 50个用户 重复100次 发送POST参数(从文件中读取) /usr/local/siege/bin/siege -c 50 -r 100 "https://www.abc.com/a.php POST < /root/ab_test/post.xml" 另外还有挺多参数 详情请man 或 siege -h siege报表解析,请man查看,暂略(有点累了,不想写了。。。。。)。 Transactions: 10 hits :服务器接收的请求数 Availability: 100.00 % :有效情况的比例 Elapsed time: 1.06 secs : 测试所用的时间 Data transferred: 0.04 MB :每个模拟用户的数据传输量 Response time: 0.03 secs :响应每个模拟用户请求的平均时间 Transaction rate: 9.43 trans/sec :服务器每秒处理事务的平均数 Throughput: 0.04 MB/sec :服务器每秒跟所有模拟用户的数据传输量 Concurrency: 0.25 :每秒的模拟连接 Successful transactions: 10 :处理成功的事务数(code<400) Failed transactions: 0 : 处理失败的事务数(code>400) Longest transaction: 0.04 :最长的事务处理时间 Shortest transaction: 0.02 :最短的事务处理时间
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值