Nginx使用webbench进行压力测试
运维工作中的压力测试是非常重要的工作。网站上线前,能承受多大访问量、在大访问量情况下性能怎样,指标好坏将会直接影响用户体验
在压力测试中存在一个共性,压力测试的结果与实际负载结果不会完全相同,不能保证100%和线上性能指标相同,只能尽量去想方设法模拟,压力测试非常有必要,有了这些数据,就能对自己做维护的平台做到心中有数。
较为常见的网站压力测试工具有webbench、ab(apache bench)、tcpcopy、loadrunner
webbench由Lionbridge公司开发,主要测试每秒钟请求数和每秒钟数据传输量,同时支持静态、动态、SSL,部署简单,静动态均可测试,适用于小型网站压力测试(单例最多可模拟3万并发)
ab(apache bench)
Apache自带的压力测试工具,主要功能用于测试网站每秒钟处理请求个数,多见用于静态压力测试,功能较弱,非专业压力测试工具。
tcpcopy
基于底层应用请求复制,可转发各种在线请求到测试服务器,具有分布式压力测试功能,所测试数据与实际生产数据较为接近后起之秀,主要用于中大型压力测试,所有基于tcp的packets均可测试。
loadrunner
压力测试界的泰斗,可以创建虚拟用户,可以模拟用户真实访问流程从而录制成脚本,其测试结果也最为逼真模拟最为逼真,并可进行独立的单元测试,但是部署配置较为复杂,需要专业人员才可以。
以webbench为例看网站在上线之前压力测试是如何做
安装webbench
#wget http://home.tiscali.cz/~cz210552/distfiles/webbench-1.5.tar.gz
#tar zxvf webbench-1.5.tar.gz
#cd webbench-1.5
#make && make install
进行压力测试,并发200时。
# webbench -c 200 -t 60 http://down.chinaz.com/index.php
参数解释:-c为并发数,-t为时间(秒)
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.
Benchmarking: GET http://down.chinaz.com/index.php
200 clients, running 60 sec.
Speed=1454 pages/min, 2153340 bytes/sec.
Requests: 1454 susceed, 0 failed.
当并发200时,网站访问速度正常
并发800时
#webbench -c 800 -t 60 http://down.chinaz.com/index.php
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.
Benchmarking: GET http://down.chinaz.com/index.php
800 clients, running 60 sec.
Speed=1194 pages/min, 2057881 bytes/sec.
Requests: 1185 susceed, 9 failed.
当并发连接为800时,网站访问速度稍慢
并发1600时
#webbench -c 1600 -t 60 http://down.chinaz.com/index.php
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.
Benchmarking: GET http://down.chinaz.com/index.php
1600 clients, running 60 sec.
Speed=1256 pages/min, 1983506 bytes/sec.
Requests: 1183 susceed, 73 failed.
当并发连接为1600时,网站访问速度便非常慢了
并发2000时
#webbench -c 2000 -t 60 http://down.chinaz.com/index.php
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.
Benchmarking: GET http://down.chinaz.com/index.php
2000 clients, running 60 sec.
Speed=2154 pages/min, 1968292 bytes/sec.
Requests: 2076 susceed, 78 failed.
当并发2000时,网站便出现"502 Bad Gateway",由此可见web服务器已无法再处理用户访问请求
总结
1.压力测试工作应该放到产品上线之前,而不是上线以后
2.测试时尽量跨公网进行,而不是内网
3.测试时并发应当由小逐渐加大,如并发100时观察一下网站负载是多少、打开是否流程,并发200时又是多少、网站打开缓慢时并发是多少、网站打不开时并发又是多少
4.应尽量进行单元测试,如B2C网站可以着重测试购物车、推广页面等,因为这些页面占整个网站访问量比重较大
安装webbench 可能遇到的问题
ctags 命令不存在
ctags *.c
/bin/sh: ctags: command not found
make: [tags] Error 127 (ignored)
这是由于在centos下没自动安装ctags命令
Ctags是一个用于产生代码索引文件的插件,产生的索引文件用于帮助文本编辑器或其他工具快速、准确定位符号在代码文件中的位置
安装 yum install ctags,成功
然后再运行make 成功
在运行make install的时候提示/usr/local/man文件夹不存在
install -s webbench /usr/local/bin
install -m 644 webbench.1 /usr/local/man/man1
install: 无法创建一般文件“/usr/local/man/man1”: 没有那个文件或目录
手动创建此目录 mkdir //usr/local/man/man1
make: *** [install] 错误 1
再运行
#make install
提示
install -s webbench /usr/local/bin
install -m 644 webbench.1 /usr/local/man/man1
install -d /usr/local/share/doc/webbench
install -m 644 debian/copyright /usr/local/share/doc/webbench
install -m 644 debian/changelog /usr/local/share/doc/webbench
接下来就可以测试网站的负载了。webbench -c 500 -t 30。出现如下类似提示。
500 clients, running 30 sec.
Speed=856 pages/min, 64992 bytes/sec.
Requests: 27 susceed, 401 failed.
表示压力很大。