没有安装siege?

可参考我的另一篇博客

使用siege执行压力测试笔记

场景分析

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

要求

模拟20个用户同时访问

一共跑3个循环

实现

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

测试结果

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

查看帮助

[admin@ ~]$ siege -h

  1. New configuration template added to /root/.siege
  2. Run siege -C to view the current settings in that file
  3. SIEGE 4.0.4
  4. Usage: siege [options]
  5. siege [options] URL
  6. siege -g URL
  7. Options:
  8. -V, --version VERSION, prints the version number.
  9. -h, --help HELP, prints this section.
  10. -C, --config CONFIGURATION, show the current config.
  11. -v, --verbose VERBOSE, prints notification to screen.
  12. -q, --quiet QUIET turns verbose off and suppresses output.
  13. -g, --get GET, pull down HTTP headers and display the
  14. transaction. Great for application debugging.
  15. -p, --print PRINT, like GET only it prints the entire page.
  16. -c, --concurrent=NUM CONCURRENT users, default is 10
  17. -r, --reps=NUM REPS, number of times to run the test.
  18. -t, --time=NUMm TIMED testing where "m" is modifier S, M, or H
  19. ex: --time=1H, one hour test.
  20. -d, --delay=NUM Time DELAY, random delay before each requst
  21. -b, --benchmark BENCHMARK: no delays between requests.
  22. -i, --internet INTERNET user simulation, hits URLs randomly.
  23. -f, --file=FILE FILE, select a specific URLS FILE.
  24. -R, --rc=FILE RC, specify an siegerc file
  25. -l, --log[=FILE] LOG to FILE. If FILE is not specified, the
  26. default is used: PREFIX/var/siege.log
  27. -m, --mark="text" MARK, mark the log file with a string.
  28. between .001 and NUM. (NOT COUNTED IN STATS)
  29. -H, --header="text" Add a header to request (can be many)
  30. -A, --user-agent="text" Sets User-Agent in request
  31. -T, --content-type="text" Sets Content-Type in request
  32. --no-parser NO PARSER, turn off the HTML page parser
  33. --no-follow NO FOLLOW, do not follow HTTP redirects
  34. Copyright (C) 2017 by Jeffrey Fulmer, et al.
  35. This is free software; see the source for copying conditions.
  36. There is NO warranty; not even for MERCHANTABILITY or FITNESS
  37. FOR A PARTICULAR PURPOSE.

常用参数

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

深入实战

需求1:

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

  1. http://ur.tencent.com/categories/7
  2. http://ur.tencent.com/categories/7/?page=2
  3. 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的下面几个页面进行加压,以便暴露系统的瓶颈,并将结果记录到日志。

  1. http://ur.tencent.com/categories/7
  2. http://ur.tencent.com/categories/7/?page=2
  3. 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给服务器,服务器自然就会返回移动站点的请求了。

  1. [admin@ ~]$ siege -c1 -r1 http://www.baidu.com //普通执行并发数1循环1次
  2. ** SIEGE 4.0.4
  3. ** Preparing 1 concurrent users for battle.
  4. The server is now under siege...
  5. HTTP/1.1 200 0.27 secs: 30737 bytes ==> GET /
  6. HTTP/1.1 200 0.09 secs: 1131 bytes ==> GET /baidu.html?from=noscript
  7. HTTP/1.1 200 0.09 secs: 91 bytes ==> GET /img/gs.gif
  8. HTTP/1.1 200 0.08 secs: 3757 bytes ==> GET /5eN1bjq8AAUYm2zgoY3K/r/www/cache/bdorz/baidu.min.css
  9. HTTP/1.1 200 0.04 secs: 33167 bytes ==> GET /r/www/cache/static/jquery/jquery-1.10.2.min_65682a2.js
  10. HTTP/1.1 200 0.07 secs: 705 bytes ==> GET /img/baidu_jgylogo3.gif
  11. HTTP/1.1 200 0.12 secs: 7877 bytes ==> GET /img/bd_logo1.png
  12. Transactions: 7 hits
  13. Availability: 100.00 %
  14. Elapsed time: 0.76 secs
  15. Data transferred: 0.07 MB
  16. Response time: 0.11 secs
  17. Transaction rate: 9.21 trans/sec
  18. Throughput: 0.10 MB/sec
  19. Concurrency: 1.00
  20. Successful transactions: 7
  21. Failed transactions: 0
  22. Longest transaction: 0.27
  23. Shortest transaction: 0.04

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

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

  1. [admin@ ~]$ siege -c1 -r1 -A"Apple-iPhone7C1/1202.440" http://www.baidu.com
  2. ** SIEGE 4.0.4
  3. ** Preparing 1 concurrent users for battle.
  4. The server is now under siege...
  5. HTTP/1.0 302 5.05 secs: 0 bytes ==> GET /
  6. HTTP/1.1 200 0.09 secs: 1229 bytes ==> GET /?from=1015785a
  7. HTTP/1.1 200 0.08 secs: 2340 bytes ==> GET /static/index/u.png
  8. Transactions: 3 hits
  9. Availability: 100.00 %
  10. Elapsed time: 5.22 secs
  11. Data transferred: 0.00 MB
  12. Response time: 1.74 secs
  13. Transaction rate: 0.57 trans/sec
  14. Throughput: 0.00 MB/sec
  15. Concurrency: 1.00
  16. Successful transactions: 3
  17. Failed transactions: 0
  18. Longest transaction: 5.05
  19. Shortest transaction: 0.08

解析上面使用的命令:

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

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

示意图:



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

到这就结束了

使用siege执行压力测试的更多相关文章

  1. 用Jmeter对数据库执行压力测试

    转载:http://www.cnblogs.com/chengtch/p/6198900.html 在我看来压力测试的压测对象可以分为UI,接口及数据库三个部分吧,对界面及接口进行压测还算熟悉, 定位 ...

  2. ab命令执行压力测试

    ab是Apache超文本传输协议(HTTP)的性能测试工具:设计意图是描绘当前所安装的Apache的执行性能,主要是显示你安装的Apache每秒可以处理多少个请求:ab不仅仅能进行基于apache服务 ...

  3. debian下使用siege进行压力测试

    一:siege siege是开源的一个测试工具,可以对指定文本的URL列表进行负载测试,也可以在执行其他请求前让某个请求休眠,从而让你感觉某个用户在转移到web应用的下一个文档前正在读取该文档. ht ...

  4. 使用JMeter进行简单的压力测试

    一.压力测试 顾名思义:压力测试,就是  被测试的系统,在一定的访问压力下,看程序运行是否稳定/服务器运行是否稳定(资源占用情况). 比如: 2000个用户同时到一个购物网站购物,这些用户打开页面的速 ...

  5. jmeter 压力测试 参数

    Aggregate Report 是 JMeter 常用的一个 Listener,中文被翻译为“聚合报告”.今天再次有同行问到这个报告中的各项数据表示什么意思,顺便在这里公布一下,以备大家查阅. 如果 ...

  6. 使用 JMeter 进行压力测试

    一.前言 压力测试是每一个Web应用程序上线之前都需要做的一个测试,他可以帮助我们发现系统中的瓶颈问题,减少发布到生产环境后出问题的几率:预估系统的承载能力,使我们能根据其做出一些应对措施.所以压力测 ...

  7. go Test的实现 以及 压力测试

    引用 import "testing" 一些原则 文件名必须是 *_test.go* 结尾的,这样在执行 go test 的时候才会执行到相应的代码 必须 import testi ...

  8. mysqlslap 压力测试使用总结

    今天从运维同事那听说了mysql压力测试工具mysqlslap.经了解其实mysql自带就有一个叫mysqlslap的压力测试工具,还是模拟的不错的.下面举例说说.mysqlslap是从5.1.4版开 ...

  9. Jmeter压力测试(简单的http请求)-实例

    服务端系分提供的某接口样例为: 评估后可采用使用jmeter进行压力测试的步骤为: 启动jmeter:在bin下点击jmeter.bat,运行jmeter 2. 创建测试计划: 默认启动jmeter时 ...

随机推荐

  1. 解决logstash启动缓慢问题

    在部署logstash时,头几次启动时长还可以,最后高达半小时以上启动启动不了,上网查资料说,系统的“熵”过低,导致jruby启动缓慢.需要安装haveged.但是我安装完后还是慢 https://h ...

  2. UVALive - 3266 Tian Ji -- The Horse Racing(贪心)

    题目链接 题意 两人赛马,每居获胜得200,平局无事发生,输了也输200.求最优的策略使赢的钱最多. 分析 排序,从最快的开始比,若比不过,则用最弱的消耗最强的.模拟即可. #include<i ...

  3. Easyui comboxgrid弹出窗增加搜索功能

    效果如上图所示 <input id="q_item" name="q_item" style="width:200px" toolba ...

  4. Javaweb学习笔记——(二)——————CSS概述,进入JavaScript

    day02day01内容回顾 1.html操作思想 **使用标签把要操作的数据包起来,通过修改标签的属性值来是实现标签内数据样式的变化 ***<font size="5"&g ...

  5. html5 流动布局

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

  6. Netty入门(4) - 附带的ChannelHandler和Codec

    使用SSL/TLS创建安全的Netty程序 Java提供了抽象的SslContext和SslEngine,实际上SslContext可以用来获取SslEngine来进行加密和解密.Netty拓展了Ja ...

  7. CF1066D Boxes Packing

    传送门 这题为什么要用二分呢?/huaji 首先可以\(O(n)\)预处理出从某个物品\(i\)开始放,只放一个盒子,能放的最后物品的位置\(j\),只要用两个指针维护左右端点,每次移动一下左端点同时 ...

  8. pygame中多个class类之间的关系

    用一个实例介绍一下有关pygame中不同类之间的通信,详细介绍在代码段有标注,感兴趣的可以复制代码试试: import pygame import sys # -------------------- ...

  9. SpringBoot2.x使用Dev-tool热部署

    SpringBoot2.x使用Dev-tool热部署 为什么使用热部署? 当修改某些文件内容如配置文件时,我们需要重新启动服务器,比较麻烦,需要一个工具来进行检测是否修改.热加载可以检测到修改的部分, ...

  10. 2017-2018-2 165X 『Java程序设计』课程每周成绩公布

    2017-2018-2 165X 『Java程序设计』课程 每周成绩公布 本博客将跟随教学进度不定期更新,每次更新后将在课程群公布.如对成绩有疑问,请于公布成绩后的1天之内联系助教,进行审核确认. - ...