实战练习之使用siege进行服务端性能测试

目录

环境

目的

安装siege

siege的常见参数

实战一:一个URL场景测试

实现

测试结果

实战二:多个URL场景测试

实现

实战三:将结果保存到日志里

实现

实战四:压测时候启用gzip压缩

实现

实战五:对移动站点进行测试

实现

实战六:POST + JSON测试

环境

  • 服务器:Ubuntu 16.04 LTS
  • siege版本: siege-4.1.3

目的

  • 熟悉Linux服务器上软件安装
  • 熟悉使用命令行测试工具
  • 学会使用最简单的压力发生器
  • 学会查看性能测试结果

安装siege

在linux服务器上操作

1、更新系统

sudo apt-get update && sudo apt-get upgrade --show-upgraded

2、下载最新版本的siege

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

3、解压进入siege路径

tar -zxvf siege-latest.tar.gz

cd siege-*/

4、如果没有安装编译工具,请先安装

sudo apt-get install build-essential

5、编译安装

./configure

make

sudo make install

6、创建配置文件

siege.config

7、修改配置文件

打开~/.siege/siege.conf文件,修改logfile选项

logfile = $(HOME)/siege.log

8、输入siege -h 可以验证是否安装成功

siege的常见参数

参数作用
-c指定并发数
-r指定重复次数
-d指定请求的延迟时间,注意每个请求间随机延迟
-f指定url列表,可以一次给多个地址加压
-t指定用例执行的时间,比如-t 10s -t 1M之类
-g获取请求的headers信息并打印出来,debug专用
-H指定请求的headers信息
-l 或 --log=[File]指定测试结果的路径

实战一:一个URL场景测试

模拟实现20个并发数,重复请求3次对百度进行访问

实现

siege -c20 -r3 http://www.baidu.com

测试结果

Transactions:		        1329 hits
Availability:		       79.11 %
Elapsed time:		       19.26 secs
Data transferred:	       79.81 MB
Response time:		        0.13 secs
Transaction rate:	       69.00 trans/sec
Throughput:		        4.14 MB/sec
Concurrency:		        8.90
Successful transactions:        1329
Failed transactions:	         351
Longest transaction:	        2.07
Shortest transaction:	        0.02

字段含义

Transactions:    siege对服务器访问的次数,如果页面发生了redirect,那么siege会将跳转过的请求算成是另一个transaction

Availability:	socket连接的成功率。算法是,如果页面发生了timeout,4XX,5XX,那么该请求算是失败请求,成功率就等于(所有请求-失败请求)/总请求数	     
Elapsed time:	所有请求耗费的时间
Data transferred:	所有请求传输的数据量,包括请求的headers和content.所以这个数值可能比server端统计的数值要大一点
Response time:		 平均响应时间
Transaction rate:	  Transactions / Elapsed time
Throughput:		      每秒平均传输的数据量
Concurrency:		  平均并发的请求数
Successful transactions:  所有status code < 400的transactions数量
Failed transactions:	  所有status code > 400的transactions数量
Longest transaction:	  最耗时的请求时间
Shortest transaction:	  最短单个请求时间

实战二:多个URL场景测试

模拟从指定文件中随机抽取URL进行压力测试

实现

1、编写文档: nano urls.txt

进入文档之后,输入要测试的Url,然后ctrl+o,按回车键,最后按ctrl+x

另外编写文档也可以使用命令touch urls.txt 然后echo 'Url' >> urls.txt

其中>>表示追加

2、输入要执行的命令:siege -c20 -r3 -furls.txt

实战三:将结果保存到日志里

模拟保存siege日志

实现

siege -c5 -t1M -f urls.txt --log=result.csv

  • csv文件可以直接使用excel打开
  • 可以使用命令 sz result.csv将结果文件拷贝到本地
  • 如果没有sz命令使用sudo apt-get install lrzsz 安装即可

实战四:压测时候启用gzip压缩

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

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

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

注意:压不压缩是由客户端决定的

实现

siege -c5 -t1M urls.txt -H "Accept-Encoding:gzip" --log=result_01.csv

注意如果是多个header命令为:

 

查看服务器是否支持gzip,如果content-Encoding:gzip,说明服务器是支持gzip

@ubuntu:~/siege-4.1.3$ curl -H "Accept-Encoding:gzip" -I http://www.baidu.com
HTTP/1.1 200 OK
Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
Connection: keep-alive
Content-Encoding: gzip
Content-Type: text/html
Date: Tue, 19 Jul 2022 08:09:54 GMT
Last-Modified: Mon, 13 Jun 2016 02:50:08 GMT
Pragma: no-cache
Server: bfe/1.0.8.18

实战五:对移动站点进行测试

作为项目的负责人,我希望各位同学可以对www.baidu.com移动版本进行加压。

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

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

实现

siege -c1 -r1 -A"Opera Mini/7.6.40234/37.8603" http://www.baidu.com


实战六:POST + JSON测试

假设我们需要测试一个接口方法,POST请求,请求内容为JSON;

我们可以将其参数放在params.txt中

然后执行命令: 

 注意:url地址需要用单引号括起来,否则会报错

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值