引言: 互联网服务压测是非常重要的评价方法,ab,webbench,jmeter等都是业界流行的测试工具,ab和webbench作为shell模式下轻量级的测试工具,jmeter则作为有GUI界面的更高级测试工具,各有特点,ab比webbench功能更多一些,所以这里选择ab和jmeter来做一个对比。
【测试环境的安装】
【ab】
ab就是Apache Benchmark的缩写,顾名思义它是Apache组织开发的一款web压力测试工具,优点是使用方便,统计功能强大。
ab作为一款非常流行的压测工具,使用细节这里就不多介绍了,直接给出个人的使用体会:
首先是安装,ubuntu和centos目前都提供自动安装命令 (至少ubuntu 14, centos 6可以)
ubuntu:sudo apt-get install apache2-utils
centos:yum install httpd-tools
安装好之后就可以开始进行测试。
ab一般常用参数就是 -n, -t ,和 -c。
-c(concurrency)表示用多少并发来进行测试;
-t表示测试持续多长时间;
-n表示要发送多少次测试请求。
一般-t或者-n选一个用。
对于模拟GET请求进行测试,ab非常简单,就是:ab -n 100 -c 10 'http://testurl.com/xxxx?para1=aaa¶2=bbb'
对于模拟POST请求进行测试,则稍微复杂些,需要把将要post的数据(一般是json格式)放在文件里。比如一个post接口需要如下方式访问
curl -H 'Content-Type:application/json' -X POST -d '{"actionType":"collect","appId":1,"contentId":"1770730744","contentType":"musictrack","did":"866479025346031","endType":"mobile","recommendId":"104169490_1_0_1434453099#1770730744#musictrack#USER_TO_SONG_TO_SONGS#gsql_similarity_content2content","tabId":0,"uid":"104169490"}' http://localhost:8083/query/leui/v0/post/user/behavior/content
需要吧-d 后面的json数据放在一个文件里,比如建立一个文件post_data.txt,放入:
{"actionType":"collect","appId":1,"contentId":"1770730744","contentType":"musictrack","did":"866479025346031","endType":"mobile","recommendId":"104169490_1_0_1434453099#1770730744#musictrack#USER_TO_SONG_TO_SONGS#gsql_similarity_content2content","tabId":0,"uid":"104169490"}
然后用-p参数解析并发送这个json数据:ab -n 100 -c 10 -p post_data.txt -T 'application/json' http://localhost:8083/query/leui/v0/post/user/behavior/content
【Jmeter】
jmeter是一个非常强大和用户友好的GUI工具,http访问的参数设置基本应有尽有,软件的help里的用户手册图例比较丰富,对于初学者来说很好上手
对于http测试的可配置参数有(1)http请求配置:测试目标host,端口,url路径,http请求参数,post的数据,h