如何使用siege测试服务器性能

siege是一款开源的压力测试工具,可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。

1 安装

# make sure you have the ssl libs installed(http://digitalleafblower.com/?p=166)
yum install mod_ssl openssl 
git clone https://github.com/JoeDog/siege.git
cat INSTALL  # 步骤
./utils/bootstrap 
./configure --with-ssl=/usr/bin/openssl
make
make install
export PATH=$PATH:/usr/local/bin

验证:siege -V

2 get请求测试:

siege -c 100 -r 10 -f someScript.url

-c是并发量,-r是重复次数。并发量乘重复次数就是总的请求次数。

url文件就是一个文本,每行都是一个url,它会从里面随机访问的。

类似ab的纯并发压力测试:

siege -c 100 -r 10 http://www.google.com

(http://www.blogjava.net/iamtin/archive/2007/10/24/how_to_use_siege.html)

测试tornado程序性能:

$ siege -c 1000 -t 10s 'http://mysite.cn:8090'

xxx

Lifting the server siege...
Transactions:           4191 hits
Availability:         100.00 %
Elapsed time:           9.12 secs
Data transferred:       871.92 MB
Response time:            0.50 secs
Transaction rate:       459.54 trans/sec
Throughput:          95.60 MB/sec
Concurrency:          231.10
Successful transactions:        4203
Failed transactions:             0
Longest transaction:          6.56
Shortest transaction:         0.04

3 post请求测试

siege -c 500 -r 1 '10.23.54.151:19595/v1/db/nova/service_get_all POST <./postfile.json

content_type被正确设置为application/json,服务器正常处理返回。原来siege只能通过文件的扩展名来确定content type格式
(http://blog.csdn.net/xuriwuyun/article/details/12711927)

# 默认Content-type: application/x-www-form-urlencoded
# -g GET, pull down HTTP headers and display the transaction.
siege -c 1000 -t 10s 'http://mysite.cn:8090/login-is POST node=xxx&password=xxx' -g
# map the file extension to the appropriate content-type
# Content-type: application/json
siege -c 10 "http://mysite:8001/query_code POST <./querycode.json"  -t 10s

4 其他web压力测试工具

siege简单易用,其缺点在于统计结果过于粗糙。

如果想知道请求的平均时间、连接、处理、等待时间等信息,可以用apache自带的AB工具(Apache Benchmark)

# 163yum源
cd /etc/yum.repos.d

#备份系统自带的yum源

mv CentOS-Base.repo CentOS-Base.repo.bk

#下载163网易的yum源:

#centos7.x:

wget http://mirrors.163.com/.help/CentOS7-Base-163.repo

#centos6.x:

wget http://mirrors.163.com/.help/CentOS6-Base-163.repo

#更新完yum源后,执行下边命令更新yum配置,使操作立即生效

yum makecache

ref(https://yq.aliyun.com/ziliao/115638

安装好Apache,就自带AB了
yum install httpd

参数很多,一般我们用 -c 和 -n 参数就可以了. 例如:

./ab -c 1000 -n 1000 http://127.0.0.1/index.php

输出的关键参数包括但不限于:

Requests per second: 122.12 [#/sec] (mean)
//大家最关心的指标之一,相当于 LR 中的 每秒事务数 ,后面括号中的 mean 表示这是一个平均值
Time per request: 8188.731 [ms] (mean)
//大家最关心的指标之二,相当于 LR 中的 平均事务响应时间 ,后面括号中的 mean 表示这是一个平均值
Time per request: 8.189 [ms] (mean, across all concurrent requests)
//每个请求实际运行时间的平均值
Transfer rate: 162.30 [Kbytes/sec] received
//平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题

Connection Times (ms)
min mean[+/-sd] median max // 最小值、平均数、中位数、最大值
Connect: 4 646 1078.7 89 3291
Processing: 165 992 493.1 938 4712
Waiting: 118 934 480.6 882 4554
Total: 813 1638 1338.9 1093 7785

【使用siege测试案例】

主流PHP框架性能非权威测试

作为一个PHP开发者,而且是初创企业团队的技术开发者,选择开发框架是个很艰难的事情。

用ThinkPHP的话,招聘一个刚从培训机构出来的开发者就可以上手了,但是性能和后期代码解耦是个让人头疼的事情。不过很多第三方功能不需要自己写,众多大牛已经给铺好路了。

用Laravel的话,传说写起来很爽扩展性也够,但是学习成本有点高,总不能给初级开发者半个月的时间去学习框架吧。而且据说江湖人士透漏,Laravel性能不怎么样,文档也并不是特别丰富。

用Yii的话,语法有点啰嗦,前后端代码分离有点小麻烦,不过性能是非常好的,而且已经有众多国内大公司在使用了,出现意外可以快速的找到大牛答疑解惑。

不如做个简单的性能评测,选个性能出色的总不会出错

性能测试

测试时间: 2016年05月06日
测试工具: siege (因为MAC系统的ab总是会出现 pr_socket_recv: Connection reset by peer (54) 的错误,所以选择了siege)
测试机器: MacPro Core i5 处理器/8GB内存/256GB SSD闪存
测试环境: Apache PHP5.6
框架版本: ThinkPHP 3.2.3 Laravel 5.2 Yii2.0.5
测试原则: 每次测试循环5次,取中等数据
补充说明:所有项目都是让在子目录中

结果说明

Transactions: 2119 hits 处理请求总数量
Availability: 96.85 % 可用性
Elapsed time: 9.74 secs 运行时间
Data transferred: 1.31 MB 数据传输量
Response time: 0.60 secs 响应时间
Transaction rate: 217.56 trans/sec 每秒处理效率
Throughput: 0.13 MB/sec 每秒处理数据
Concurrency: 130.28 并发
Successful transactions: 2162 成功的请求
Failed transactions: 69 失败的请求
Longest transaction: 2.85 最长的单个请求
Shortest transaction: 0.01 最短的单个请求
开始测试

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值