Web服务器压力测试工具Siege

Siege是一款HTTP压力测试和基准测试的实用工具,可用于在压力条件下对Web服务器的性能进行测量。它的评估依据包括传输数据量、服务器的响应时间、事务处理速率、吞吐量、并发性和程序正常返回的时间。Siege提供三种操作模式:回归测试,网络模拟测试和暴力测试。

此指南针对Debian与Ubuntu系统。

下载并配置Siege

  1. 在安装任何新程序之前,首先请更新您的系统: sudo apt-get update && sudo apt-get upgrade --show-upgraded
  2. 下载最新版本的Siege(此文发布时其最新版本为3.0.9),其最新该版本始终可在Siege网站上找到: wget http://download.joedog.org/siege/siege-latest.tar.gz
  3. 提取程序: tar -zxvf siege-latest.tar.gz
  4. 定位到Siege目录: cd siege-\*/
  5. 如果未安装GNU编译器集合(gcc),请先安装: sudo apt-get install build-essential
  6. 配置并完成安装: ./configure make sudo make install
  7. 生成配置文件: siege.config
  8. 打开位于主目录中的.siegerc文件。
  9. Siege的推荐配置适用于1分钟内25个并发用户。请设置日志文件的位置。请务必通过删除井号(#)来取消下面注释中的变量以及您想使用的其他设置:
...

        #
        # 变量声明。你可以在此处设置
        # 下方指令中所使用的变量。举例:
        # PROXY = proxy.joedog.org
        # 使用${} 或 $()来引用变量, 举例:
        # proxy-host = ${PROXY}
        # 对于环境变量可以不声明就进行引用,举例:
        logfile = $(HOME)/siege.log

...

        #
        # 默认仿真测试并发用户数量设置
        # 如: concurrent = 25
        #
        concurrent = 25

        #
        # Siege的默认持续时间设置. 等式右边参数中的修饰符指明了
        # 时间单位,H=hours小时, M=minutes分钟,S=seconds秒.
        # 如果没有指明单位修饰符,就是以分钟为单位。
        # 如: time = 50M
        #
        time = 1M

你现在准备好运行Siege了!

运行Siege

在默认设置下运行Siege,请输入下面的命令,并将www.example.com替换为您的域名或IP地址:

siege www.example.com

Siege程序的输出结果:

** SIEGE 2.70
** Preparing 25 concurrent users for battle.
The server is now under siege...
Lifting the server siege...      done.
Transactions:               2913 hits
Availability:             100.00 %
Elapsed time:              59.51 secs
Data transferred:           0.41 MB
Response time:              0.00 secs
Transaction rate:          48.95 trans/sec
Throughput:              0.01 MB/sec
Concurrency:                 0.04
Successful transactions:         2913
Failed transactions:                0
Longest transaction:             0.01
Shortest transaction:            0.00

FILE: /var/log/siege.log
您可以取消这种烦人的信息通过编辑主目录下的.siegerc文件,
将修饰符`show-logfile`置为false

如果没有失败的连接且可用性保持在100%,则通过压力测试。

进一步的配置和命令

创建URL文件

如果您希望Siege随机访问您网站上的多个页面,请将程序配置为从列出选定页面的urls.txt文件中读取。

  1. 打开通常创建在/usr/local/etc/urls.txt位置的urls.txt文件。向该文件添加URL或IP地址的表单:
  2. 使用siege命令来用Siege访问该文件: siege 如果需要访问指定文件,请运行: siege -f your/file/path.txt

命令解析

Siege具有许多命令行选项,可以在不编辑相关文件情况下就实现修改默认设置使用。

  • -c [num]:设置并发用户数。大多数Web服务器只有不到百个用户会同时尝试访问其网站,因此通常不需要将其设置为超过一百个。
  • -t [num]:设置Siege运行的时间限制。Siege识别相关单位修饰符,s代表秒,m代表分钟,h代表小时。数字和修饰符之间不应有空格(-t10s不是-t10 s)。
  • -d [num]:为单个Siege用户设置延时。每个用户可以在1和设定数之间延时一个随机的秒数,默认值为3。
  • -i:与URL文件一起使用,这可以让单个用户随机访问其中一个URL,而不带有预设模式。类似于现实生活中的访问('i'代表“internet网络”),你不知道网站访问者去哪里,而且并不是所有的网页都可能被点击。
  • -v:详细输出。这将实时输出Siege在打印最终结果之前的所获得的结果。
  • -f [file]:使用包含URL列表并且非默认urls.txt的文件运行Siege 。
  • -g [url]:形成HTTP头下拉清单。
  • -l:生成日志文件。
  • -m "[message]":在日志文件中包含一条指定消息。
  • -C:输出Siege的当前配置文件。
  • -V:输出Siege的版本信息。
  • -h:输出帮助信息。

更多信息

有关此主题的其他信息,您可以参考以下资源。虽然我们希望提供的资源是可用的,但请注意,我们无法保证外部托管材料的准确性或及时性。

本文的版权归 PantaZheng 所有,如需转载请联系作者。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏玄魂工作室

如何学python 第十九课 文件操作

今天我们来说说文件操作。文件操作在程序编写里有着举足轻重的作用。文件操作,主要包含文件的输入和输出。学会了文件操作,就可以写出更符合实际需求的脚本。 我会先介绍...

36911
来自专栏北京马哥教育

Django 1.11官方教程翻译

一直以来由于英语废所以极端抵触看英文文档。感觉人还是要逼一下自己,所以就有了这篇翻译。如果有翻译错误的地方欢迎在评论中指正。 Let’s learn by e...

5906
来自专栏散尽浮华

centos6下redis cluster集群部署过程

一般来说,redis主从和mysql主从目的差不多,但redis主从配置很简单,主要在从节点配置文件指定主节点ip和端口,比如:slaveof 192.168....

53410
来自专栏FreeBuf

手把手教你编写一个简单的PHP模块形态的后门

看到Freebuf 小编发表的用这个隐藏于PHP模块中的rootkit,就能持久接管服务器文章,很感兴趣,苦无作者没留下PoC,自己研究一番,有了此文 0x00...

4145
来自专栏ImportSource

Redis性能问题排查解决手册

阅读目录: 性能相关的数据指标 内存使用率 命令处理总数 延迟时间 内存碎片率 回收key 总结 性能相关的数据指标 ? 通过Redis-cli命令行界面访问...

6417
来自专栏编舟记

java9 模块化系统小试

JPMS 全称是 Java Platform Module system(Java 平台模块化系统)。它的目的简单直接:编译期间检查和强化封装。随之而来的好处就...

1693
来自专栏Linux驱动

13.Linux键盘按键驱动 (详解)

在上一节分析输入子系统内的intput_handler软件处理部分后,接下来我们开始写input_dev驱动 本节目标:        实现键盘驱动,让开发板的...

3455
来自专栏淡定的博客

php之laravel学习常见错误1(连载中)

下面是我们整理的php的laravel学习的常见的错误以及解决的办法,我还会持续更新,请关注

1763
来自专栏猿人谷

使用asp调用.net xml web services

(是不是实际上可以用这个办法调用任何xml web services呢?高人答一下) 最近在做一个web services,由我来写文档。为了方便广大asp用户...

2597
来自专栏Albert陈凯

2018-11-19 Neo4j百万级数据导入只能用neo4j-import

业务需要使用Neo4j出数据关系展示图,数据库里有2张表通过一个字段进行关联,数据量是90万和500万,关系量是150w;

1082

扫码关注云+社区

领取腾讯云代金券