在论坛混了多日,发现越来越多的性能测试工程师基本上都能够掌握利用测试工具来作负载压力测试,但多数人对怎样去分析工具收集到的测试结果感到无从下手,下面我就把个人工作中的体会和收集到的有关资料整理出来,希望能对大家分析测试结果有所帮助。51Testing软件测试网1e#u)g,U?V分析原则:51Testing软件测试网W)j1I9ZC(u+F r
[GK}9N2x @8L^C0• 具体问题具体分析(这是由于不同的应用系统,不同的测试目的,不同的性能关注点)51Testing软件测试网'iPe'ZQ4z
51Testing软件测试网ykGkJ/{]_^6xcE• 查找瓶颈时按以下顺序,由易到难。
-Kfs"uQ y
Z3NB051Testing软件测试网(zT4tq3w 服务器硬件瓶颈-〉网络瓶颈(对局域网,可以不考虑)-〉服务器操作系统瓶颈(参数配置)-〉中间件瓶颈(参数配置,数据库,web服务器等)-〉应用瓶颈(SQL语句、数据库设计、业务逻辑、算法等)51Testing软件测试网u/ZL$p
ye^1rv8M
^
[9n0K7M0 注:以上过程并不是每个分析中都需要的,要根据测试目的和要求来确定分析的深度。对一些要求低的,我们分析到应用系统在将来大的负载压力(并发用户数、数据量)下,系统的硬件瓶颈在哪儿就够了。
;}+E8SJ"F k'ku051Testing软件测试网E-F9q*[9g suM.N• 分段排除法 很有效51Testing软件测试网A!D
d1S4T
51Testing软件测试网fS{;qa
n8r$N[g?分析的信息来源:51Testing软件测试网#]}V9{C`.znW
51Testing软件测试网],g#l4|i-}AU$D•1 根据场景运行过程中的错误提示信息51Testing软件测试网ly1UF
A)OR
M}!l*t_q
51Testing软件测试网 O.B@&C;K:Y3m•2 根据测试结果收集到的监控指标数据51Testing软件测试网8L
JE;QK Ear
51Testing软件测试网Z:J'oi$co一.错误提示分析
${7NVe1na.kh0ZN&c)_9@7r^5s0分析实例:51Testing软件测试网
sQ`
tA&N'g
51Testing软件测试网t)sTJ8J+Eg1 •Error: Failed to connect to server “10.10.10.30:8080″: [10060] Connection
0J$_\^uN)F5Za051Testing软件测试网2HtS4^-G k\B•Error: timed out Error: Server “10.10.10.30″ has shut down the connection prematurely
OS4pN8E0HS
tz]r7v_0分析:51Testing软件测试网\5B*`!f$@)kS5o4P r(w
F0Hj[{0•A、应用服务死掉。51Testing软件测试网
Wz
S E'}?dL
-a@,d7^}M
`5r9g)b0(小用户时:程序上的问题。程序上处理数据库的问题)
/e6xUz
}051Testing软件测试网8{ ^+d:B7MX_
`•B、应用服务没有死
1p!\OF3zIz"ri5r0W3m&sH9MBEYtN0(应用服务参数设置问题)51Testing软件测试网E7bCdG-A#tG
*r6rNZ/ExS6G0 例:在许多客户端连接Weblogic应用服务器被拒绝,而在服务器端没有错误显示,则有可能是Weblogic中的server元素的AcceptBacklog属性值设得过低。如果连接时收到connection refused消息,说明应提高该值,每次增加25%51Testing软件测试网t2_p-G$K5uHcl+ov
51Testing软件测试网"B9Bq8?/t•C、数据库的连接
sO7KV"BU:y]0R5CB6j5O+jB~0(1、在应用服务的性能参数可能太小了 2、数据库启动的最大连接数(跟硬件的内存有关))
^]0V![?\0(_O#j3@_3VOM/BV(i02 Error: Page download timeout (120 seconds) has expired51Testing软件测试网+_r6J|6jMGb
4}
d1k#Ym\4d5y!wpK0分析:可能是以下原因造成51Testing软件测试网C5HD6Q+^:{J&rPpO/z
U} nt8q?/hr(\0•A、应用服务参数设置太大导致服务器的瓶颈
ZG]#qUE,ZQ A2X051Testing软件测试网,bUSAW:P lF.Y•B、页面中图片太多
&@P_/{}6p0e'MsOR:t6K6u%yI#Z0•C、在程序处理表的时候检查字段太大多
Ye&l#xw0[#P$dY\#Q0二.监控指标数据分析
Z Oi.?R+_J051Testing软件测试网p7o }S'G2x6W8R1.最大并发用户数:
`(^
Wo QY~04N1oC'wS,Y_0应用系统在当前环境(硬件环境、网络环境、软件环境(参数配置))下能承受的最大并发用户数。
YZ4j!KK/H051Testing软件测试网G
t#^G'o$dO 在方案运行中,如果出现了大于3个用户的业务操作失败,或出现了服务器shutdown的情况,则说明在当前环境下,系统承受不了当前并发用户的负载压力,那么最大并发用户数就是前一个没有出现这种现象的并发用户数。
,m2[9Z%R7n,c051Testing软件测试网%g/K%m1Z2QG;}-? 如果测得的最大并发用户数到达了性能要求,且各服务器资源情况良好,业务操作响应时间也达到了用户要求,那么OK。否则,再根据各服务器的资源情况和业务操作响应时间进一步分析原因所在。51Testing软件测试网;\9e:Z1btHsG
51Testing软件测试网+@(I!P/QB
h2.业务操作响应时间:51Testing软件测试网'R6xNR|+W']y
x5r9]y+S*WV0 • 分析方案运行情况应从平均事务响应时间图和事务性能摘要图开始。使用“事务性能摘要”图,可以确定在方案执行期间响应时间过长的事务。
'\d}\9I0j.j0VY051Testing软件测试网I?.mH:p$BriA• 细分事务并分析每个页面组件的性能。查看过长的事务响应时间是由哪些页面组件引起的?问题是否与网络或服务器有关?
qo2m*m-dZN2@e r0"jo"M%Q8\ cmi0• 如果服务器耗时过长,请使用相应的服务器图确定有问题的服务器度量并查明服务器性能下降的原因。如果网络耗时过长,请使用“网络监视器”图确定导致性能瓶颈的网络问题51Testing软件测试网ytl[S
51Testing软件测试网0r!bO }%Ik`8G:_3E3.服务器资源监控指标:51Testing软件测试网 IHb/zB*nYbA
BYyGRs0内存:
f*J!{ ~N9E$Zj
j'K051Testing软件测试网p~0j g,Y1 UNIX资源监控中指标内存页交换速率(Paging rate),如果该值偶尔走高,表明当时有线程竞争内存。如果持续很高,则内存可能是瓶颈。也可能是内存访问命中率低。51Testing软件测试网HW(y2B%Xev*f/F
*C{#vcQB5^Q!u02 Windows资源监控中,如果Process\Private Bytes计数器和Process\Working Set计数器的值在长时间内持续升高,同时Memory\Available bytes计数器的值持续降低,则很可能存在内存泄漏。51Testing软件测试网l GW|^ IQf]}8W
51Testing软件测试网_(|*mI9bw+` M!cC内存资源成为系统性能的瓶颈的征兆:
cq3a+G2vQc051Testing软件测试网
V"~_N-O,A&H很高的换页率(high pageout rate);51Testing软件测试网"R!l-v5`%{J
t,WlFlF0进程进入不活动状态;
8L/n/q9Y%|0W"J
m*kT8S)|^.f0交换区所有磁盘的活动次数可高;
:J9Dr"X/i,Hd051Testing软件测试网Gr6x*~fzPO可高的全局系统CPU利用率;
Z-q!ga1~/p2`+j3}0*h:v.x'`7C+R0}0P.z0w0内存不够出错(out of memory errors)51Testing软件测试网r&v$\%h'}1[/M#f,G
)pjQE&zc
d0处理器:
z7w$]0s4c-n#XR051Testing软件测试网p(j] Z^;U5`o.^1 UNIX资源监控(Windows操作系统同理)中指标CPU占用率(CPU utilization),如果该值持续超过95%,表明瓶颈是CPU。可以考虑增加一个处理器或换一个更快的处理器。如果服务器专用于SQL Server,可接受的最大上限是80-85%
(B&nF1rv.U$a)v:`+d0"BdU&{NY/^9J0合理使用的范围在60%至70%。51Testing软件测试网2T C5e_;j1@_
!s+L}1} od l
t02 Windows资源监控中,如果System\Processor Queue Length大于2,而处理器利用率(Processor Time)一直很低,则存在着处理器阻塞。
c/DIOe/MvgD!p051Testing软件测试网R|9\,{PoCPU资源成为系统性能的瓶颈的征兆:
mDAVh03V6Ql;^:|3[0很慢的响应时间(slow response time) 51Testing软件测试网ciM!NNm
51Testing软件测试网@!\8_uIf[^;cyCPU空闲时间为零(zero percent idle CPU) 51Testing软件测试网+X
E]8v&O}%p2c
z b5b|E/W;y`}9K0过高的用户占用CPU时间(high percent user CPU) 51Testing软件测试网4A+ze,oq
B S H2|+]9jt.f0过高的系统占用CPU时间(high percent system CPU) 51Testing软件测试网#Y$] ^ r
pm/Rw?}y
51Testing软件测试网|
|7xQR&M;LM?长时间的有很长的运行进程队列(large run queue size sustained over time)51Testing软件测试网
d~1b-t:_x-M2X5qy
51Testing软件测试网pl U5K.Nv"b"M3R磁盘I/O:
I ~]L/_(eEkc051Testing软件测试网#k3\D
^ t Oc1 UNIX资源监控(Windows操作系统同理)中指标磁盘交换率(Disk rate),如果该参数值一直很高,表明I/O有问题。可考虑更换更快的硬盘系统。
y(kFIf`051Testing软件测试网W1IdEx"fb^n2 Windows资源监控中,如果 Disk Time和Avg.Disk Queue Length的值很高,而Page Reads/sec页面读取操作速率很低,则可能存在磁盘瓶径。51Testing软件测试网fL4Q;U)q'a
{&p
51Testing软件测试网n!jy Q"|(iI/O资源成为系统性能的瓶颈的征兆 :51Testing软件测试网fJl/DoA9yr
i`KQz1@} E0过高的磁盘利用率(high disk utilization)
&?1V$?1S1};i0$qq;w/Xo#S(Q(P]4X0太长的磁盘等待队列(large disk queue length) 51Testing软件测试网m"IA1ZGk;u
(a/zIkt4S$X0等待磁盘I/O的时间所占的百分率太高(large percentage of time waiting for disk I/O)
#v'j(Z}2~;n"L6m0eJ051Testing软件测试网k"i
Y;P\i|M太高的物理I/O速率:large physical I/O rate(not sufficient in itself) 51Testing软件测试网*p*rXkW7{#s-K
)z\2`oi0过低的缓存命中率(low buffer cache hit ratio(not sufficient in itself))
.A/@/L0jr-s@*U051Testing软件测试网OScV2^4D r]太长的运行进程队列,但CPU却空闲(large run queue with idle CPU)
bT0N
aj9C},u0SA
?q"~&C0U04.数据库服务器:
1u4`$Z:r5}5Wo%o,L;Q051Testing软件测试网j(L|H,Z6hSQL Server数据库:
X4x
ky
L'dy051Testing软件测试网`8K+DB-z1 SQLServer资源监控中指标缓存点击率(Cache Hit Ratio),该值越高越好。如果持续低于80%,应考虑增加内存。
4dtC2Yc'MT K5?;^03?._/fe{@&VN02 如果Full Scans/sec(全表扫描/秒)计数器显示的值比1或2高,则应分析你的查询以确定是否确实需要全表扫描,以及SQL查询是否可以被优化。
y:]0YM
e
B051Testing软件测试网OakT4]3 Number of Deadlocks/sec(死锁的数量/秒):死锁对应用程序的可伸缩性非常有害,并且会导致恶劣的用户体验。该计数器的值必须为0。51Testing软件测试网
x0ga:@c {6^L7L
5{XY"kW.\5h04 Lock Requests/sec(锁请求/秒),通过优化查询来减少读取次数,可以减少该计数器的值。51Testing软件测试网1ow;Kqe
51Testing软件测试网~ H+J5J5TySx|gOracle数据库:51Testing软件测试网0c@j${KC
51Testing软件测试网 Y)uvrW*Bg1 如果自由内存接近于0而且库快存或数据字典快存的命中率小于0.90,那么需要增加SHARED_POOL_SIZE的大小。
"w6En
t%` e0 JPk[or;Y0快存(共享SQL区)和数据字典快存的命中率:
0]&dS0r.uCG08q H.n%Q'C'v'K{0select(sum(pins-reloads))/sum(pins) from v$librarycache; 51Testing软件测试网7r4G PJ6V;S6fB
SI0A
BXk)DF rwF*Bq0select(sum(gets-getmisses))/sum(gets) from v$rowcache;
,~I"PvoM051Testing软件测试网&L:t[M0a自由内存: select * from v$sgastat where name=’free memory’;
Ou&L-~U051Testing软件测试网s'XUu
v9n Jc.z~$q2 如果数据的缓存命中率小于0.90,那么需要加大DB_BLOCK_BUFFERS参数的值(单位:块)。51Testing软件测试网E
LuORc,c
%lo\:KVL&LKo0缓冲区高速缓存命中率:
Q)B1nuD p]|~0,M7| s{R0X:}t1f0select name,value from v$sysstat where name in (’db block gets’,
/nJ#r/y,H\0*E~"I*sl0‘consistent gets’,'physical reads’) ;51Testing软件测试网(_Y~Sb@%[6t3\H4T
51Testing软件测试网bL9So.An+P;]cHit Ratio = 1-(physical reads / ( db block gets + consistent gets))51Testing软件测试网USg(]2M{(|
51Testing软件测试网l%A7PlU.{9~!l3 如果日志缓冲区申请的值较大,则应加大LOG_BUFFER参数的值。
'b+q){9t\8H#i0!p!nHr\4X6k9l0日志缓冲区的申请情况 :51Testing软件测试网 a/^S8e5Lc3W*Lj
51Testing软件测试网
TEA3u#ha s6i3CLselect name,value from v$sysstat where name = ‘redo log space requests’ ;
[? [0?4`W^/{q051Testing软件测试网U
?5SFV&@Q&N)t5h4 如果内存排序命中率小于0.95,则应加大SORT_AREA_SIZE以避免磁盘排序 。51Testing软件测试网+Pkyp,e0I