使用webbench进行压力测试
原文:http://os.51cto.com/art/201202/317803.htm
软件名称 | 简介 | 优缺点 |
webbench |
由Lionbridge公司开发,主要测试每秒钟请求数和每秒钟数据传输量,同时支持静态、动态、SSL
| 部署简单,静动态均可测试。适用于小型网站压力测试(单例最多可模拟3万并发) |
ab(apache bench) |
Apache自带的压力测试工具,主要功能用于测试网站每秒钟处理请求个数
| 多见用于静态压力测试,功能较弱,非专业压力测试工具 |
tcpcopy | 基于底层应用请求复制,可转发各种在线请求到测试服务器,具有分布式压力测试功能,所测试数据与实际生产数据较为接近 | 后起之秀,主要用于中大型压力测试,所有基于 tcp的packets均可测试 |
loadrunner | 压力测试界的泰斗,可以创建虚拟用户,可以模拟用户真实访问流程从而录制成脚本,其测试结果也最为逼真 | 模拟最为逼真,并可进行独立的单元测试,但是部署配置较为复杂,需要专业人员才可以。 |
(1)安装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
如果出现缺少xx文件,新建即可
(2)进行压力测试,在另一台server上发起测试,因为很耗内存
并发200时
# webbench -c 200 -t 60 http://10.10.21.134/
参数解释:-c为并发数,-t为时间(秒)
nginx.conf 内 worker_connections 1024;(测试的时候必须小于等于这个允许的并发数)
从200往上加,使用 grep 'GET /' /var/log/nginx/access.log | grep '10/Sep/2014'|wc -l , grep 'GET /' /var/log/apache2/access.log | grep '10/Sep/2014'|wc -l 命令分别统计nginx服务器和两个负载服务器接收到的包
关闭iptables后(centos :service iptables stop ubtuna:ufw disable)
并发600时
查看了/var/log/apache2/error.log有很多无法访问的问题,估计是压力测试量太大了。配置有待优化,在网上看到讲Apache2.conf的优化,apache2ctl -l查看支持哪种模式,我的是prefork.c,则将两个均衡server的apache2.conf文件修改:
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 6
ServerLimit 550
MaxClients 500
MaxRequestsPerChild 10000
</IfModule>
修改此指令的值必须完全停止服务后再启动才能生效,先停止再启动以restart方式重启动将不会生效。 ServerLimit 必须放在MaxClients上面 且值>=MaxCliens
并发1000测试:
697+627=1324 ,丢了52次请求,比之前好了点
对upstream处理:
使用ip_hash时:
没有起到均衡,因为测试时ip固定
使用RR轮询:
刚开始在upstream内有一个空格,导致均衡效果差,相对于135server,138请求很少:
删除空行后基本均衡,可是空行应该不影响配置文件啊,在网上也没查到结果,是不是在进行压力测试时,在访问量很大的情况下也相当于在配置文件内加入很多空行???