性能测试小工具之Webbench

341 阅读3分钟

** 1、说明
webbench最多可以模拟3万个并发连接去测试网站的负载能力,个人感觉要比Apache自带的ab压力测试工具好,安装使用也特别方便。Webbench能测试处在相同硬件上,不同服务的性能以及不同硬件上同一个服务的运行状况。webbench的标准测试可以向我们展示服务器的两项内容:每秒钟相应请求数和每秒钟传输数据量。webbench不但能具有便准静态页面的测试能力,还能对动态页面(ASP,PHP,JAVA,CGI)进 行测试的能力。还有就是他支持对含有SSL的安全网站例如电子商务网站进行静态或动态的性能测试。
2、编译安装:

[root@localhost local]# wget home.tiscali.cz/~cz210552/d…
--2014-11-03 14:44:29-- home.tiscali.cz/~cz210552/d…
Resolving home.tiscali.cz... 94.124.106.105
Connecting to home.tiscali.cz|94.124.106.105|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7675 (7.5K) [application/x-tar]
Saving to: `webbench-1.5.tar.gz'

100%[===================================================================================>] 7,675 23.1K/s in 0.3s

2014-11-03 14:44:30 (23.1 KB/s) - `webbench-1.5.tar.gz' saved [7675/7675]

[root@localhost local]# tar zxvf webbench-1.5.tar.gz
webbench-1.5/
webbench-1.5/webbench.1
webbench-1.5/socket.c
webbench-1.5/webbench.c
webbench-1.5/Makefile
webbench-1.5/debian/
webbench-1.5/debian/rules
webbench-1.5/debian/dirs
webbench-1.5/debian/copyright
webbench-1.5/debian/control
webbench-1.5/debian/changelog
webbench-1.5/COPYRIGHT
webbench-1.5/ChangeLog
[root@localhost local]# ls -a
. bin flvtool2 include lib libmcrypt mysql nginx sbin src webbench-1.5.tar.gz
.. etc games jpeg8 libexec man neroacenc php share webbench-1.5 webbench.html
[root@localhost local]# cd webbench-1.5
[root@localhost webbench-1.5]# ls -a
. .. ChangeLog COPYRIGHT debian Makefile socket.c webbench.1 webbench.c
[root@localhost webbench-1.5]# vi Makefile
[root@localhost webbench-1.5]# pwd
/usr/local/webbench-1.5
[root@localhost webbench-1.5]# vi Makefile
修改安装路径

[root@localhost webbench-1.5]# wget prdownloads.sourceforge.net/ctags/ctags…
--2014-11-03 15:07:50-- prdownloads.sourceforge.net/ctags/ctags…
Resolving prdownloads.sourceforge.net... 216.34.181.59
Connecting to prdownloads.sourceforge.net|216.34.181.59|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: downloads.sourceforge.net/project/cta… [following]
--2014-11-03 15:07:51-- downloads.sourceforge.net/project/cta…
Resolving downloads.sourceforge.net... 216.34.181.59
Connecting to downloads.sourceforge.net|216.34.181.59|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: softlayer-sng.dl.sourceforge.net/project/cta… [following]
--2014-11-03 15:07:52-- softlayer-sng.dl.sourceforge.net/project/cta…
Resolving softlayer-sng.dl.sourceforge.net... 216.12.198.152
Connecting to softlayer-sng.dl.sourceforge.net|216.12.198.152|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 479927 (469K) [application/x-gzip]
Saving to: `ctags-5.8.tar.gz'

100%[===================================================================================>] 479,927 492K/s in 1.0s

2014-11-03 15:07:53 (492 KB/s) - `ctags-5.8.tar.gz' saved [479927/479927]

root@localhost webbench-1.5]# make&&make install
ctags *.c
/bin/sh: ctags: command not found
make: [tags] Error 127 (ignored)
install -s webbench /home/TseMM/webbench/bin
install -m 644 webbench.1 /home/TseMM/webbench/man/man1
install: cannot create regular file `/home/TseMM/webbench/man/man1': No such file or directory
make: *** [install] Error 1


手动建立目录
[root@localhost webbench-1.5]# mkdir -p /home/TseMM/webbench/man/man1
[root@localhost webbench-1.5]# make&&make install
ctags *.c
/bin/sh: ctags: command not found
make: [tags] Error 127 (ignored)
install -s webbench /home/TseMM/webbench/bin
install -m 644 webbench.1 /home/TseMM/webbench/man/man1
install -d /home/TseMM/webbench/share/doc/webbench
install -m 644 debian/copyright /home/TseMM/webbench/share/doc/webbench
install -m 644 debian/changelog /home/TseMM/webbench/share/doc/webbench
设置一个
[root@localhost webbench]# ln -s ./bin webbench
[root@localhost ~]# ./webbench -c 500 -t 30 http://192.168.50.11/login?back_url=http%3A%2F%2F192.168.50.11%2F
bash: ./webbench: No such file or directory
[root@localhost ~]# cd /home/TseMM/webbench
3、使用:

[root@localhost webbench]# ./webbench -c 500 -t 30 http://192.168.50.11/login?back_url=http%3A%2F%2F192.168.50.11%2F
4、测试结果:

Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Benchmarking: GET http://192.168.50.11/login?back_url=http%3A%2F%2F192.168.50.11%2F
500 clients, running 30 sec.

Speed=53070 pages/min, 992762 bytes/sec.
Requests: 26535 susceed, 0 failed.


总结: 1、压力测试工作应该放到产品上线之前,而不是上线以后;
2、测试时并发应当由小逐渐加大,比如并发100时观察一下网站负载是多少、打开页面是否流畅,并发200时又是多少、网站打开缓慢时并发是多少、网站打不开时并发又是多少;
3、更详细的进行某个页面测试,如电商网站可以着重测试购物车、推广页面等,因为这些页面占整个网站访问量比重较大。

确实,监控服务器负载比较好。物理内存不够会使用Swap交换区,监控Swap就行了,对物理内存无须监控。
关于系统负载这部分,我客户端的脚本已经写完,服务器端过两天再写。
#!/bin/sh
LANG=zh_cn
disk=?(/usr/bin/uptime | awk -F'load average: ' '{print ?2}')
date=?(date -d "today" +"%Y-%m-%d_%H:%M:%S")
ip=?(/sbin/ifconfig | grep "inet addr" | grep -v "127.0.0.1" | awk '{print ?2;}' | awk -F':' '{print ?2;}' | tr -s '\n' ';')
/usr/bin/curl -d menu=loadstat -d password=?2 -d date=?date -d ip=?ip -d data=?disk ?1