性能瓶颈

2010-02-28  迟超 

1.    windows操作系统,C/S结构的sql server数据库及WEB平台.net产品测试时的一些计数器

Memory:

 内存使用情况可能是系统性能中最重要的因素。如果系统"页交换"频繁,说明内存不足。"页交换"是使用称为"页面"的单位,将固定大小的代码和数据块从 RAM 移动到磁盘的过程,其目的是为了释放内存空间。尽管某些页交换使 Windows 2000 能够使用比实际更多的内存,也是可以接受的,但频繁的页交换将降低系统性能。减少页交换将显著提高系统响应速度。要监视内存不足的状况,请从以下的对象计数器开始:

Available Mbytes:

可用物理内存数. 如果Available Mbytes的值很小(4 MB 或更小),则说明计算机上总的内存可能不足,或某程序没有释放内存。

page/sec:

 表明由于硬件页面错误而从磁盘取出的页面数,或由于页面错误而写入磁盘以释放工作集空间的页面数。一般如果pages/sec持续高于几百,那么您应该进一步研究页交换活动。有可能需要增加内存,以减少换页的需求(你可以把这个数字乘以4k就得到由此引起的硬盘数据流量)。Pages/sec 的值很大不一定表明内存有问题,而可能是运行使用内存映射文件的程序所致。

page read/sec:

页的硬故障,page/sec的子集,为了解析对内存的引用,必须读取页文件的次数。阈值为>5. 越低越好。大数值表示磁盘读而不是缓存读。

由于过多的页交换要使用大量的硬盘空间,因此有可能将导致将页交换内存不足与导致页交换的磁盘瓶径混淆。因此,在研究内存不足不太明显的页交换的原因时,您必须跟踪如下的磁盘使用情况计数器和内存计数器:

Physical Disk\ % Disk Time Physical Disk\ Avg.Disk Queue Length 例如,包括 Page Reads/sec % Disk Time Avg.Disk Queue Length。如果页面读取操作速率很低,同时 % Disk Time Avg.Disk Queue Length的值很高,则可能有磁盘瓶径。但是,如果队列长度增加的同时页面读取速率并未降低,则内存不足。

要确定过多的页交换对磁盘活动的影响,请将 Physical Disk\ Avg.Disk sec/Transfer Memory\ Pages/sec 计数器的值增大数倍。如果这些计数器的计数结果超过了 0.1,那么页交换将花费百分之十以上的磁盘访问时间。如果长时间发生这种情况,那么您可能需要更多的内存。

Page Faults/sec:

每秒软性页面失效的数目(包括有些可以直接在内存中满足而有些需要从硬盘读取)较page/sec只表明数据不能在内存的指定工作集中立即使用。

Cache Bytes

文件系统缓存(File System Cache),默认情况下为50%的可用物理内存。如IIS5.0 运行内存不够时,它会自动整理缓存。

需要关注该计数器的趋势变化

如果您怀疑有内存泄露,请监视 Memory\ Available Bytes Memory\ Committed Bytes,以观察内存行为,并监视您认为可能在泄露内存的进程的 Process\Private BytesProcess\Working Set Process\Handle Count。如果您怀疑是内核模式进程导致了泄露,则还应该监视 Memory\Pool Nonpaged BytesMemory\ Pool Nonpaged Allocs Process(process_name)\ Pool Nonpaged Bytes

 

Pages per second :

每秒钟检索的页数。该数字应少于每秒一页。

Memory

 

Available MBytes 是计算机上运行进程可用的物理内存数量,以兆字节为单位(字节/1,048,576)。通过计算清零、空闲和待命内存列表的内存空间总数而得到。空闲内存可以马上使用;清零内存是由零值填满的内存页,用来防止后续进程获得旧进程使用的数据;待命内存是从进程工作集(其物理内存)中删除然后进入磁盘的内存,但是该内存仍然可以收回。该计数器仅显示最后一次观察到的值;不是平均值。

正常值>实际内存的10%,此值过小表示物理内存不足,要增加内存。

 

Pages/sec 是指为解析硬页错误从磁盘读取或写入磁盘的页数。(当处理程序请求不在本身工作集或物理内存其它地方中的代码或数据,而必须要从磁盘上检索时就会出现硬页错误)。这个计数器设计成可以显示导致系统范围延缓类型错误的主要指示器。它是Memory: Pages Input/sec Memory: Pages Output/sec 的总和。是用页数计算的,以便在不用做转换的情况下就可以同其它页计数如: Memory: Page Faults/sec 做比较,这个值包括为满足错误而在文件系统缓存(通常由应用程序请求)的非缓存映射内存文件中检索的页。这个计数器显示用上两个实例中观察到的值之间的差除于实例间隔的持续时间所得的值。

正常值<100,此值过大表示太多的读写数据操作要访问磁盘,可考虑增加内存或优化读写数据的算法。

Process

%Processor Time:

被处理器消耗的处理器时间数量。如果服务器专用于sql server,可接受的最大上限是80-85%

Page Faults/sec:将进程产生的页故障与系统产生的相比较,以判断这个进程对系统页故障产生的影响。

Work set:

 处理线程最近使用的内存页,反映了每一个进程使用的内存页的数量。如果服务器有足够的空闲内存,页就会被留在工作集中,当自由内存少于一个特定的阈值时,页就会被清除出工作集。

Private Bytes:

此进程所分配的无法与其它进程共享的当前字节数量。如果系统性能随着时间而降低,则此计数器可以是内存泄漏的最佳指示器。

Processor:监视"处理器""系统"对象计数器可以提供关于处理器使用的有价值的信息,帮助您决定是否存在瓶颈。

%Processor Time:

如果该值持续超过95%,表明瓶颈是CPU。可以考虑增加一个处理器或换一个更快的处理器。

%User Time:

表示耗费CPU的数据库操作,如排序,执行aggregate functions等。如果该值很高,可考虑增加索引,尽量使用简单的表联接,水平分割大表格等方法来降低该值。

%Privileged Time

CPU内核时间)是在特权模式下处理线程执行代码所花时间的百分比。如果该参数值和"Physical Disk"参数值一直很高,表明I/O有问题。可考虑更换更快的硬盘系统。另外设置Tempdb in RAM,减低"max async IO""max lazy writer IO"等措施都会降低该值。

此外,跟踪计算机的服务器工作队列当前长度的 Server Work Queues\ Queue Length 计数器会显示出处理器瓶颈。队列长度持续大于 4 则表示可能出现处理器拥塞。此计数器是特定时间的值,而不是一段时间的平均值。

% DPC Time:

越低越好。在多处理器系统中,如果这个值大于50%并且Processor:% Processor Time非常高,加入一个网卡可能会提高性能,提供的网络已经不饱和。

Process

 

% Processor Time 指这个线程使用处理器执行指令的所用时间的百分比。类似于Processor% Processor Time

 

% Privileged Time 指这台处理器的线程用于执行在特权模式中的代码所经过时间的百分比。类似于Processor% Privileged Time

 

% User Time 指这台处理的线程用于执行使用用户模式的代码的时间的百分比。类似于Processor% User Time

 

Private Bytes 指这个处理不能与其它处理共享的、已分配的当前字节数。

如果此数值随时间不断增大,有可能是内存泄漏

 

Virtual Bytes 指处理使用的虚拟地址空间的以字节数显示的当前大小。使用虚拟地址空间不一定是指对磁盘或主内存页的相应的使用。虚拟空间是有限,如果使用过多,可能会限制处理加载数据库的能力。

 

IO Data Bytes/sec 处理从I/O操作读取/写入字节的速度。这个计数器为所有由本处理产生的包括文件、网络和设备I/O的活动计数。

Processor

 

% Processor Time 指处理器执行非闲置线程时间的百分比。这个计数器设计成用来作为处理器活动的主要指示器。它通过在每个范例间隔中衡量处理器用于执行闲置处理线程的时间,并且用100%减去该值得出。(每台处理器有一个闲置线程,该线程在没有其它线程可以运行时消耗周期)。可将其视为范例间隔用于做有用工作的百分比。这个计数器显示在范例间隔时所看到的忙时平均值。这个值是用100%减去该服务不活动的时间计算出来的。

正常值<90,此值过大表示处理器的性能已经不能应付程序的要求,要换更快的处理器

 

% Privileged Time 指非闲置处理器时间用于特权模式的百分比。(特权模式是为操作系统组件和操纵硬件驱动程序而设计的一种处理模式。它允许直接访问硬件和所有内存。另一种模式为用户模式,它是一种为应用程序、环境分系统和整数分系统设计的一种有限处理模式。操作系统将应用程序线程转换成特权模式以访问操作系统服务)。特权时间的%包括为间断和DPC提供服务的时间。特权时间比率高可能是由于失败设备产生的大数量的间隔而引起的。这个计数器将平均忙时作为样本时间的一部分显示。

此值过大表示硬件处理消耗的时间太多,应着重从硬件操作(例如文件访问、打印等)的多少,以及硬件驱动程序来考虑优化性能

 

% User Time 指用于用户模式的非闲置处理器时间的百分比(用户模式是为应用程序、环境分系统和整数分系统设计的有限处理模式。另一个模式为特权模式,它是为操作系统组件设计的并且允许直接访问硬件和所有内存。操作系统将应用程序线程转换成特权模式以访问操作系统服务)。这个计数值将平均忙时作为实例时间的一部分显示。

此值过大表示应用程序本身用于计算消耗的时间太多,应着重从优化算法来考虑优化性能

 

% Processor Time = % Privileged Time + % User Time

Thread

ContextSwitches/sec: (实例化inetinfo dllhost 进程) 如果你决定要增加线程字节池的大小,你应该监视这三个计数器(包括上面的一个)。增加线程数可能会增加上下文切换次数,这样性能不会上升反而会下降。如果十个实例的上下文切换值非常高,就应该减小线程字节池的大小。

Physical Disk:

%Disk Time %:

指所选磁盘驱动器忙于为读或写入请求提供服务所用的时间的百分比。如果三个计数器都比较大,那么硬盘不是瓶颈。如果只有%Disk Time比较大,另外两个都比较适中,硬盘可能会是瓶颈。在记录该计数器之前,请在Windows 2000 的命令行窗口中运行diskperf -yD。若数值持续超过80%,则可能是内存泄漏。

Avg.Disk Queue Length:

指读取和写入请求(为所选磁盘在实例间隔中列队的)的平均数。该值应不超过磁盘数的1.5~2 倍。要提高性能,可增加磁盘。注意:一个Raid Disk实际有多个磁盘。

Average Disk Read/Write Queue Length:

指读取(写入)请求(列队)的平均数。

Disk Reads(Writes)/s:

物理磁盘上每秒钟磁盘读、写的次数。两者相加,应小于磁盘设备最大容量。

Average Disksec/Read:

 指以秒计算的在此盘上读取数据的所需平均时间。

Average Disk sec/Transfer:

指以秒计算的在此盘上写入数据的所需平均时间。

Network Interface

Bytes Total/sec :

为发送和接收字节的速率,包括帧字符在内。判断网络连接速度是否是瓶颈,可以用该计数器的值和目前网络的带宽比较

Physical Disk

 

% Disk Time 指所选磁盘驱动器忙于为读或写入请求提供服务所用的时间的百分比。

正常值<10,此值过大表示耗费太多时间来访问磁盘,可考虑增加内存、更换更快的硬盘、优化读写数据的算法

 

Avg. Disk Queue Length 指读取和写入请求(为所选磁盘在实例间隔中列队的)的平均数。

正常值<0.5,此值过大表示磁盘IO太慢,要更换更快的硬盘

 

Disk Bytes/sec 指在进行写入或读取操作时从磁盘上传送或传出的字节速率。

此值取决于硬盘的速度

 

Disk Transfers/sec 指在此盘上读取/写入操作速率。

正常值<(Disk Bytes/sec)/3,此值过大表示系统要求的IO速度已接近硬盘的最大速度,要更换更快的硬盘

SQLServer性能计数器:

Access Methods(访问方法) 用于监视访问数据库中的逻辑页的方法。

. Full Scans/sec(全表扫描/)

每秒不受限的完全扫描数。可以是基本表扫描或全索引扫描。如果这个计数器显示的值比12高,应该分析你的查询以确定是否确实需要全表扫描,以及S Q L查询是否可以被优化。

. Page splits/sec(页分割/)

由于数据更新操作引起的每秒页分割的数量。

Buffer Manager(缓冲器管理器)

监视 Microsoft? SQL Server? 如何使用: 内存存储数据页、内部数据结构和过程高速缓存;计数器在 SQL Server 从磁盘读取数据库页和将数据库页写入磁盘时监视物理 I/O 监视 SQL Server 所使用的内存和计数器有助于确定: 是否由于缺少可用物理内存存储高速缓存中经常访问的数据而导致瓶颈存在。如果是这样,SQL Server 必须从磁盘检索数据。 是否可通过添加更多内存或使更多内存可用于数据高速缓存或 SQL Server 内部结构来提高查询性能。

SQL Server 需要从磁盘读取数据的频率。与其它操作相比,例如内存访问,物理 I/O 会耗费大量时间。尽可能减少物理 I/O 可以提高查询性能。

.Page Reads/sec

每秒发出的物理数据库页读取数。这一统计信息显示的是在所有数据库间的物理页读取总数。由于物理 I/O 的开销大,可以通过使用更大的数据高速缓存、智能索引、更高效的查询或者改变数据库设计等方法,使开销减到最小。

.Page Writes/sec (.写的页/)

 每秒执行的物理数据库写的页数。

.Buffer Cache Hit Ratio "缓冲池"Buffer Cache/Buffer Pool)中没有被读过的页占整个缓冲池中所有页的比率。可在高速缓存中找到而不需要从磁盘中读取的页的百分比。这一比率是高速缓存命中总数除以自 SQL Server 实例启动后对高速缓存的查找总数。经过很长时间后,这一比率的变化很小。由于从高速缓存中读数据比从磁盘中读数据的开销要小得多,一般希望这一数值高一些。通常,可以通过增加 SQL Server 可用的内存数量来提高高速缓存命中率。计数器值依应用程序而定,但比率最好为90% 或更高。增加内存直到这一数值持续高于90%,表示90% 以上的数据请求可以从数据缓冲区中获得所需数据。

. Lazy Writes/sec(惰性写/)

惰性写进程每秒写的缓冲区的数量。值最好为0

Cache Manager(高速缓存管理器)

 对象提供计数器,用于监视 Microsoft? SQL Server? 如何使用内存存储对象,如存储过程、特殊和准备好的 Transact-SQL 语句以及触发器。

. Cache Hit Ratio

(高速缓存命中率,所有Cache"的命中率。在SQL Server中,Cache可以包括Log CacheBuffer Cache以及Procedure Cache,是一个总体的比率。) 高速缓存命中次数和查找次数的比率。对于查看SQL Server高速缓存对于你的系统如何有效,这是一个非常好的计数器。如果这个值很低,持续低于80%,就需要增加更多的内存。

Latches()

用于监视称为闩锁的内部 SQL Server 资源锁。监视闩锁以明确用户活动和资源使用情况,有助于查明性能瓶颈。

. Average Latch Wait Ti m e ( m s )

 (平均闩等待时间(毫秒)) 一个SQL Server线程必须等待一个闩的平均时间,以毫秒为单位。如果这个值很高,你可能正经历严重的竞争问题。

. Latch Waits/sec (闩等待/)

 在闩上每秒的等待数量。如果这个值很高,表明你正经历对资源的大量竞争。

Locks()

 提供有关个别资源类型上的 SQL Server 锁的信息。锁加在 SQL Server 资源上(如在一个事务中进行的行读取或修改),以防止多个事务并发使用资源。例如,如果一个排它 (X) 锁被一个事务加在某一表的某一行上,在这个锁被释放前,其它事务都不可以修改这一行。尽可能少使用锁可提高并发性,从而改善性能。可以同时监视 Locks 对象的多个实例,每个实例代表一个资源类型上的一个锁。

. Number of Deadlocks/sec(死锁的数量/)

 导致死锁的锁请求的数量

. Average Wait Time(ms)

 (平均等待时间(毫秒)) 线程等待某种类型的锁的平均等待时间

. Lock Requests/sec(锁请求/)

 每秒钟某种类型的锁请求的数量。

Memory manager:

用于监视总体的服务器内存使用情况,以估计用户活动和资源使用,有助于查明性能瓶颈。监视 SQL Server 实例所使用的内存有助于确定:

是否由于缺少可用物理内存存储高速缓存中经常访问的数据而导致瓶颈存在。如果是这样,SQL Server 必须从磁盘检索数据。

是否可以通过添加更多内存或使更多内存可用于数据高速缓存或 SQL Server 内部结构来提高查询性能。

Lock blocks:

服务器上锁定块的数量,锁是在页、行或者表这样的资源上。不希望看到一个增长的值。

Total server memory

sql server服务器当前正在使用的动态内存总量.

 

 

监视IIS需要的一些计数器

Internet Information Services Global:

File Cache Hits %File CacheFlushesFile Cache Hits

File Cache Hits %

是全部缓存请求中缓存命中次数所占的比例,反映了IIS 的文件缓存设置的工作情况。对于一个大部分是静态网页组成的网站,该值应该保持在80%左右。而File Cache Hits是文件缓存命中的具体值,File CacheFlushes 是自服务器启动之后文件缓存刷新次数,如果刷新太慢,会浪费内存;如果刷新太快,缓存中的对象会太频繁的丢弃生成,起不到缓存的作用。通过比较File Cache Hits File Cache Flushes 可得出缓存命中率对缓存清空率的比率。通过观察它两个的值,可以得到一个适当的刷新值(参考IIS 的设置ObjectTTL MemCacheSize MaxCacheFileSize

Web Service:

Bytes Total/sec:

显示Web服务器发送和接受的总字节数。低数值表明该IIS正在以较低的速度进行数据传输。

Connection Refused

数值越低越好。高数值表明网络适配器或处理器存在瓶颈。

Not Found Errors

显示由于被请求文件无法找到而无法由服务器满足的请求数(HTTP状态代码404

ASP.NET系统性能计数器

 

Application Restarts WEB应用程序重新启动的次数和频率。

Requests Queued

在队列中排队等待服务的请求个数。如果排队的请求数目随着客户请求的增加而开始直线上涨,就表示应用程序到达了Web服务处理并发请求的能力极限。

Request Wait Time

在队列中的最近大部分请求等待处理的毫秒数。在理想情况下请求等待处理的平均时间应该非常小。

Requests Rejected

由于服务器资源不足无法处理请求而未能执行的请求的总数。该计数器表示返回503 HTTP状态代码的请求数目。在理想情况下,被拒绝执行的请求数应为0

.NET CLR 异常计数器

# of Exceps Thrown(抛出的异常数)

该计数器显示在应用程序启动后引发的异常的总数。它包括.Net异常和转换成.Net 异常的非托管异常。如果发现在异常计数有一个突然的跳跃,你应该检查跳跃发生时应用程序所执行的代码,以便确定这些过多数量的异常是在何处引发的。

项目J2EE架构的,WEB Server:Tomcat4.1.3 ;数据库SQL Server2000。(供参考)

 

CPU相关:

? Processor Queue Length:是指处理列队中的线程数。

计数就绪的线程,而不计数运行中的线程。如果处理器列队中总是有2个以上的线程通常表示处理器堵塞。

参考值:小于2

显示在由 Web服务器所有处理器共享的队列中等待执行的线程数。处理器瓶颈会导致该值持续大于 2

? %Processor TimeCPU 使用率。

查看处理器饱和状况。显示所有 CPU 的线程处理时间。如果一个或多个处理器的该数值持续超过 90%,则表示此测试的负载对于目前的硬件过于沉重。

参考值:警戒值小于75%

排除内存因素,如果该计数器的值比较大,而同时网卡和硬盘的值比较低,那么可以确定CPU 瓶颈。

? Thread Context Switches/sec

指计算机上的所有处理器全都从一个线程转换到另一个线程的综合速率。当正在运行的线程自动放弃处理器时出现上下文转换,由一个有更高优先就绪的线程先或在用户模式和特权(内核)模式之间转换以使用执行或分系统服务。它是在计算机上的所有处理器上运行的所有线程的Thread Context Switches/sec 的总数并且用转换数量衡量。在系统和线程对象上有上下文转换计数器。

参考值:如果切换次数到5000*CPU个数和10000*CPU个数中,说明它忙于切换线程而不是处理脚本。

 

Memory相关:

? Available Mbytes:物理内存的可用数(单位 Mbytes

参考值:至少要留有10% 的物理内存值

? Page/sec:指为解析硬页错误从磁盘读取或写入磁盘的页数。其值推荐00-20(如果服 务器没有足够的内存处理其工作负荷,此数值将一直很高。如果大于80,表示有问题),如果值比较低,说明Web 服务器响应请求比较快,否则可能是服务器系统内存短缺引起( 也可能是缓存太大,导致系统内存太少)。

Page Faults/sec:是处理器每秒钟处理的错误页(包括软错误和硬错误)。

Pages Input/sec:是为了解决硬错误页,从硬盘上读取的页数。其值可以衡量出硬错误页发生的速率,通常它的值会大于或者等于Page Reads/sec

Page Reads/sec:为了解决硬错误,从硬盘读取的次数。如果 Page Reads/Sec 比率持续保持为 5,表示可能内存不足。

Transition Faults/sec:软错误,许多处理器可以在有大量软错误的情况下继续操作。

说明: 当处理器向内存指定的位置请求一页(可能是数据或代码)出现错误时,这就构成一个Page Fault。如果该页在内存的其他位置,该错误被称为软错误(用Transition Fault/sec 计数器衡量);如果该页必须从硬盘上重新读取时,被称为硬错误。许多处理器可以在有大量软错误的情况下继续操作。但是,硬错误可以导致明显的拖延。

 

网络吞吐量以及带宽:

? Bytes Total/sec:发送和接收字节的速率,包括帧字符在内。判断网络连接速度是否 是瓶颈,可以用该计数器的值和目前网络的带宽比较

参考值:该计数器的值和目前网络的带宽相除,结果应该小于50%

 

磁盘相关:

? Physical Disk %Disk Time

指所选磁盘驱动器忙于为读或写入请求提供服务所用的时间的百分比。如果三个计数器都比较大,那么硬盘不是瓶颈。如果只有%Disk Time比较大,另外两个都比较适中,硬盘可能会是瓶颈。

? Network Interface Bytes Total/sec

为发送和接收字节的速率,包括帧字符在内。判断网络连接速度是否是瓶颈,可以用该计数器的值和目前网络的带宽比较

? Processor %Processor TimeCPU 使用率

该计数器对应于处理器执行Windows? 2000 内核命令( 如处理SQL Server I/O 请求)所用时间的百分比。如果 Physical Disk 计数器的值很高时该计数器的值也一直很高,则考虑使用速度更快或效率更高的磁盘子系统。

 

数据库(SQL Server)

? Cache Manager Cache Hit Ratio(all instances)

显示在高速缓存中找到数据的命中率。如果数值持续小于 85%,则表

示内存有问题,需增加内存直到这个数值持续高于90%。

 

? Access Methods Full Scans/sec :

全表扫描/秒,每秒不受限的完全扫描数。可以是基本表扫描或全索引扫描。如果该计数器显示的值大于12,应该分析你的查询语句以确定是否确实需要全表扫描,以及SQL查询语句是否可以被优化

? Locks Number of Deadlocks/sec

死锁的数量/秒,导致死锁的锁请求的数量

? General Statistics User Connections

显示当前 SQL 用户数。与 Active Server PagesRequests/Sec 计数器

进行比较,可帮助了解脚本对 SQL Server 的影响程度。如果差别过大,则表示测试脚本不能有效地对 SQL Server 进行压力测试。

? General Statistics Logins/sec

这是每秒登录到 SQL Server 的计数。

? SQL Statistics Batch Requests/sec

每秒收到的 Transact-SQL 命令批数。这一统计信息受所有约束(如I/O、用户数、高速缓存大小、请求每秒收到的 Transact-SQL 命令批数。这一统计信息受所有约束(如I/O、用户数、高速缓存大小、请求的复杂程度等)影响。批请求数值高意味着吞吐量很好。

oracle的性能

CPU used by this session: This is the amount of CPU time (in 10s of milliseconds) used by a session between the time a user call started and ended. Some user calls can be completed within 10 milliseconds and, as a result, the start and end user-call time can be the same. In this case, 0 milliseconds are added to the statistic. A similar problem can exist in the operating system reporting, especially on systems that suffer from many context switches.

 

 

OS User level CPU time:

OS System call CPU time :

 

Bytes received via SQL*Net from client: The total number of bytes received from the client over Net8

 

Logons current: The total number of current logons

Opens of replaced files: The total number of files that needed to be reopened because they were no longer in the process file cache

 

User calls: Oracle allocates resources (Call State Objects) to keep track of relevant user call data structures every time you log in, parse, or execute. When determining activity, the ratio of user calls to RPI calls gives you an indication of how much internal work gets generated as a result of the type of requests the user is sending to Oracle.Oracle

SQL*Net roundtrips to/from client: The total number of Net8 messages sent to, and received from, the client

Bytes sent via SQL*Net to client: The total number of bytes sent to the client from the foreground process(es)

Opened cursors current: The total number of current open cursors

 

DB block changes: Closely related to consistent changes, this statistic counts the total number of changes that were made to all blocks in the SGA that were part of an update or delete operation. These are changes that are generating redo log entries and hence will be permanent changes to the database if the transaction is committed. This statistic is a rough indication of total database work and indicates (possibly on a per-transaction level) the rate atwhich buffers are being dirtied.

 

Total file opens: The total number of file opens being performed by the instance. Each process needs a number of files (control file, log file, database file) in order to work against the database.

oracle内存测定方面的指标

测定库缓存命中率,推荐>95%

Select sum(pins)/(sum(pins)+sum(reloads)) *100 from v$librarycache

测定共享sqlpl/sql的固定对象命中率,推荐>95%

Select sum(pinhits)/(sum(pins)) *100 from v$librarycache

测定共享sqlpl/sql的重载命中率,希望值为0,若>1%,成功率太低

Select sum(reloads)/sum(pins) *100 from v$librarycache

库快存:select(sum(pins-reloads))/sum(pins) from v$librarycache; 应接近1共享池中的自由内存可以查看:

select * from v$sgastat where name='free memory'

如果共享池满了并不一定存在问题,只要上面所说的比率接近于1,就不需要增加共享池大小;

如果自由内存接近于0而且库快存或数据字典快存的命中率小于0.95,那么需要增加共享池的大小。

 

测定数据字典的命中率,推荐高于95%

Select (1-(sum(getmisses)/(sum(gets)+sum(getmisses))))*100

From V$rowcache

数据字典行缓存丢失率,值应小于10~15%

select sum(getmisses)/sum(gets)*100 from v$rowcache

2.数据缓冲区

测定数据的缓存命中率推荐持续高于95%

select 1-(sum(decode(name,'physical reads',value,0))/(sum(decode(name,'db_block gets',value,0))+(sum(decode(name,'consistent gets',value,0)))))100

from v$sysstat

优化DBBLOCKBUFFERS

select 1-a.value/(b.value+c.value)

from V$SYSSTAT a,V$SYSSTAT b,V$SYSSTAT c

where a.name='physical reads' and b.name='db block gets' and c.name='consistent gets'

如果命中率低于0.60.7,则应增大DBBLOCKBUFFERS

3.日志缓冲区

日志缓冲区的申请失败率:

申请失败率=requests/entries,申请失败率应该接近于0,否则说明日志缓冲区开设太小,需要增加ORACLE数据库的日志缓冲区。

select A.VALUE / B.VALUE FROM V$SYSSTAT A,V$SYSSTAT B WHERE A.NAME='redo log space requests' AND B.NAME='redo entries'

参数LOG_BUFFER指定了REDO LOG的缓冲区的保留大小。若日志缓冲区已满,进程就会等待,造成性能下降。

Select value from v$sysstat where name='redo log space requests'

以上结果尽可能为零,如果持续上升就要调整LOG_BUFFER

测定内存排序命中率,推荐高于95%

select round((100*b.value)/decode((a.value+b.value),0,1,(a.value+b.value)),2)

from v$sysstat a,v$sysstat b

where a.name='sorts (disk)' and b.name='sorts (memory)'

2Unix/Linux操作系统

Unix/Linux操作系统在企业级应用中非常广泛,我们通常会碰到,那么我们如何监视Unix/Linux操作系统的资源呢?

1.首先要在Unix/linux下安装一个守护进程,rstatd ,这个安装包,可以到网上下载,我也可以提供

2.安装方法; 解压到一个目录,然后./configure, make , make install ,安装完成

3.执行./rpc.rstatd start rstatd 启动这个守护进程

4.LR里面add measurement 填写linux机器的IP,出现所有unix/linux的计数器,包括cpu的,mem的,disknetwork的,看看这个图片

5.每个计数器的含义:

average load :在过去的1分钟,的平均负载

cpu utilization: cpu的使用率

disk traffic: disk传输率

paging rate 每秒从磁盘读到物理内存,或者从武力内存写到页面文件的内存页数

 

Swap-in rate: 每秒交换到内存的进程数

Swap-out rate: 每秒从内存交换出来的进程数

391°/3868 人阅读/5 条评论 发表评论

袁永云  2010-03-01

这个有点深奥


欧洁  2010-03-01

相当深奥


菜菜  2010-03-02

看样子是个性能测试老手


程守标  2010-03-03

太深奥了


胡军红  2010-03-16

高手


登录 后发表评论