IT技术博客大学习 共学习 共进步

实用命令行工具详解(二)—siege

web开发免不了性能测试,经常需要模拟高并发的场景,siege和apache ab都是不错的选择,siege可以从你选择的预置列表中请求随机的URL。所以siege可用于仿真用户请求负载,而ab则不能。但不要使用siege来执行最高性能基准调校测试,这方面ab就准确很多。siege看名字就很霸气,暴力群殴,哥喜欢。

Siege是Linux系统下的一个测试工具,完全使用C语言实现,可以对HTTP和FTP服务器进行负载和性能测试。设计用于评估WEB应用在压力下的承受能力。可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。

用法举例

1.模拟500个用户,重复50次请求

siege -c 500 -r 50 -f url.txt

说明:-c是并发量,-r是重复次数。url.txt就是一个文本文件,每行都是一个url,它会从里面随机访问的。

url.txt内容: http://baidu.com/

2.模拟500个用户连续请求10分钟

siege -c 500 -t10M -u http://baidu.com

表示对http://baidu.com/这个站点使用500个用户并发访问,持续10分钟进行测试,注意:”-t10M”之间没有空格

3.Siege来重现对一台服务器的日志记录

$ cut-d ' '-f7 /logs/access.log > urls.txt
$ siege -c 1 -b -f urls.txt

结果说明

** SIEGE 2.70
** Preparing 10 concurrent users for battle.
The server is now under siege.. .

Transactions: 200 hits //完成200次处理
Availability: 100.00 % //100.00 % 成功率
Elapsed time: 16.24 secs //总共使用16.24s
Data transferred: 2.03 MB //共数据传输 2.03 MB
Response time: 0.01 secs //响应时间,显示网络连接的速度
Transaction rate: 12.32 trans/sec //平均每秒完成 12.32次处理,也就是QPS
Throughput: 0.12 MB/sec //平均每秒传送数据
Concurrency: 0.13 //实际最高并发连接数
Successful transactions: 200 //成功处理次数
Failed transactions: 0 //失败处理次数
Longest transaction: 0.03 //请求响应最长时间
Shortest transaction: 0.00 //请求响应最短时间

参数详解

-C,或-config 在屏幕上打印显示出当前的配置,配置是包括在他的配置文件$HOME/.siegerc中,可以编辑里面的参数,这样每次siege 都会按照它运行.
-v 运行时能看到详细的运行信息
-c n,或-concurrent=n 模拟有n个用户在同时访问,n不要设得太大,因为越大,siege 消耗本地机器的资源越多
-i,-internet 随机访问urls.txt中的url列表项,以此模拟真实的访问情况(随机性),当urls.txt存在是有效
-d n,-delay=n hit每个url之间的延迟,在0-n之间
-r n,-reps=n 重复运行测试n次,不能与 -t同时存在
-t n,-time=n 持续运行siege ‘n’秒(如10S),分钟(10M),小时(10H)
-l 运行结束,将统计数据保存到日志文件中siege .log,一般位于/usr/local/var/siege .log中,也可在.siegerc中自定义
-R SIEGERC,-rc=SIEGERC 指定用特定的siege 配置文件来运行,默认的为$HOME/.siegerc
-f FILE, -file=FILE 指定用特定的urls文件运行siege ,默认为urls.txt,位于siege 安装目录下的etc/urls.txt
-u URL,-url=URL 测试指定的一个URL,对它进行”siege “,此选项会忽略有关urls文件的设定

urls.txt文件:是很多行待测试URL的列表以换行符断开,格式为:
[protocol://]host.domain.com[:port][path/to/file]

建议继续学习

  1. vim几个小技巧(批量替换,列编辑) (阅读 37,263)
  2. ps - 按进程消耗内存多少排序 (阅读 12,523)
  3. find命令的一点注意事项 (阅读 11,682)
  4. 100个常用的linux命令 (阅读 11,443)
  5. 每个程序员都应该知道的8个Linux命令 (阅读 10,585)
  6. 最受欢迎的10个 Linux 单行命令 (阅读 10,002)
  7. Linux date 命令获取某日期的前一天 (阅读 9,724)
  8. ps 命令常见用法 (阅读 9,322)
  9. Linux常用系统信息查看命令 (阅读 8,501)
  10. Linux 常见高危操作 (阅读 8,262)