一个ab压测排查系统瓶颈的例子

ab添加 Cookie 参数

-C

ab -C cookie1_name=cookie1_value -C cookie2_name=cookie2_value ....

或者可以用 -H 参数实现

ab -H "Cookie: cookie1_name=cookie1_value; cookie2_name=cookie2_value"

POST

ab -c 100 -n 1000 -p "loginData.txt" -T "application/x-www-form-urlencoded" "http://domainName/app/login"

ab测试命令

C:\Users\lenovo\Desktop\ab> ab -n 4000 -c 4000 -p "post.txt" http://192.168.238.58/app/info/getInfoDetail?Id=360270316a0960c4e05012ac24072db3 >> getInfoDetail.txt

查看服务器状态

[root@appserver ~]# top
top - 17:57:50 up 53 days,  4:05,  6 users,  load average: 1.52, 0.40, 0.14
Tasks: 138 total,   1 running, 137 sleeping,   0 stopped,   0 zombie
Cpu0  : 14.0%us,  3.7%sy,  0.0%ni, 78.7%id,  3.0%wa,  0.0%hi,  0.7%si,  0.0%st
Cpu1  : 12.6%us,  2.7%sy,  0.0%ni,  6.3%id, 77.7%wa,  0.0%hi,  0.7%si,  0.0%st
Mem:   2056880k total,  2041824k used,    15056k free,   136564k buffers
Swap:  4095992k total,      424k used,  4095568k free,   497432k cached

  PID %MEM  VIRT SWAP  RES CODE DATA  SHR nFLT nDRT S  PR  NI %CPU COMMAND
22432 24.5 1328m 836m 492m    4 1.1g  13m   65    0 S  23   0  0.0 java
22363 18.1  815m 450m 364m  22m 763m  12m   55    0 S  15   0  5.3 mysqld
13387 16.4 1522m 1.2g 329m    4 1.3g  14m  137    0 S  25   0 17.6 java
 2082  1.1 28696 6152  22m  172  20m 1732    0    0 S   6 -10  0.0 iscsiuio
 2496  0.9 30276  11m  18m   12  17m  584    0    0 S  15   0  0.0 restorecond
 2748  0.9  240m 223m  17m    4  31m 5732   76    0 S  15   0  0.0 setroubleshootd
13882  0.6 24340  12m  11m 2596 9680 1928    0    0 S  15   0  1.3 nginx
13881  0.5 22608  12m 9696 2596 7948 1936    0    0 S  15   0  0.0 nginx
 6013  0.5  131m 121m 9420    4 6324 2980    0    0 S  16   0  9.6 iotop
 2975  0.3  151m 144m 6592    4 5476 1048    0    0 S  18   0  0.0 hpssd.py
19922  0.3 95420  86m 6540  388 3912 2696    0    0 S  15   0  0.0 sshd
 2861  0.2 31840  26m 4920  248 3296 1716    0    0 S  15   0  0.0 hald
19924  0.2 58056  52m 4104   52 2588 1588    0    0 S  15   0  0.0 sftp-server
 3172  0.2 92320  86m 3860  388  812 3056    0    0 S  15   0  0.0 sshd
 3667  0.2 92320  86m 3856  388  812 3056    0    0 S  15   0  0.0 sshd
 3170  0.2 93112  87m 3852  388 1604 3052    0    0 S  16   0  0.0 sshd
 3615  0.2 92320  86m 3852  388  812 3056    0    0 S  15   0  0.0 sshd
 6019  0.2 90252  84m 3768  388  812 3000    0    0 S  15   0  0.0 sshd

# 分析:
Cpu1的 %id 空闲仅6.3%,说明Cpu1占用很高;另等待输入输出的CPU时间百分比 %wa 的值很高,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)。

 
 
[root@appserver ~]# iotop -o 
Total DISK READ: 0.00 B/s | Total DISK WRITE: 1442.33 K/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND
  466 be/3 root        0.00 B/s    0.00 B/s  0.00 % 60.25 % [kjournald]
    5 rt/3 root        0.00 B/s    0.00 B/s  0.00 % 13.64 % [migration/1]
22385 be/4 mysql       0.00 B/s    0.00 B/s  0.00 % 12.67 % mysqld --basedir=/usr/local/mysql --datadir=/~emall.pid --socket=/tmp/mysql.sock --port=3306
23850 be/4 mysql       0.00 B/s  155.93 K/s  0.00 %  6.17 % mysqld --basedir=/usr/local/mysql --datadir=/~emall.pid --socket=/tmp/mysql.sock --port=3306
13450 be/4 mysql       0.00 B/s   77.96 K/s  0.00 %  6.02 % mysqld --basedir=/usr/local/mysql --datadir=/~emall.pid --socket=/tmp/mysql.sock --port=3306
13349 be/4 root        0.00 B/s    0.00 B/s  0.00 %  2.92 % java -Djava.util.logging.config.file=/usr/loc~mp org.apache.catalina.startup.Bootstrap start
22382 be/4 mysql       0.00 B/s    0.00 B/s  0.00 %  2.92 % mysqld --basedir=/usr/local/mysql --datadir=/~emall.pid --socket=/tmp/mysql.sock --port=3306
 5913 be/4 root        0.00 B/s    0.00 B/s  0.97 %  1.95 % java -Djava.util.logging.config.file=/usr/loc~mp org.apache.catalina.startup.Bootstrap start
 5851 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.97 % java -Djava.util.logging.config.file=/usr/loc~mp org.apache.catalina.startup.Bootstrap start
 5887 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.97 % java -Djava.util.logging.config.file=/usr/loc~mp org.apache.catalina.startup.Bootstrap start
 5901 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.97 % java -Djava.util.logging.config.file=/usr/loc~mp org.apache.catalina.startup.Bootstrap start
 5911 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.97 % java -Djava.util.logging.config.file=/usr/loc~mp org.apache.catalina.startup.Bootstrap start
 5915 be/4 root        0.00 B/s    0.00 B/s  1.95 %  0.97 % java -Djava.util.logging.config.file=/usr/loc~mp org.apache.catalina.startup.Bootstrap start
 5908 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.97 % java -Djava.util.logging.config.file=/usr/loc~mp org.apache.catalina.startup.Bootstrap start
 5943 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.97 % java -Djava.util.logging.config.file=/usr/loc~mp org.apache.catalina.startup.Bootstrap start
 5866 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.97 % java -Djava.util.logging.config.file=/usr/loc~mp org.apache.catalina.startup.Bootstrap start
 5930 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.97 % java -Djava.util.logging.config.file=/usr/loc~mp org.apache.catalina.startup.Bootstrap start
 5998 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.97 % java -Djava.util.logging.config.file=/usr/loc~mp org.apache.catalina.startup.Bootstrap start
13335 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.97 % java -Djava.util.logging.config.file=/usr/loc~mp org.apache.catalina.startup.Bootstrap start
12125 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [pdflush]
22386 be/4 mysql       0.00 B/s    0.00 B/s  0.00 %  0.00 % mysqld --basedir=/usr/local/mysql --datadir=/~emall.pid --socket=/tmp/mysql.sock --port=3306
 1230 be/4 mysql       0.00 B/s    0.00 B/s  0.00 %  0.00 % mysqld --basedir=/usr/local/mysql --datadir=/~emall.pid --socket=/tmp/mysql.sock --port=3306
20213 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % nginx: master process nginx
 1081 be/3 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kedac]

# 分析:
根据io排序可以看出,kjournald占用很高,应该是ext3在狂写数据

[root@appserver src]# vmstat 2
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  2    424  17236 136560 495228    0    0     1     6    0    2  0  0 100  0  0
 0  1    424  16988 136560 495344    0    0     0  1168 1826 13231 13  4 33 49  0
 0  1    424  16244 136560 495456    0    0     0  1260 1304 11291 14  4 32 50  0
 8  1    424  13236 136560 495560    0    0     0  1190 1830 10366 21  5 38 36  0
 0  2    424  17420 136560 495980    0    0     0  1310 1655 12075 21  8 36 35  0
 1  2    424  17420 136560 496120    0    0     0  1318 1462 11666 13  4 43 40  0
 0  2    424  17172 136560 496232    0    0     0  1204 1767 12308 13  4 43 40  0
 0  1    424  16924 136564 496332    0    0     0  1250 1319 12386 14  4 43 40  0
 0  1    424  16676 136564 496440    0    0     0  1188 1834 12372 13  4 43 40  0
 0  1    424  16428 136564 496568    0    0     0  1188 1619 12459 12  4 34 50  0
 0  1    424  16180 136564 496712    0    0     0  1312 1541 11072 12  4 33 50  0
 0  1    424  16056 136564 496820    0    0     0  1180 1843 12342 14  4 41 40  0
 5  2    424  15808 136564 496924    0    0     0  1188 1327 11523 11  4 44 40  0
 0  1    424  15552 136564 497036    0    0     0  1196 1873 11847 14  4 41 41  0
 0  1    424  15304 136564 497164    0    0     0  1150 1298 12873 15  4 43 39  0
 0  1    424  15180 136564 497308    0    0     0  1246 1893 12078 13  4 43 40  0
 1  1    424  15180 136564 497432    0    0     0  1182 1754 11549 12  4 39 45  0
 0  1    424  14932 136568 497516    0    0     0  1242 1465 11814 12  3 44 41  0
 0  1    424  14932 136572 497644    0    0     0  1218 1870 13324 15  4 39 42  0
 2  1    424  14684 136576 497748    0    0     0  1238 1316 11377 12  4 44 41  0
 0  1    424  12592 136576 498052    0    0     0  1290 2695 13277 15  5 42 39  0

# 分析:
procs(进程)的b列表示等待IO的进程数量
io的bo列(每秒写入的块数)较高(超出1024k),可以看到CPU在IO等待的值也会越大
cpu的wa(IO等待时间百分比)比较高,说明IO等待比较严重


[root@appserver ~]# iostat -x 2
Linux 2.6.18-308.el5 (appserver)    01/25/2017

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          14.21    0.00    4.24   38.40    0.00   43.14

Device:         rrqm/s   wrqm/s   r/s   w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
cciss/c0d0        0.00   139.00  0.00 170.50     0.00  2468.00    14.48     1.31    7.65   5.58  95.20
cciss/c0d0p1      0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
cciss/c0d0p2      0.00   139.00  0.00 170.50     0.00  2468.00    14.48     1.31    7.65   5.58  95.20
dm-0              0.00     0.00  0.00 309.50     0.00  2476.00     8.00     2.53    8.11   3.08  95.20
dm-1              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          15.54    0.00    4.26   39.35    0.00   40.85

Device:         rrqm/s   wrqm/s   r/s   w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
cciss/c0d0        0.00   116.50  0.00 171.00     0.00  2308.00    13.50     1.18    6.92   5.57  95.25
cciss/c0d0p1      0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
cciss/c0d0p2      0.00   116.50  0.00 171.00     0.00  2308.00    13.50     1.18    6.92   5.57  95.25
dm-0              0.00     0.00  0.00 288.50     0.00  2308.00     8.00     2.15    7.50   3.31  95.35
dm-1              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          13.72    0.00    4.74   39.40    0.00   42.14

Device:         rrqm/s   wrqm/s   r/s   w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
cciss/c0d0        0.00   119.50  0.00 178.00     0.00  2392.00    13.44     1.18    6.62   5.36  95.35
cciss/c0d0p1      0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
cciss/c0d0p2      0.00   119.50  0.00 178.00     0.00  2392.00    13.44     1.18    6.62   5.36  95.35
dm-0              0.00     0.00  0.00 296.50     0.00  2372.00     8.00     2.13    7.21   3.21  95.30
dm-1              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00

# 分析:
%util(一秒中I/O 操作的利用率)已经接近100%,可以看出目前这台服务器的IO已经到达瓶颈了。

登录后取得cookie,测接口:

ab -n 1000 -c 1000 -H "Cookie:JSESSIONID=8B3E561233C3451206456CFB86DFA46E" -p "postfile" http://app.tomcatalina.com/app/mark/getMark

结果解释:

Document Path: /app/mark/getMark
#测试的页面
Document Length: 50797 bytes
#页面大小

Concurrency Level: 1000
#测试的并发数
Time taken for tests: 11.846 seconds
#整个测试持续的时间
Complete requests: 1000
#完成的请求数量
Failed requests: 0
#失败的请求数量
Write errors: 0
Total transferred: 204586997 bytes
#整个过程中的网络传输量
HTML transferred: 203479961 bytes
#整个过程中的HTML内容传输量
Requests per second: 337.67 [#/sec] (mean)
#最重要的指标之一,相当于LR中的每秒事务数,后面括号中的mean表示这是一个平均值
Time per request: 2961.449 [ms] (mean)
#最重要的指标之二,相当于LR中的平均事务响应时间,后面括号中的mean表示这是一个平均值
Time per request: 2.961 [ms] (mean, across all concurrent requests)
#每个连接请求实际运行时间的平均值
Transfer rate: 16866.07 [Kbytes/sec] received
#平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 483 1773.5 11 9052
Processing: 2 556 1459.1 255 11763
Waiting: 1 515 1459.8 220 11756
Total: 139 1039 2296.6 275 11843
#网络上消耗的时间的分解,各项数据的具体算法还不是很清楚

Percentage of the requests served within a certain time (ms)
50% 275
66% 298
75% 328
80% 373
90% 3260
95% 9075
98% 9267
99% 11713
100% 11843 (longest request)
#整个场景中所有请求的响应情况。在场景中每个请求都有一个响应时间,其中50%的用户响应时间小于275毫秒,66%的用户响应时间小于298毫秒,最大的响应时间小于11843毫秒。对于并发请求,cpu实际上并不是同时处理的,而是按照每个请求获得的时间片逐个轮转处理的,所以基本上第一个Time per request时间约等于第二个Time per request时间乘以并发请求数。

转载于:https://my.oschina.net/u/588736/blog/833551

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值