Web Server 压力测试

1.使用ab:
ubuntu安装ab:
apt-get install apache2-utils
centos安装ab:
yum install httpd-tools

执行压力测试:
ab -c 200 -n 200 http://testsite/
ab参数说明:-n表示连接数,-c表示并发数

添加 Cookie 参数:
ab -C cookie1_name=cookie1_value -C cookie2_name=cookie2_value ....
或
ab -C "name=ball;age=99;sex=male"
或
ab -H "Cookie: cookie1_name=cookie1_value; cookie2_name=cookie2_value"

当出现如下报错:
apr_socket_recv: Connection reset by peer (104)
需要加入-r参数
如ab -r -c 200 -n 200 http://testsite/

当出现如下报错:
apr_pollset_poll: The timeout specified has expired (70007)
出现原因主要是timeout连接超时了,可以加个-k参数,让连接keep-alive,另外还有-r 和-s参数也可以加上

-r              Don't exit on socket receive errors.                 # 在遇到socket接收错误后,不退出测试
-s timeout      Seconds to max. wait for each response    # 最大超时时间,默认30s
                    Default is 30 seconds
-k              Use HTTP KeepAlive feature                          # keep-alive保持连接


POST请求压测:
测试请求参数是否正确:
curl -X POST https://xxxxx -d "token=1111&a=2222"

vi post.txt
token=1111&a=2222

ab -n 5000 -c 500 -p 'post.txt' -T 'application/x-www-form-urlencoded' "https://xxxxxx"
2.使用http_load
http://acme.com/software/http_load/

wget http://acme.com/software/http_load/http_load-09Mar2016.tar.gz
tar -xvzf http_load-09Mar2016.tar.gz -C ./
cd http_load-09Mar2016
make

vi urls.txt
添加需要做压测的url

./http_load -p 并发访问进程数 -rate  -s 访问时间(秒) urls.txt
./http_load -r 每秒的访问频率 -s 访问时间(秒) urls.txt
可配合 htop iohtop 同时检测服务器状态
yum install htop iohtop

curl禁用代理:
curl --noproxy 127.0.0.1 http://127.0.0.1/