度过了一个冬眠,在春末夏初之际,补充自己的营养,努力学习,努力工作!

LR测试结果评估与测试报告(续二)

上一篇 / 下一篇  2008-05-20 17:57:54 / 个人分类:LR文档

1)并发处理能力差

d)^ Mh(a_0

            并发处理能力差是指应用系统在执行同一类型事务的多个实例时,不能获得与执行实例数量相当的吞吐量,而是大大低于理论值。一般来说,这类问题都是由于互斥访问造成的,即并发执行中的某个实例以互斥方式对资源进行访问,造成了其他同类型用户必需等待该实例释放锁定资源后才能执行。应该指出,由于某些资源必须以互斥的方式进行访问,某些类型的事务在同一时间时只能有一个进行执行的。对于并发处理能力差的问题,可能的解决方法有,降低同一类型事务中锁的粒度、优化应用逻辑以缩短单一类型事务响应时间等。51Testing软件测试网r*\"AKqWT

2)锁冲突严重

"Q+B*N1Pd0

            锁冲突是每个以关系数据库为核心的信息系统必须解决的问题。这里的锁冲突是指同一类型事不同类型事务在并发执行的情况下,由于资源互斥而相互影响,造成一个或多个事务无法正常执行的情况,包括资源锁定造成的数据库事务超时和死锁两个方面。

Wr"q1DA5j0

u    资源锁定造成的数据库事务超时。51Testing软件测试网 @SM'bf7v

                 资源锁定导致的数据库事务超时,其原因是多方面的,其中,批任务影响其他类型独立事务的情况占有相当大的比重。此外,某些改造过的批任务由于频繁对待定资源时行锁定,也会对独立事务造成相当大的影响。如果在设定时间内,数据库服务器由于资源锁定没有能够完成客户端发出的操作请求,数据库服务器将通知被锁定的客户端该操作超时。

v8g:v!r E6\pjS"x0

                 某些大粒度事务在并发执行的实例较多时也会造成同类或不同事务的数据库超时。51Testing软件测试网fl/\+C$@;`&zR

            此外,应用系统如果没有健壮的异常处理机制,很可能造成锁资源不被释放(即,开始的事务既没有提交也没有回滚)。当这种错误发生时,必然造成资源被长久锁定。对此类问题,应用系统在开发的过程中需要采取一套完善的异常处理机制,确保资源不被长期锁定。51Testing软件测试网h:h9P6A QXR#g ir t

u    数据库死锁

nk&EA_N)g(fw0

                 由于数据库死锁可以看作进程间死锁的一种特殊情况,可以采取与处理操作系统死锁相类似的方法解决数据库死锁的问题。造成死锁必须具备下述条件(Coffman et al 1971):

Q4h&I0BO&u7w(`e2[#c0

a)  互斥条件:每一个资源或者被分配给特定的进程,或者可用。

j7j#yh? @#L#D:Q0

b)  持有并等待条件。被授权持有资源较早的进程可以请求新资源。51Testing软件测试网A&?m9M0z

c)不可取代原则。事先被赋予的资源不能够从该进程被强制取走,它们必须被所持有的进程明确释放。51Testing软件测试网 PL9i@Kc

d)环等待条件。必须存在两个或者多个进程的环形链,其中每一进程都等待由环形链的下一个成员所持有的资源。51Testing软件测试网] N]*di&el/n*wx

由于软件开发人员对资源争用可能造成的死锁问题往往没有充分考虑,而目前主流数据库管理系统主要采用乐观的并发控制算法,导致应用系统实际使用过程中频繁发生死锁。应该说明,同类型数据库事务的不同实例之间由于访问资源的顺序一致,通常情况不会发生死锁;不同类型事务之间如果没的按照一个统一的契约进行并发访问,将极容易形成死锁。因此,在确保应用系统功能的前提下,制定一个不同事务之间进行并发访问的原则,就可以有效消除环等待,减少死锁发生的可能性。51Testing软件测试网i6x,w S z%^f

        在针对数据库服务器常见性能问题进行充分研究的基础上,制定了一套适用于解决已发布系统性能问题的通用方法,步骤如下:

tA*}j#P%y_fE%Z0

a)  监视性能相关数据

^+F6C(r9a%GxH L0

b)  定位资源占用较大的事务并做出必要的优化调整51Testing软件测试网:N&TA-]nP

c)  定位锁冲突,修改锁冲突发生严重的应用逻辑

jz)])gF0

d)  对规模较大的数据或者无法通过一般优化解决的锁冲突进行分布51Testing软件测试网s0a v&k$[M

      必须指出,解决数据库性能问题是一个迭代和往复的过程,通常需要在各种条件的矛盾之间寻求最佳的平衡点。

Gq!Zg9dEIs.?0

4)       监视并记录性能相关数据51Testing软件测试网\'k&i+_)b

            对数据库服务器软件、操作系统、网络环境乃至客户端等各类处理单元的性能相关信息进行监视并记录,是发现数据库性能问题的基础。这一步骤的作用是搜集与数据库服务器性能表现密切相关的数据,作为分析性能问题的基础。由于各个处理单元的状态是随着时间的推移而动态变化的,性能数据的监视与采集必须尽可能详细地记录下所有时间点上各个处理单元的状态信息。为此,采取各个采样时间点的处理单元状态信息进行快照方式,来对性能相关数据进行监控和记录,相邻采样时间的间隔越小,状态信息就越准确。51Testing软件测试网 e+sPw U-t iZ+cx)s

            在各类监视活动中,对数据库服务器软件性能属性的监视是整个活动的重点,主要集中在数据库会话的状态信息、执行的结构化查询语句和锁使用情况等方面。其中,状态信息代表了单一数据库会话在其生命周期中的状态变化情况,包括在哪一个时间点开始一个事务,在哪一个时间点被其他会话锁定,何时超时等。执行的结构化查询语句代表单一数据库会话在其生命周期中执行的所有数据库操作。锁使用情况代表整个数据库服务器的锁资源使用和变化情况。此外,顺序扫描、高代价查询等属性也是代表数据库服务器性能的重要数据。51Testing软件测试网)Y{drgJ-g8p

5)       定位资源占用较大的事务并做出必要的优化或调整51Testing软件测试网}Y&ATm s'b*}q"j

            通过对数据库锁使用情况和SQL语句的执行历史进行分析,可以发现一个事务同时占用大量数据库锁的应用逻辑事务。通常这类事务都属于批任务。由于批任务本身的特性,决定了在其整个执行过程中,必然消耗大量资源,最好将其放置在系统具有充分空闲时间时进行。

(r"s3m ^.sV0

6)       定位锁冲突,修改锁冲突发生严重的应用逻辑51Testing软件测试网/^6B B-RR/f

            如果应用系统锁冲突频繁发生,那么系统的性能表现不可能令人满意。导致这种问题的原因非常复杂,主要表现在事务粒度过大、响应时间过长、异类事务互相影响并形成死锁等情况。通过对数据库锁使用情况信息的分析,可以定位发生锁冲突的各个会话;在此基础上对发生锁冲突的会话各自的执行状态变化和结构化查询语句进行分析,可以定位发生锁冲突的应用逻辑源程序。如果造成锁冲突的是同种或者异种普通事务,必须对其本身特性加以分析,一般需要开发人员的经验和对应用逻辑本身特性的了解。51Testing软件测试网4VDH f0_ f

7)       进行必要的数据分布51Testing软件测试网 wYN"`c0x

            数据分布的主要目的是,通过数据库服务器的并行执行特性,使得单一事务的执行具有较短的响应时间和不同类的事务之间影响相对缩小。在缩短响应时间方面,这种方法主要适用于对规模较大的数据库表进行访问的情况。它不仅使得特定的查询可以并行执行,而且有可能改变结构化查询语句的执行计划,缩小查询进行的范围。此外对于异类事务之间,或者同类事务的不同实例锁冲突频繁的问题,可以通过数据分布加以解决。51Testing软件测试网u |6t;J f ZY

            数据库性能问题通常表现在响应时间过长,并发处理能力差和锁冲突严重等方面,其原因是多方面的。通过监视并记录应用系统处理单元性能相关性能相关数据,来定位性能问题的方法,可以帮助开发人员有效发现系统中存在的主要性能问题,必须指出,解决数据库性能问题是一个迭代和往复的过程,通常需要在各种条件下的矛盾之间寻求合理的平衡点。51Testing软件测试网"n$YvLY$J


TAG: LR文档

 

评分:0

我来说两句

Open Toolbar