1、ab安装
yum -y install httpd-tools
安装完成后看下是否安装成功: ab -V
2、编写脚本
echo '{"userId":"500669758"}' > /usr/local/ab/home_edu/getUserSig
ab -n 20000 -c 4000 -k -p "/usr/local/ab/home_edu/getUserSig" -H "token:6B0011980C7A0B43EDEE0A359094871A8E81386F224642852878B4391786C5B4" -H "Content-Type:application/json;charset=UTF-8" https://api-test.gupiao.com/renren-fast/IM/getUserSig
其中
1、echo 跟的是请求参数,后面跟着是请求参数保存路径
2、-n 代表发送2万个请求
3、-c 代表每秒发送4000个请求
4、-p代表请求参数路径
5、-H代表请求的header参数
6、最后跟着就是接口请求完整路径
Percentage of the requests served within a certain time (ms)
50% 106
66% 109
75% 111
80% 114
90% 118
95% 154
98% 176
99% 195
100% 195 (longest request)

//这个表第一行表示有50%的请求都是在106ms内完成的,可以看到这个值是比较接近平均系统响应时间(第一个Time per request: 109.287 [ms] (mean) )
以此类推,90%的请求是小于等于118ms的。刚才我们看到响应时间最长的那个请求是195ms,那么显然所有请求(100%)的时间都是小于等于195毫秒的,也就是表中最后一行的数据肯定是时间最长的那个请求(longest request)。
在nginx或者SLB中看到的状态码说明:
503:nginx或者slb请求超载,多余的请求被nginx或者slb给丢弃了
调整方案:如果是nginx,可以使用多个nginx,让域名解析按照权重分配到不同的nginx中,如果是slb,那么使用多个slb,让域名解析按照权重分配到不同的slb中。
502:服务端超载,多余的请求被tomcat给丢弃了
调整方案:如果是java项目服务,比如springboot,springcloud项目中设置tomcat连接数,最大接收数等等,根据自己并发能力需要来定,如果设置太大其他服务redis,mysql等等跟不上服务也会挂掉,我这边根据自己并发量调整大了点,这样保证大量请求能进来不被tomcat拒绝。
504:代表网关超时 (Gateway timeout),是指服务器作为网关或代理,但是没有及时从上游服务器收到请求,主要原因是业务处理超时了。