【转】LR测试结果评估与测试报告(续一)

上一篇 / 下一篇  2019-09-27 10:16:55 / 个人分类:性能测试

这里主要讨论故障分析内容以及优化调整设置内容

{4N%dD dR!D0

1)     故障分析重点内容

B9J6s,ki1m2R0

                    故障分析的重点内容包括以下几个方面:

O7P1bYn/\0

a)        CPU问题

c7R;o'k)TCS jbr0

b)       内存和高速缓存

Nf6giK's0

c)       磁盘(I/O)资源问题51Testing软件测试网!jyD(G/vF&j5IJ#I

d)       配置参数51Testing软件测试网9jy1q'JV*m

e)        应用系统网络设置

7Y5m e3]2H0

f)        数据库服务器故障定位

}-C7Y,G"U#U%VzQ8E0

2)     经验探讨

"xW L N'v0H;X]W0

l        经验举例1

#` V7?%_d3XnJ$p0

         交易的响应时间如果很长,远远超过系统性能的需求,表示耗费CPU的数据库操作。例如排序,执行aggregate functions(例如summinmaxcount)等较多,可考虑是否有索引以及索引建立得是否合理。尽量使用简单的表链接、水平分割大表格等方法来降低该值。

N)^} \9sWQLWW0

l        经验举例251Testing软件测试网?jG0tLJ|&M

         测试工具可以模拟不同的虚拟用户来单独访问web服务器、应用服务器和数据库服务器,这样,就可以在Web端测出的响应时间减去以上各个分段测出的时间,就可以知道瓶颈在哪里并着手调优。51Testing软件测试网-ri Ys3Z"h gw t

l        经验举例351Testing软件测试网jG+Xz)br:tP

         UNIX资源监控(NT操作系统同理)中指标内存页交换速率(Paging rate),如果该值偶尔走高,表明当时有线程竞争内存。如果持续很高,则内存可能是瓶颈,也可能是内存访问命中率低。“Swap in rate”和“Swap out rate”也有类似解释。

z4`l)x&a2h(\F'm/H0

l        经验举例4

#e)_8wOE,zZ0

         UNIX资源监控(NT操作系统同理)中指标CPU占用率(CPU utilization),如果该值持续超过95%,表明瓶颈是CPU。可以考虑增加一个处理器或换一个更快的处理器。合理使用的范围在60%70%。51Testing软件测试网B6dkf [;X(~ F

l        经验举例5

y.hr)up'J3o0

         Tuxedo资源监控中指标队列中的字节数(Bytes on queue),队列长度应不超过磁盘数的1.52倍。要提高性能,可增加磁盘。注意,一个Raid Disk实际有多个磁盘。51Testing软件测试网cH0r,G2j

l        经验举例651Testing软件测试网.[R sL3~6f Z

         SQLServer资源监控中指标缓存点击率(Cache Hit Ratio),该值越高越好。如果持续低于80%,应考虑增加内存。注意该参数值是从SQL Server启动后,就一直累加记数,所以运行经过一段时间后,该值将不能反映系统当前值。51Testing软件测试网fiu,n!i:u+C

3)  优化调整设置51Testing软件测试网~,} kD L:F0E1_P

                 针对上述故障分析的重点内容,需要做相应的优化调整,建议如下:51Testing软件测试网?S~t*Aj ubT#a$nM

u    CPU问题51Testing软件测试网!G0`a.Mw5\

a)        考虑使用更高级的CPU代替目前的CPU51Testing软件测试网.V4D~;q&HE.]Y^2p

b)       对于多个CPU,考虑CPU之间的负载分配51Testing软件测试网"ke @F'^4kIl

c)       考虑在其他体系上设计系统,例如增加前置机、设置并行服务器等

@0S#O1Bc/G/?X%p qK P2v0

u    内存和高速缓存51Testing软件测试网6t*s)`;vG-w2z\*U

a)      内存的优化包括操作系统、数据库、应用程序的内存优化

Th|,f*o'h$G`0

b)     过多的分页与交换可能降低系统的性能

B4PF:x ]Q5{s3GobqJ0

c)     内存分配也是影响系统性能的主要原因

i4X9b&uXY8\0

d)     保证保留列表具有较大的邻接内存块51Testing软件测试网*c)LG(y*b%tS

e)      调整数据块缓存区大小(用数据块的个数表示)是一个重要内容51Testing软件测试网2k4j |2WN}t*W D^

f)      将最频繁使用的数据保存在存储区中

"A"f's%hK!S;s U `Tc0

u    磁盘(I/O)资源问题

F8c1Q S;A`0

a)      磁盘读写进度对数据库系统是至关重要的,数据库对象在物理设备上的合理分布能改善性能

!ix]gz/g7Q)I{6v0

b)     磁盘镜像会减慢磁盘写的速度

[O(_4f S r4D uj0

c)     通过把日志和数据库对象分布在独立的设备上,可以提高系统的性能

A0Pc+o)S7s0

d)     把不同的数据库放在不同的硬盘上,可以提高读写速度。建议把数据库、回滚段、日志放在不同的设备上

3y l5C?f a@0

e)      把表放在一块硬盘上,把非簇的索引放在另一块硬盘上,保证物理读写更快。

"@0U"LQ ~;H3Ti%?E0

u    调整配置参数

T;{(DZ$U)R0

a)      包括操作系统和数据库的参数配置51Testing软件测试网 YuK4i*{ v)zX

b)     并行操作资源限制的参数(并发用户的数目、会话数)

6I)b4AdL0

c)     影响资源开销的参数51Testing软件测试网/]#?6Xzl

d)     I/O有关的参数

8k*o^)H%LNSm0

u    优化应用系统网络设置

p u[EuKNJIC0

a)        可以通过数组接口来减少网络呼叫。不是一次提取一行,而是在单个往来往返中提取10行,这样效率较高

-x7J._Yiu0

b)       调整会话数据单元的缓冲区大小51Testing软件测试网NN[ bF4|

c)       共享服务进程比专用服务进程提供更好的性能

P0z G1F ?n D0

4)负载压力典型问题分析

,xHj*t-z|w9l0

            负载压力测试需要识别的故障问题主要包括:51Testing软件测试网k |y)i!jK-m

u      非正确执行的处理

_o$Wq"Pw0

u      速度瓶颈与延迟51Testing软件测试网 I@e^ {3\[T

u      不能达到满意服务水平

O pr'fvP?.Z%D~0

u      接口页面不能正确地装载或者根本不能装载

8Ct8@j\0

当在合理的加载下出现这些类型的问题时,则表示可能有基础性的设计问题,比如说:算法问题,低效的数据库应用程序交互作用等,这些都不是通过简单升级硬件以及调整系统配置就可以解决的问题,此时软件的故障定位和调优将占有更重要的地位。

t{9u"E}q0

5)Web网站故障分析举例51Testing软件测试网WI:WL:tHATS

            目前Web开发者提供可定制的Web网站,例如,象搜索数据之类的任务,现在可以由服务器执行,而无需客户干预。然而,这些变革也导致了一个结果,这就是许多网站都在使用大量的未经优化的数据库调用,从而使得应用性能大打折扣。51Testing软件测试网9Q&v U`e5a7v's&r

        可以使用以下几种方法来解决这些问题:51Testing软件测试网V|0c1}x6horZ

u  优化ASP代码51Testing软件测试网]!Sis rp Xd k\

u  优化数据库调用51Testing软件测试网j^4e3S.nz

u  使用存储过程51Testing软件测试网2C(y&Yrja

u  调整服务器性能

6l6K V%\btK}0

        优秀的网站设计都会关注这些问题。然而,与静态页面的速度相比,任何数据库调用都会显著地影响Web网站的响应速度,这主要是因为在发送页面之前必须单独地为每个访问网站的用户时进行数据库调用。51Testing软件测试网#[R*l1G,Y,l6e7s

        这里提出的性能优化方案正是基于以下事实:访问静态HTML页面要比访问那些内容依赖于数据库调用的页面要快。它的基本意思是:在用户访问页面之前,预先从数据库提取信息,写入存储在服务器上的静态HTML页面。为了保证这些静态页面能够及时地反映不断变化的数据库数据,必须有一调度程序管理静态页面的生成。

R$~PW!B0

        当然,这种方案并不能够适应所有的情形。例如,如果是从持续变化的大容量数据库提取少量信息,这种方案是不合适的。

/un5PJ%nV ~:[0

        每当该页面被调用时,脚本就会提取最后的更新时间并将它与当前时间比较。如果两个时间之间的差值大于预定的数值,更新脚本就会运行,否则,该ASP页面把余下的HTML代码发送给浏览器51Testing软件测试网u+c!h2o t/wJ'kj b

        如果每次访问ASP页面的时候都要提供最新的信息,或者输出与用户输入密切相关,这种方法并不实用,但这种方法可以适应以固定的时间间隔更新信息的场合。51Testing软件测试网&Z+ycvuS?[|'m:V)@

        如果数据库内容由客户通过适当的ASP页面更新,要确保静态页面也能够自动反映数据的变化,我们可以在ASP页面中调用Update脚本。这样,每当数据库内容改变时,服务器上也有了最新的静态HTML页面。51Testing软件测试网os/w`j ng

        别一种处理频繁变动数据的办法是借助Microsoft SQL Server 7.0或以上版本的Web助手向导(Web Assistant Wizard),这个向导能够利用Transact-SQL、存储过程等从SQL Server数据生成标准的HTML文件。51Testing软件测试网'xWbt{U

        Web助手向导能够用来定期地生成HTML页面。正如前面概要介绍的方案,Web助手可以通过触发子更新HTML页面,比如在指定的时间执行更新或者在数据库数据变化时执行更新。51Testing软件测试网Xr6?F!oZs

        SQL Server使用名为sp_makewebtask的存储过程创建HTML页面,它以参数是目标HTML文件的名字和待执行存储过程的名字,查询的输出发送到HTML页面。另外,也可以选择使用可供结果数据插入的模板文件。51Testing软件测试网sg:il'k^l

        万一用户访问页面的时候正好在执行更新,我们可以利用锁或者其他类似的机制把页面延迟几秒钟。

,M0])^&BYR0

        静态页面方法并不能够适合所有类型的页面,例如,某些页面在进行任何处理之前必须要有用户输入。但是,这种方法可以成功地应用到那些不依赖用户输入却进行大量数据库调用的页面,而且这种情况下它将发挥出更大的效率。

8?5Vi8m+F(F4j0

        在大多数情况下,动态页面的生成将在相当大的程度上提高网站的性能,而且无须在功能上有所折衷。虽然有许多大的网站采用了这个策略来改善性能,但也有许多网站完全由于进行大量没有必要的数据库调用,而表现出很差的性能。51Testing软件测试网!J"E:{$t`0Mv

2.        数据库服务器性能问题及原因分析

M ^T\Qz*s0_0

数据库服务器性能问题主要表现在某些类型操作的响应时间过长、同一类型事务的并发处理能力差和锁冲突频繁发生等方面。应该说,这些问题是数据库服务器性能不佳的典型表现。由于造成上述情况的原因众多,需要分情况加以分析。

V:K e}4wT)h0

1)单一类型事务响应时间过长

v0P({{:? Y({0

            响应时间(Response Time,RT)是系统完成事务执行准备后所采集的时间戳和系统完成待执行事务后所采集的时间戳之间的时间间隔,是衡量特定类型应用事务性能的重要指标,标志了用户执行一项操作大致需要多长时间。响应时间过长意味着用户完成执行一项命令需要等待相当长的时间。实践表明,通常情况下用户能够接受的响应时间最大为200ms。不仅如此,响应时间过长也是造成系统锁冲突严重的重要原因之一。51Testing软件测试网@w&x1R;w W+JN

        造成响应时间过长的原因非常复杂,通常可以从以下几方面考虑。51Testing软件测试网W'J+}?B'BO2f

a)  数据库服务器负载过重。51Testing软件测试网Zzl6D1_K

b) 糟糕的数据库设计

E#t{;E*CBs0

c) 事务粒度过大

'l4e7A+M0t"zVb0

d) 批任务对普通用户性能的影响51Testing软件测试网fU9t d%DGc,U

u      数据库服务器负载过重

D a4[z5~Q L B0

             数据库服务器负载过重不可避免地会造成响应时间过长。这标志着当前服务器系统的硬件条件不能满足实际用户对性能的需要。服务器负载过重主要表现在CPU使用率高、内存占用率大、I/O与页面交换频繁发生等方面。由于服务器系统本身一般都提供性能监控程序,定位服务器性能问题相对比较容易。解决这类问题的方法一般是升级服务器硬件,提高数据库服务器本身的处理能力。但是,通过升级服务器硬件获得的性能提升是很有限的,并且对于某些诸如算法复杂度过高等问题根本无法解决。51Testing软件测试网$Rx pD?$h4D;b

u      糟糕的数据库设计

Cpbbc Y"qy0

             糟糕的数据库设计是导致单一事务响应时间过长的最重要原因。通常,数据库设计在系统开发初期进行,此时,数据库设计人员往往对数据库的实际的规模和特性没有足够的了解。在数据库设计方面,对响应时间影响较大的因素有数据库表的规模、索引的使用、数据的分布、查询优化等。其中索引的使用极大影响事务执行的响应时间。实际上,很多情况下应用程序在访问大规模数据库表时的确没有使用索引。造成这种情况的原因通常是开发人员的疏忽,也有用户的需求变化过多,某些数据库字段不适合建立索引的情况。在这里需要特别指出的是,对组合索引进行查询时,查询条件中字段的顺序与数据库设计的索引字段顺序要一致。如果顺序颠倒,组合索引根本不能被数据库使用。例如,表Afield1,filed2,field3),有组合索引indexfield1,filed2),诸如SELECT * FROM A WHERE((field2=condition2) AND (field1=condition1))SELECT* FROM A WHERE(field2=condition2)的查询无法使用index索引。此外,并非增加索引就一定能够提高单一事务执行的响应时间。过多的索引使用将极大地增加插入操作(INSERT)的花费,从而使响应时间变长。51Testing软件测试网-_,Y%{(G-v3FX9X#VJ,z

      数据库表规模过大,是指单一数据库表的记录数在百万行以上,对这类表直接进行检索而不采取必要的优化手段,必然造成单一查询响应时间过长。如果数据库表的规模一再增大,使用索引也不能很有效地解决响应时间过长的问题。对此问题,可能的解决办法是对数据库进行分布,使查询能够并行执行或缩小查询的范围。目前,主流关系数据库管理系统都提供表分区(分段)存储,以使得软件开发人员比较容易地实现数据分布。51Testing软件测试网5w]TGJ

      查询优化对响应时间的影响也不容忽视,尽管优化活动由数据库管理系统完成。实际上一条结构化查询语句(SQL)的写法有很多种,不同的写法可能有不同的响应时间,这一差别可能非常大。如果开发人员在软件编写过程中恰好使用了执行效率低的SQL语句,其响应时间自然就会变长。目前,某些独立软件开发商已经注意到这种情况,并开发了相应的软件帮助应用软件开发人员找到执行最快的SQL语句的写法。但是,由于数据库本身是动态变化的,执行最快的SQL语句也可能变化,所以这种方法也是局限性的。51Testing软件测试网@5_'\1Z;Mx)u

u      事务粒度过大

6sE/j5RT*zl8Hs!Wn0

事务粒度过大指单一数据库事务执行过程中,需要以某种并发控制访问多个数据库资源。通常采用的并发控制机制是互斥锁或者共享锁。这种大粒度事务的执行由于要访问多个数据库资源(如数据库表),本身就需要消耗相当长的时间。此外,由于通常事务在执行的时候会对数据库资源进行加锁,这类事务也对其他访问该资源的用户造成影响。由于这类事务通常使用的锁数量都在两个以上,如果不合理地进行控制,极容易造成死锁。因此,在应用软件设计过程中,应该尽量消除大粒度事务。

+C DNq d0

u      批任务对普通用户性能的影响51Testing软件测试网^eiK0gP-i/Y

             批任务是指一次操作将对数据库中大量数据进行互斥访问的数据库事务。这种类型的事务通常将更新同一个数据库表中的数千项乃至更多的数据。由于这类任务把所有操作放置在同一个数据库事务中,所访问的资源在其执行过程中始终被锁定,必然会对其他普通事务造成访问影响。此外,由于这类任务本身将对数据库服务器造成巨大的负担,使得服务器负载加重,从而影响独立事务的响应时间。通常情况下,批任务推荐在系统具有较长空闲时完成(如晚上),这样可以保证不对独立事务造成影响。如果由于业务的要求,批任务必须与独立事务混合运行,则必须对其加以改造,以减轻对其他事务的影响。


TAG:

 

评分:0

我来说两句

Open Toolbar