压测工具之ab

一、介绍
0、导语
最早接触的压测工具就是ab, ab是ApacheBench的简称,是Apache HTTP服务器基准测试工具,当然也可以测试其他服务器。

1、安装
Linux和Mac系统一般自带Apache, 所以可以直接在终端使用ab命令。Windows系统或其他没有安装的系统,请自行安装。

2、ab参数
ab的具体描述和参数,请参考官网ab, 或者直接man ab查看。

二、压测场景和实例
0、压测GET请求地址

ab -n 1000 -c 100 'http://niliu.me/articles/673.html'

说明:-n 表示请求数;-c 表示一次请求的并发数。

1、压测POST请求地址

ab -n 1000 -c 100 -p ~/Desktop/ab_post_params.txt 'http://niliu.me/articles/673.html'

说明:-p 请求地址时传递的POST参数(格式&分隔的键值对), 示例如下:

cat ~/Desktop/ab_post_params.txt
uid=3223637371&v_p=42&containerid=231219_2966_programpool_10003&cip=172.17.42.1&c=h5&page=1

2、指定代理服务器压测

ab -n 1000 -c 100 -X '10.73.15.50:80' 'http://niliu.me/articles/673.html'

一般是域名解析到多台机器,通过这种方式指定到一台机器。-X 指定IP:端口, 类似curl的请求。

三、压测数据监控
常用命令
vmstat 1 999

vmstat -S m 1 1000

sar -u ALL -r -q -d -p -n DEV 2
https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/sar.html

sar -n DEV 1 99
网卡分析
https://fireinwind.iteye.com/blog/841660
压测的同事心得:但是如果做压测最好用sar ,因为sar耗费服务器资源比vmstat要少很多

四、压测数据分析汇总

五、常见问题
0、提示apr_socket_recv: Connection reset by peer (104)
apr_socket_recv这个是操作系统内核的一个参数,在高并发的情况下,内核会认为系统受到了SYN flood攻击,会发送cookies(possible SYN flooding on port 80. Sending cookies),这样会减慢影响请求的速度,所以在应用服务武器上设置下这个参数为0禁用系统保护就可以进行大并发测试了:
# vim /etc/sysctl.conf
net.ipv4.tcp_syncookies = 0
# sysctl -p
然后就可以超过1000个并发测试了。

参考:
ab压测错误
ab参数详情

发表评论

电子邮件地址不会被公开。 必填项已用*标注