学习:

ELK——http://dockone.io/article/3655

docker——http://www.testclass.net/docker/

Android Monkey压力测试——https://blog.csdn.net/jieqiang3/article/details/53928638

线上性能监控——https://testerhome.com/topics/11725

一、siege的安装

  • 服务器centos6.5
  • siege版本: 4.0.2

目的

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

安装步骤

1、下载:

[root@ siege-4.0.]# wget http://download.joedog.org/siege/siege-4.0.4.tar.gz

2、解压:

[root@ siege-4.0.]# tar zxvf siege-4.0..tar.gz

3、打开解压包:

[root@ siege-4.0.]# cd siege-4.0.

4、执行

[root@ siege-4.0.]# ./configure

5、安装:

[root@ siege-4.0.]# make && make install

6、修改配置文件

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

logfile = $(HOME)/siege.log

二、siege压测实战

场景分析

使用siege对ur.tencent.com进行加压。

要求

  • 模拟20个用户同时访问
  • 一共跑3个循环

脚本

siege是通过命令行运行的,因此没有脚本一说。

实现

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

-c :并发个数 concurrent

-r :循环(重复)次数repeat

测试结果

Transactions:  hits
Availability: 92.72 %
Elapsed time: 51.89 secs
Data transferred: 12.28 MB
Response time: 0.56 secs
Transaction rate: 9.33 trans/sec
Throughput: 0.24 MB/sec
Concurrency: 5.26
Successful transactions:
Failed transactions:
Longest transaction: 37.10
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(重要指标TPS)
Throughput: 每秒平均传输的数据量(重要指标吞吐量)
Concurrency: 平均并发的请求数(重要指标并发数)
Successful transactions: 所有status code < 400的transactions数量
Failed transactions: 所有status code >= 400的transactions数量
Longest transaction: 最耗时的请求时间
Shortest transaction: 最短单个请求时间
以上结果是客户端的指标与服务器无关

三、siege常用参数

-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
-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 . 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
  • -c 指定并发数。不指定的话默认10
  • -r 指定循环次数
  • -d 指定思考时间
  • -f 指定url文件,可以一次访问一组url
  • -t 指定运行时间
  • -g 获取请求的headers信息并打印,方便调试
  • -H 指定请求的headers信息
  • -l或--log=[File] 指定测试结果的路径

四、进价实战

1、如果开发对页面的性能进行了调优,我们怎么快速得出页面性能得到提升这样一个结论?

同样的场景在调优前和调优后分别执行,对比结果

  • 同样的场景,即同样的命令
  • 对比结果,如TPS,TPS越高性能越好

2、需求:对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分钟。

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

3、可不可以通过siege来实现随机访问一组url的功能?

增加参数-i 即可实现随机访问

#siege -c  -t 1M -i --file=urls.txt

4、对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
#siege -c  -t 30S -f urls.txt --log=result.csv
  • csv文件可以直接用excel打开
  • 可以使用命令sz result.csv将结果文件拷贝到本地
  • 如果没有sz命令使用intall lrzsz安装既可

5、压测时候启用gzip压缩

请求头中的Accept-Encoding:gzip用来告诉服务器返回压缩后的response

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

6、对移动站点进行压测

headers中的user-agent用来告诉服务器,我是谁,我从哪里来,即告诉服务器是移动端还是电脑端

-A参数可直接指定user-agent

#siege -c1 -r1 -A"Apple-iPhone6C2/1001.525" http://www.baidu.com

模拟iphone6访问http://www.baidu.com

7、可不可以通过siege来实现并发访问RESTFUL风格api的功能?

可使用参数-T 指定返回类型来实现

扩展阅读

HTTP API 与Restful API 关系及区别https://blog.csdn.net/gyshun/article/details/80019741



(三)siege的使用的更多相关文章

  1. web 部署专题(三):压力测试(一)工具 siege

    1.介绍 Siege是一个压力测试和评测工具,设计用于WEB开发这评估应用在压力下的承受能力:可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访 ...

  2. Linux下四款Web服务器压力测试工具(http_load、webbench、ab、siege)介绍

    一.http_load程序非常小,解压后也不到100Khttp_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载.但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会把 ...

  3. Siege——多线程编程最佳实例

    在英语中,“Siege”意为围攻.包围.同时Siege也是一款使用纯C语言编写的开源WEB压测工具,适合在GNU/Linux上运行,并且具有较强的可移植性.之所以说它是多线程编程的最佳实例,主要原因是 ...

  4. Web服务器性能/压力测试工具http_load、webbench、ab、Siege使用教程

    一.http_load 程序非常小,解压后也不到100K http_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载.但是它不同于大多数压力测试工 具,它可以以一个单一的进程运行,一般 ...

  5. Linux下的压力测试工具:ab、http_load、webbench、siege

    一.ab 1.1 介绍 ab是apache自带的一款功能强大的测试工具.      安装了apache一般就自带了. 1.2 下载 同apache. 1.3 安装 同apache. 1.4 安装结果 ...

  6. MySQL基准测试(三)--开源工具与实例演示

    MySQL基准测试(三)--开源工具与实例演示 针对web应用 ab ab是一个Apache HTTP服务的基准测试工具. http_load http_load是一个针对Web服务器测试工具. JM ...

  7. Siege(开源Web压力测试工具)——多线程编程最佳实例

    在英语中,"Siege"意为围攻.包围.同时Siege也是一款使用纯C语言编写的开源WEB压测工具,适合在GNU/Linux上运行,并且具有较强的可移植性.之所以说它是多线程编程的 ...

  8. Web服务器性能压力测试工具http_load、webbench、ab、Siege使用教程

    Web服务器性能压力测试工具http_load.webbench.ab.Siege使用教程 作者: feng 日期: 2012/07/25 发表评论 (0) 查看评论   一.http_load 程序 ...

  9. 性能测试之siege

    一.siege介绍 Siege是一个压力测试和评测工具,设计用于WEB开发这评估应用在压力下的承受能力:可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数 ...

随机推荐

  1. Java for LeetCode 107 Binary Tree Level Order Traversal II

    Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left ...

  2. Matlab图像处理(01)-Matlab基础

    枫竹梦对于Matlab几乎是零基础,只是在上学的时候稍稍接触一点,万万没有想到现在还能用到Matlab.进入正题>>> 图像的基本概念 一幅图像可以被定义为一个二维函数f(x,y), ...

  3. firfox 和 chrome 移动端Web开发页面调试

    Firefox浏览: 1."Alt+t" 选择工具栏中的“工具”>Web开发者工具>查看器>点击红框所指的地方 或者 F12 [当然这个歌前提是你没有安装fire ...

  4. 【C】四则运算生成和核对器----by郁卓、谢明浩

    [Github项目地址] 完成功能: 1. 使用 -n 参数控制生成题目的个数 2. 使用 -r 参数控制题目中数值(自然数.真分数和真分数分母)的范围 3. 生成的题目中计算过程不能产生负数,也就是 ...

  5. noip模拟赛 #2

    万年rk2 我写挂大家都挂但是有人比我挂的少 我好不容易卡一波常数然后有人ak ... T1.不想写,等会放链接 T2 给一个方阵,每个地方有一个权值,把它划成两块,不能往回拐弯,求两块极差较大的那个 ...

  6. MyEclipse异常关闭导致启动不了tomcat的解决方法

     由于MyEclipse的异常关闭从而导致Tomcat并没有关闭,所以再次启动Tomcat当然是无法启动的啦,解决方法:在任务管理器中关闭一个叫javaw.exe的进程,如果你这时已经启动了MyEcl ...

  7. nginx版本策略

    近期Nginx发布了1.17.0主线版本与1.16.0稳定版本,并且发布了一篇文章< Introducing NGINX 1.16 and 1.17 >说明Nginx的版本更新策略.推荐分 ...

  8. Django 模板 自定义context_processors

    Django版本 1.8.4 为什么要自定义context_processors 在做博客的过程中,在浏览排行,评论排行,标签,文章归档,友情链接等内容每一个显示页面都是要显示的.如果在每一个view ...

  9. BZOJ1453:[WC]Dface双面棋盘

    浅谈树状数组与线段树:https://www.cnblogs.com/AKMer/p/9946944.html 题目传送门:https://lydsy.com/JudgeOnline/problem. ...

  10. 14 vue学习 postcssrc eslintrc.js babelrc

    一  .postcssrc.js 众所周知为兼容所有浏览器,有的CSS属性需要对不同的浏览器加上前缀,然而有时添加一条属性,需要添加3~4条类似的属性只是为了满足浏览器的兼容,这不仅会增加许多的工作量 ...