全部博文(409)
分类: LINUX
2011-11-03 09:36:49
官方网站
//siege -c 100 -t 10s -l /usr/local/var/siege.log
Siege是一个多线程http负载测试和基准测试工具。它有3种操作模式:
1) Regression (when invoked by bombardment)Siege从配置文件中读取URLs,按递归方式,逐个发送请求
2) Internet simulation (Siege从配置文件中读取URLs,随机选取URL发送请求)
3) Brute force (在命令行上写上一个单独的URL,发送请求)
安装:
1。wget
2。./configure
3。make
4。make install
siege用法:
[root@testcms ~]# siege --help
SIEGE 2.70
Usage: siege [options]
siege [options] URL
siege -g URL
Options:
-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.
-g, --get GET, pull down HTTP headers and display the
transaction. Great for application debugging.
-c, --concurrent=NUM CONCURRENT users, default is 10
-i, --internet INTERNET user simulation, hits URLs randomly.
-b, --benchmark BENCHMARK: no delays between requests.
-t, --time=NUMm TIMED testing where "m" is modifier S, M, or H
ex: --time=1H, one hour test.
-r, --reps=NUM REPS, number of times to run the test.
-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.
-d, --delay=NUM Time DELAY, random delay before each requst
between 1 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
Copyright (C) 2010 by Jeffrey Fulmer, et al.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE.
--------------
URL格式
支持的格式:
[protocol://] host.domain.xxx [:port] [/path/file]
host.domain.xxx/file POST field=value&field2=value2
host/file POST
在命令行上输入URL时,最好用引号括起来。目前支持http和https两种协议。没有写明协议,默认http
当一次测试中需要多个URL时,可以将URLs放到一个单独的文件中。默认$SIEGE_HOME/etc/urls.txt
例如:urls.txt
# 这里表述注释,一行一个URL
POST scope=a
POST a=1&b=2
# POST文件
POST
POST <./my.txt
Siege一次性将文件读入内存,按照文件中顺序发送请求。[-i]选项可以随机发送URL请求。
在文件中,我们可以设置和引用变量。先定义后引用原则。一个变量一行,类似于shell变量,引用时用$()或者${},如
HOST = homer.whoohoo.com
{HOST}/index.html
如果变量不存在,则表示空字符串。
-------------------
测试报告测试结果会打印在屏幕上,格式如下
** Siege 2.70
** Preparing 100 concurrent users for battle.
The server is now under siege...done
Transactions: 339 hits
Availability: 93.39 %
Elapsed time: 67.47 secs
Data transferred: 4273708 bytes
Response time: 8.25 secs
Transaction rate: 5.02 trans/sec
Throughput: 63342.34 bytes/sec
Concurrency: 41.47
Successful transactions: 337
Failed transactions: 26
Longest transaction: 17.77 secs
Shortest transaction: 0.37 secs
各项含义说明:
Transactions
The number of server hits.一般等于num1 * num2 (-c num1 -r num2) 。有时会超过这个值,例如重定向会算做2次hit。
Availability
服务器成功处理的socket连接的百分比。这个数字不包含400和500级别的错误。
Elapsed time
本次测试所消耗的时间。
Data transferred
传输数据的总和。它包含header和content,所以数字可能会大于服务端的数字。如果使用[-i]选项,因为每次请求的URL是从urls.txt中随机选取的,所以这个值每次运行都会不同。
Response time
平均响应时间。
Transaction rate
这个就是TPS。
Throughput
从server到模拟用户的每秒传输数据量[bytes],即吞吐率。
Concurrency
同时连接数平均值。该值的上升伴随着服务器性能的下降。
Successful transactions
服务器响应code<400的请求次数。
Failed transactions
服务器响应code>=400,加上处理失败的socket连接(包含timeout)的数量。
------------------------------
有时我们会遇到-c500以上出现timeout(排除server端原因),这可能是siege引起的,单个进程所启动的线程数限制。可以使用shell调用方式,多进程运行。
------------------------
系统优化设置
sysctl -w net.ipv4.tcp_tw_reuse=1表示开启重用,允许将TIME-WAIT Sockets重新用于新的TCP连接,默认为0,表示关闭。
sysctl -w net.ipv4.tcp_tw_recycle=1表示开启TCP连接中TIME-WAIT Sockets的快速回收,默认为0,表示关闭。
sysctl -w net.ipv4.tcp_fin_timeout=30参数tcp_fin_timeout 是套接字关闭时,保持FIN-WAIT-2状态的时间。
ulimit -n查看单个进程可以open files的数量。修改方式:
1. 按照最大打开文件数量的需求设置系统, 并且通过检查/proc/sys/fs/file-max文件来确认最大打开文件数已经被正确设置。
# cat /proc/sys/fs/file-max
如果设置值太小, 修改文件/etc/sysctl.conf的变量到合适的值。 这样会在每次重启之后生效。 如果设置值够大,跳过下步。
# echo 20000 > /proc/sys/fs/file-max
编辑文件/etc/sysctl.conf,插入下行。 fs.file-max = 20000
2. 在/etc/security/limits.conf文件中设置最大打开文件数, 下面是一行提示:
#
添加如下这行。 * - nofile 20000
这行设置了每个用户的默认打开文件数为20000。 注意"nofile"项有两个可能的限制措施。
-----------
注:本文部分内容摘抄于网上。
---------------------------------------------------------------------------------------------