siege

这是Linux系统下的一个测试工具,完全使用C语言实现,可以对HTTP和FTP服务器进行负载和性能测试。通过使用Siege 提供的功能,可以很容易的制定测试计划:包括规定使用并发用户数、重复数量,从而可以模拟在服务器、网络或者其它对象上附加负载以测试他们提供服务的受压能力,方便的测试服务器的性能。最后,利用Siege提供的测试结果来分析性能指标或者分析他们提供的服务在不同负载条件下的性能情况,分析测试结果,找出影响系统性能的瓶颈。

一、安装下载

在linux服务器上操作

1、下载最新版本的siege

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

2、解压并进入siege路径

tar -zxvf siege-latest.tar.gz
cd siege-*/

3、编译安装

./configure
make
sudo make install

4、验证安装是否成功

siege -h

二、输入输出参数说明

1、输入参数:

2、输出参数:

siege示例,使用siege对ur.tencent.com进行加压(模拟20个用户同时访问,一共跑3个循环)

siege -c 20 -r 3 http://ur.tencent.com

测试结果:

输出参数解释说明:

    • 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: 最短单个请求时间

三、siege示例:

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

urls.txt

urls.txt文本中保存了多个页面url

1、使用siege对urls.txt进行加压,并发数是5,持续运行1分钟

siege -c 5 -t 1M -f urls.txt  

2、对多个页面加压后,保存siege日志

siege -c 5 -t 1M -f urls.txt --log=result.csv  #urls.txt、result.csv两个文件名可带路径

注:

  • 可以使用命令sz result.csv将结果文件拷贝到本地(没有sz命令Ubuntu使用: centOS用yum -y install lrzsz安装既可)
  • 也可以用Xshell 5中的sftp工具:get result.csv 下载文件到Xshell 本地Sessions文件夹中

3、压测时候启用gzip压缩

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

siege -c 5 -t 1M -f urls.txt -H "Accept-Encoding:gzip" --log=result_gip.csv

  

4、模拟移动站点(移动端:Android、iOS)访问进行压测

需要发送相应的user-agent,服务器就会根据这个值判断浏览器是移动版还是桌面版,在这里用iphone的user-agent模拟iPhone5对百度站点进行访问。(iphone的user-agentchrome的user-agent安卓ios主流浏览器User-Agent汇总

siege -c1 -r1 -A"Apple-iPhone5C2/1001.525" http://www.baidu.com
siege -c1 -r1 -A"Apple-iPhone5C2/1001.525" http://www.baidu.com
[alert] Zip encoding disabled; siege requires zlib support to enable it
** SIEGE 4.0.4
** Preparing 1 concurrent users for battle.
The server is now under siege...
HTTP/1.1 200 0.09 secs: 2925 bytes ==> GET /
HTTP/1.1 200 0.07 secs: 2340 bytes ==> GET /static/index/u.png Transactions: 2 hits
Availability: 100.00 %
Elapsed time: 0.16 secs
Data transferred: 0.01 MB
Response time: 0.08 secs
Transaction rate: 12.50 trans/sec
Throughput: 0.03 MB/sec
Concurrency: 1.00
Successful transactions: 2
Failed transactions: 0
Longest transaction: 0.09
Shortest transaction: 0.07

移动版输出结果

桌面版:

siege -c1 -r1  http://www.baidu.com
** SIEGE 4.0.4
** Preparing 1 concurrent users for battle.
The server is now under siege...
HTTP/1.1 200 0.14 secs: 112430 bytes ==> GET /
HTTP/1.1 200 0.06 secs: 2947 bytes ==> GET /baidu.html?from=noscript
HTTP/1.1 200 0.05 secs: 91 bytes ==> GET /img/gs.gif
[error] HTTPS requires libssl: Unable to reach ss1.bdstatic.com with this protocol: Operation now in progress
HTTP/1.1 200 0.13 secs: 93750 bytes ==> GET /r/www/cache/static/jquery/jquery-1.10.2.min_65682a2.js
HTTP/1.1 200 0.06 secs: 705 bytes ==> GET /img/baidu_jgylogo3.gif
HTTP/1.1 200 0.06 secs: 7877 bytes ==> GET /img/bd_logo1.png Transactions: 6 hits
Availability: 85.71 %
Elapsed time: 0.54 secs
Data transferred: 0.21 MB
Response time: 0.08 secs
Transaction rate: 11.11 trans/sec
Throughput: 0.38 MB/sec
Concurrency: 0.93
Successful transactions: 6
Failed transactions: 1
Longest transaction: 0.14
Shortest transaction: 0.05

桌面版输出结果

对比移动版和桌面版的发现在同样的并发量和循环次数上,移动版的传输数据的量更小(因为移动端流量毕竟贵嘛)

性能测试--siege的更多相关文章

  1. Web性能测试工具:Siege安装&使用简介

    在Web性能测试工具中,siege是比较热门和常见的,它有安装简单,使用简单,测试报告详细的特点. 并且可以在文本中预定义一系列待测试url模拟,并可设定一定并发量下持续指定时间or测试进行测试. 比 ...

  2. siege之-服务端性能测试

    官方网站http://www.joedog.org/ 有3种操作模式: 1) Regression (when invoked by bombardment)Siege从配置文件中读取URLs,按递归 ...

  3. 性能测试工具--SIEGE安装及使用简介

    官方网站http://www.joedog.org/ 概述 Siege是一个多线程http负载测试和基准测试工具.它有3种操作模式: 1) Regression (when invoked by bo ...

  4. 【性能测试工具】- Siege

    优点:比http_load好用,因为相同的url.txt文件在httpload不好使,所以在易用性上httpload不如siege,仍需进一步调研. 缺点:安装过程中,不能自动创建siege.log文 ...

  5. 【性能测试工具】-SIEGE、HTTP_LOAD、WebBench、Apache-ab

    //当使用其它的开源测试工具的时候,也可以参考这一点:进入到bin目录 //如果工具本身不包含bin文件,那么在工具的1级目录执行即可 (1)       SIEGE $cd /home/userNa ...

  6. 性能测试工具--SIEGE安装及使用简介 siege压力测试

    官方网站http://www.joedog.org/ 概述 Siege是一个多线程http负载测试和基准测试工具.它有3种操作模式: 1) Regression (when invoked by bo ...

  7. 2、使用siege进行服务端性能测试

    先查看siege帮助 输入siege -h 翻译一下常用命令 -c 指定并发数 -r 指定重复次数 -d 指定请求的延迟时间,注意每个请求间随机延迟 -f 指定url列表,可以一次给多个地址加压 -t ...

  8. 3、加强siege性能测试

    需求1:使用siege对多个页面进行加压 1.对如下3个页面加压 http://jrjf.hscx365.com/ http://jrjf.hscx365.com/solution/armyone.h ...

  9. 烂泥:apache性能测试工具ab的应用

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 网站性能压力测试是服务器网站性能调优过程中必不可缺少的一环.只有让服务器处在高压情况下,才能真正体现出软件.硬件等各种设置不当所暴露出的问题. 性能测试 ...

随机推荐

  1. [UR #3] 核聚变反应强度

    次大公约数就是gcd再除以其最小质因子(如果有的话).可以发现要求的sgcd 的前身gcd都是a1的约数,所以把a1质因数分解直接做就行了. #include<bits/stdc++.h> ...

  2. java之properties和yml两种配置文件比较(非原创)

    文章大纲 一.内容介绍二.参考文章 一.内容介绍   我们在使用SpringBoot这个框架的时候都一定使用或者说是见到过application.properties或者是application.ym ...

  3. group by与distinct效率分析及优化措施

    如何使用group by进行去重 因为mysql的distinct在结果集中,全部不同,才可以去重.所以,当我们进行去重处理的时候,需要单独对某列进行去重,可以使用group by子句进行分组去重se ...

  4. 各语言最原始数据库访问组件封装DBHelper

    源码:https://github.com/easonjim/DBHelper bug提交:https://github.com/easonjim/DBHelper/issues 每个语言放在不同的分 ...

  5. 使用Eclipse Memory Analyzer进行内存泄漏分析三部曲

    源地址:http://seanhe.iteye.com/blog/898277 一.准备工作  分析较大的dump文件(根据我自己的经验2G以上的dump文件就需要使用以下介绍的方法,不然mat会出现 ...

  6. PHP中读取文件的几个方法

    整理了一下PHP中读取文件的几个方法,方便以后查阅. 1.fread string fread ( int $handle , int $length ) fread() 从 handle 指向的文件 ...

  7. C++一元多项式相加

    实验名称:一元多项式相加 // multiply.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream& ...

  8. SVN客户端忽略无关文件

    修改前请先备份文件 ~/.subversion/config. 1,打开Terminal,输入命令: $ open ~/.subversion/config   2,在打开的文件中寻找:`global ...

  9. Java String 常用函数

    1>获取  1.1:字符串中包含的字符数,也就是字符串的长度.   int length():获取长度  1.2:根据位置获取位置上某个字符.   char charAt(int index) ...

  10. Android NDK开发常见错误

    错误一: make: *** No rule to make target `/cygdrive/d/1-workspace/showmap-android-opengles/jni/showmap_ ...