Windows+IIS6+SQL Server性能测试有关计数器监视及相应的分析方法00.docx
- 文档编号:23813067
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:20
- 大小:27.59KB
Windows+IIS6+SQL Server性能测试有关计数器监视及相应的分析方法00.docx
《Windows+IIS6+SQL Server性能测试有关计数器监视及相应的分析方法00.docx》由会员分享,可在线阅读,更多相关《Windows+IIS6+SQL Server性能测试有关计数器监视及相应的分析方法00.docx(20页珍藏版)》请在冰豆网上搜索。
Windows+IIS6+SQLServer性能测试有关计数器监视及相应的分析方法00
有关windows资源计数器:
Processor
%ProcessorTime
所有进程线程使用处理器执行指令所花的时间百分比。
可判断CPU主要是消耗在应用程序还是CPU本身。
%UserTime
指处理器处于用户模式的时间百分比。
%PrivilegedTime
在特权模式下处理线程执行代码所花时间的百分比。
Process
ProcessorTime(主要的几个进程)
具体某个进程线程使用处理器执行指令所花的时间百分比。
查看主要的几个进程占用的CPU。
Privatebytes(主要的几个进程)
指某个进程不能与其他进程共享的、已分配的当前内存的字节数。
查看主要的几个进程占用的内存。
System
ProcessorQueueLength
处理器等待队列。
判断是否存在CPU瓶颈。
Memory
AvailableBytes
可用的物理内存量,此内存能立刻分配给一个进程或系统使用。
它等于分配给待机(缓存的)、空闲和零分页列表内存的总和。
Pages/sec
指为解决硬页错误从磁盘读取或写入磁盘的速度。
这个计数器是可以显示导致系统范围延缓类型错误的主要指示器。
PagesRead/sec
取读磁盘以解析硬页面错误的速度。
PoolNonpagedBytes
指在非分页池中的字节数。
非分页池是指系统内存(操作系统使用的物理内存)中可供对象(指那些在不处于使用时不可以写入磁盘上而且只要分派过就必须保留在物理内存中的对象)使用的一个区域。
PhysicalDisk
%DiskTime
指所选磁盘驱动器忙于为读或写入请求提供服务所用的时间的百分比。
Avg.DiskQueueLength
指读取和写入请求(为所选磁盘在实例间隔中列队的)的平均数。
DiskReads/sec
指在此盘上读取操作的速率。
DiskWrites/sec
指在此盘上写入操作的速率。
Avg.DiskSec/transfer
指以秒计算的一般磁盘传送所需时间。
NetworkInterface
BytesTotal/sec
是在每个网络适配器上发送和接收字节的速率,包括帧字符在内。
相应的分析方法:
一、内存
1、查看AvailableMBytes(memory)。
可用物理内存数。
一般要保留10%的可用内存。
最低不能<4M,此值过小可能是内存不足或内存泄漏。
2、查看pagefaults/sec(memory)、pagesinput/sec(memory)及pagereads/sec(memory)。
如果有个程序请求内存中的一页,但系统无法在所需的位置上找到它,就会构成一个分页错误。
如果此页位于内存中的其它位置,则此错误便称为软件分页错误。
如果必须从磁盘获取此页,则此错误便称为硬件分页错误。
大部分的处理器可以处理大量的软件错误而不会引起任何后果。
但是,硬件错误却会导致严重的延迟。
「pagefaults/sec」是指处理器处理错误页(包括硬件及软件分页错误)的整体速度。
「pagesinput/sec」是指为了解决硬件分页错误而从磁盘读取的总页数。
「pagesreads/sec」是指为了解决硬件分页错误而读取磁盘的次数。
「pagesinput/sec」会大于或等于「pagereads/sec」,并且能够清楚地让您了解硬件分页错误率。
如果这些数字都很低,则服务器应该可以快速地响应请求。
如果很高,则可能是因为您用了太多的内存在缓存处理上,而没有留足够的内存供系统的其它部份使用。
可以增加内存或降低缓存的ram大小来解决。
详细:
pageFaults/sec:
只表明数据不能在内存的指定工作集中立即使用;
pageInput/sec:
pageinput/sec>pagereads/sec;
pageReads/sec:
阈值为>5.越小越好,大数值表示磁盘读而不是缓存读;
Page/sec:
指为解析硬页错误从磁盘读取或写入磁盘的页数(是PagesInput/sec和PagesOutput/sec的总和)。
其值推荐00-20如果服务器没有足够的内存处理其工作负荷,此数值将一直很高。
如果大于80,表示有问题(太多的读写数据操作要访问磁盘,可考虑增加内存或优化读写数据的算法),如果值比较低,说明Web服务器响应请求比较快,否则可能是服务器系统内存短缺引起(也可能是缓存太大,导致系统内存太少)。
3、查看PoolNonpagedBytes(Memory)计数器的值。
PoolNonpagedBytes指在非分页池中的字节数,非分页池是指系统内存(操作系统使用的物理内存)中可供对象(指那些在不处于使用时不可以写入磁盘上而且只要分派过就必须保留在物理内存中的对象)使用的一个区域。
缓慢增长表示存在内存泄漏问题。
二、处理器
1、%processortime(processor)、%usertime(processor)、%privilegedtime(processor)
%ProcessorTime指处理器执行非闲置线程时间的百分比;通俗一点讲就是CPU使用率。
这是监视处理器活动的主要指示器。
它通过在每个范例间隔中衡量处理器用于执行闲置处理线程的时间,并且用100%减去该值得出。
(每台处理器有一个闲置线程,该线程在没有其它线程可以运行时消耗周期)。
可将其视为范例间隔用于做有用工作的百分比。
正常值<90,此值过大表示处理器的性能已经不能应付程序的要求,要换更快的处理器。
该数值持续超过90%,则表示此测试的负载对于目前的硬件过于沉重。
排除内存因素,如果该计数器的值比较大,而同时网卡和硬盘的值比较低,那么可以确定CPU瓶颈。
%UserTime指处理器处于用户模式的时间百分比。
如果该值较大,说明应用程序或数据库需要进行优化。
%PrivilegedTime是在特权模式下处理线程执行代码所花时间的百分比。
2、processorqueuelength(system)
ProcessorQueueLength:
是指处理列队中的线程数。
显示在由Web服务器所有处理器共享的队列中等待执行的线程数。
如果处理器列队中总是有2个以上的线程通常表示处理器堵塞。
参考值:
小于2。
处理器瓶颈会导致该值持续大于2。
三、网络
1、bytestotal/sec(networkinterface)。
若要判定您的网络连接是否正在存在瓶颈,请比较「networkinterface:
bytestotal/sec」计数器与您的网络适配卡总带宽。
若要在传送量中留些空间供尖峰时间用,则不应常使用超过50%的容量。
如果这个数字十分接近连接的容量,而处理器及内存的使用都很适中,则此连接也会是个问题。
四、磁盘
1、%processortime(processor),bytestotal/sec(networkinterfaceconnection)及%disktime(physicaldisk)。
PhysicalDisk\%DiskTime、PhysicalDisk\Avg.DiskQueueLength、Memory\Pages/sec(结果分析方法资料收集.doc)有不同说法。
%DiskTime%:
指所选磁盘驱动器忙于为读或写入请求提供服务所用的时间的百分比。
如果这三个计数器的值都很高,则硬盘不会引起站点的瓶颈。
但是,如果「%disktime」的值很高,但处理器及网络连接并没有饱和,则硬盘可能会造成瓶颈。
如果在您的服务器上没有启用「physicaldisk」计数器,请在Windows2000的命令行窗口中运行diskperf-yD。
正常值<10,此值过大表示耗费太多时间来访问磁盘,可考虑增加内存、更换更快的硬盘、优化读写数据的算法。
若数值持续超过80(此时处理器及网络连接并没有饱和),则可能是内存泄漏。
2、 Avg.DiskQueueLength、PageReads/sec
指读取和写入请求(为所选磁盘在实例间隔中列队的)的平均数。
正常值<0.5,此值过大表示磁盘IO太慢,要更换更快的硬盘。
DiskTransfers/sec指在此盘上读取/写入操作速率。
正常值<(DiskBytes/sec)/3,此值过大表示系统要求的IO速度已接近硬盘的最大速度,要更换更快的硬盘。
PageReads/sec和%DiskTime及Avg.DiskQueueLength。
如果页面读取操作速率很低,同时%DiskTime和Avg.DiskQueueLength的值很高,则可能有磁盘瓶径。
但是,如果队列长度增加的同时页面读取速率并未降低,则内存不足。
有关IIS应用服务器计数器:
ActiveServerPages
requests/sec
每秒执行的请求数。
requestsexecuting
当前正在执行的请求数。
requestwaittime
最近的请求在队列中等待的时间(毫秒)。
requestexecutingtime
执行最近的请求花费的时间(毫秒)。
requestsqueued
在队列中等待服务的请求数。
A
ApplicationRestarts
应用程序重新启动的次数.
RequestsQueued
排队的请求数。
WorkerProcessRestarts
辅助进程重新启动的次数。
AApplication
ErrorsTotal
错误总数。
Requests/Sec
每秒执行的请求数。
PipelineInstanceCount
指定的ASP.NET应用程序的活动请求管线实例的数目。
CacheTotalTurnoverRate
每秒对总缓存的添加数和移除数。
IISGLOABLE
FileCacheFlushes
自服务器启动后的文件缓存刷新数。
FileCacheHits
文件缓存中的成功查找总数。
FileCacheHits%
文件缓存命中数占全部缓存请求的比率。
Process
ProcessorTime(主要的几个进程)
具体某个进程线程使用处理器执行指令所花的时间百分比。
查看主要的几个进程占用的CPU。
Privatebytes(主要的几个进程)
指某个进程不能与其他进程共享的、已分配的当前内存的字节数。
查看主要的几个进程占用的内存。
System
ContextSwitches/sec
计数器测量Web服务器计算机中的所有CPU切换线程上下文的速率。
WebService
maximumconnections
是通过Web服务同时进行非匿名连接的最大用户数(从服务启动后)。
totalconnectionattempts
尝试通过Web服务进行连接的总数(从服务启动后)。
此计数器针对所有列出的实例。
cgirequests/sec
每秒Web服务接收的CGI请求数。
isapiextensionrequests/sec
执行最近的请求花费的时间(毫秒)。
Memory
AvailableBytes
可用的物理内存量,此内存能立刻分配给一个进程或系统使用。
它等于分配给待机(缓存的)、空闲和零分页列表内存的总和。
Pages/sec
指为解决硬页错误从磁盘读取或写入磁盘的速度。
这个计数器是可以显示导致系统范围延缓类型错误的主要指示器。
PagesRead/sec
取读磁盘以解析硬页面错误的速度。
PoolNonpagedBytes
指在非分页池中的字节数。
非分页池是指系统内存(操作系统使用的物理内存)中可供对象(指那些在不处于使用时不可以写入磁盘上而且只要分派过就必须保留在物理内存中的对象)使用的一个区域。
CacheBytes
显示「文件系统缓存」的大小。
pagefilebytes:
total
系统上分页文件的大小。
PhysicalDisk
%DiskTime
指所选磁盘驱动器忙于为读或写入请求提供服务所用的时间的百分比。
Avg.DiskQueueLength
指读取和写入请求(为所选磁盘在实例间隔中列队的)的平均数。
DiskReads/sec
指在此盘上读取操作的速率。
DiskWrites/sec
指在此盘上写入操作的速率。
Avg.DiskSec/transfer
指以秒计算的一般磁盘传送所需时间。
NetworkInterface
BytesTotal/sec
是在每个网络适配器上发送和接收字节的速率,包括帧字符在内。
与性能有关系的参数调整:
1、查看requests/sec、requestsexecuting、requestwaittime、requestexecutingtime、requestsqueued(activeserverpages)。
「activeserverpages︰requests/sec」不含静态文件或其它动态内容的请求,它会根据asp网页的复杂度及您web服务器的容量明显地变动。
如果这个计数器在服务器上的传输量处于尖峰期间出现低值的话,则您的应用程序可能会导致瓶颈。
「requestsexecuting」显示目前正在执行的请求数目;「requestwaittime」显示最近的请求在队列中等待的毫秒数;「requestexecutiontime」显示最近的请求花在执行上的毫秒数。
理想的状态是「requestsqueued」及「requestwaittime」应保持接近0,但它们会在不同的载量下起伏变动。
最大「requestsqueued」数目是由asprequestqueuemax的metabase设置来决定。
如果达到此限制,则客户端浏览器将显示[http500/服务器太过忙碌]。
此时,若请求的执行时间「requestexecutiontime」很短,而且在队列中的时间「requestwaittime」很短,则可以考虑增加asprequestqueuemax限制值(默认请求限制3000个)。
(如果「requestsexecuting」、「requestsqueued」都较小,而CPU的使用率较高,则可以减小aspprocessorthreadmax的值,看一下性能是否有所提高)
如果这些数字大幅偏离了预计的范围,则您的asp应用程序可能必须重写才能提高性能。
如果「requestsexecuting」的值是高的、「requestsqueued」是大的,而CPU的使用率是较低的,则可能必须增加aspprocessorthreadmax。
2、查看RequestsQueued(A)计数器的值。
队列中等待服务的请求的数目。
当该数开始随客户端负载线性增加时,Web服务器计算机已达到能同时处理的请求数的上限。
该数的默认最大值为5,000。
若达到最大值,可以在计算机的Machine.config文件中更改此设置。
3、查看pagefaults/sec(memory)、pagesinput/sec(memory)及pagereads/sec(memory)。
如果有个程序请求内存中的一页,但系统无法在所需的位置上找到它,就会构成一个分页错误。
如果此页位于内存中的其它位置,则此错误便称为软件分页错误。
如果必须从磁盘获取此页,则此错误便称为硬件分页错误。
大部分的处理器可以处理大量的软件错误而不会引起任何后果。
但是,硬件错误却会导致严重的延迟。
「pagefaults/sec」是指处理器处理错误页(包括硬件及软件分页错误)的整体速度。
「pagesinput/sec」是指为了解决硬件分页错误而从磁盘读取的总页数。
「pagesreads/sec」是指为了解决硬件分页错误而读取磁盘的次数。
「pagesinput/sec」会大于或等于「pagereads/sec」,并且能够清楚地让您了解硬件分页错误率。
如果这些数字都很低,则服务器应该可以快速地响应请求。
如果很高,则可能是因为您用了太多的内存在缓存处理上,而没有留足够的内存供系统的其它部份使用。
您可能必须在服务器上添加ram的容量,但是降低缓存的大小也是可行的。
4、查看cachebytes(memory)、filecachehits%(internetinformationservicesglobal)、filecacheflushes(internetinformationservicesglobal),及filecachehits(internetinformationservicesglobal)。
第一个计数器「memory:
cachebytes」显示「文件系统缓存」的大小,其默认为最多使用50%的可用物理内存。
由于当缓存的内存快要不足时,iis会自动调整它,所以请留意这个计数器行进的方向。
第二个计数器是缓存存取次数与缓存请求总数的比例,它会反应出此「iis文件缓存」的设置表现的好不好。
对于主要由静态文件组成的网站来说,80%以上的缓存存取次数应是个不错的数字。
请比较最后两个计数器的记录文件「iisglobal:
filecacheflushes」(自服务器启动后的文件缓存刷新数)及「iisglobal︰filecachehits」(文件缓存中查找成功的总数),以判定您是否正以适当的速度将对象从您的缓存清除。
如果清除发生太快,则对象可能会比其应有的频率更常从缓存中清除出来。
如果清除发生太慢,就会浪费内存。
请参阅中关于objectcachettl、memcachesize及maxcachedfilesize对象的说明(通过调整iismetabase内容)。
5、contextswitch/sec:
dllhost#n(thread),contextswitchs/sec:
inetinfo=>thread#(thread),contextswitches/sec(system)。
如果决定增加线程缓冲池的大小,便应该监视这里列出的三个计数器。
增加线程数目可能会增加内容切换的数目,因而造成性能不增反降。
每一个请求有10个或以上内容切换就已经是相当高的数字了;如果出现这些数字,请考虑降低线程缓冲池大小。
想通过测量连接及请求来得出线程及整体性能之间的平衡点是不容易的。
每次当您调整线程时,请接着监视整体性能,以检查性能是增进还是降低。
若要判定是否应该调整线程计数,请将进程中的每一个线程数目和处理器时间拿来和总处理器时间作比较。
如果线程持续忙碌,但并没有使用全部的处理器时间,则建立更多线程对性能会有帮助。
不过,如果所有线程都很忙,而且处理器已快接近最大容量,则最好将载量分配给更多服务器,而不要增加线程的数目。
请参阅本文中〈附录1︰性能设置〉的aspthreadgateenabled及aspprocessorthreadmaxmetabase属性。
6、maximumconnections(webservice)及totalconnectionattempts(webservice)。
有关最大连接数。
如果您正在计算机上执行的其他服务也使用网络连接,则应监视「webservice:
maximumconnections」及「webservice:
totalconnectionattempts」计数器,以检查您的web服务器是否能够尽可能地使用它需要的连接数目。
请记得将这些数字与内存及处理器使用量作比较,如此才能确定连接就是问题,而不是其它组件有问题。
……
其它关于IIS的调优设置—
1、选用“HTTP压缩”,压缩文件、压缩静态文件。
2、connectiontimeout-这个属性会指定服务器在中断一条非使用中的连接之前,将等待的秒数。
默认值是900(15分钟)。
因为开启的连接会降低性能,所以请考虑降低此值,并监视您的服务器在改变之后会有什么效果。
与程序设计、编码有关系的性能调整:
1、cgirequests/sec(webservice)及isapiextensionrequests/sec(webservcie)。
会报告您的服务器是以哪个速度处理cgi及isapi应用程序请求。
如果这些值在负载增加时降低,则可能必须请求应用程序开发人员重新检查他们的程序代码。
2、ApplicationRestarts、WorkerProcessRestarts(A)。
ApplicationRestarts—应用程序重新启动的次数.Web服务器的生存期中应用程序重新启动的次数。
应用程序重新启动的次数随每次发生Application_OnEnd事件增加。
由于Web.config文件的更改、存储在应用程序\bin目录中的程序集的更改或者Web窗体页的过多更改,均可能导致发生应用程序重新启动。
此计数器的意外增长可能意味着无法预料的问题正导致您的Web应用程序关闭。
在这种情况下,应尽快进行调查。
WorkerProcessRestarts—辅助进程重新启动的次数。
服务器计算机上辅助进程重新启动的次数。
如果辅助进程意外地失败或者被有意地回收,则能够被重新启动。
如果该计数器的值意外增加,应尽快进行调查。
注意:
每次重新启动Internet信息服务(IIS)主机时都会重置该值。
3、看ErrorsTotal(AApplication)计数器的值。
错误总数。
执行HTTP请求过程中发生的错误总数。
包括所有分析器错误、编译错误或运行时错误。
此计数器为ErrorsDuringCompilation、ErrorsDuringPreprocessing和ErrorsDuringExecution计数器的总和。
正常运行的Web服务器不应发生错误。
如果ASP.NETWeb应用程序中发生错误,它们可能会歪曲任何吞吐量结果,因为错误恢复的代码路径与原来的完全不一样。
在性能测试前应调查并修复应用程序中的所有错误。
4、看ContextSwitches/sec(System)、%processortime(processor)计数器的值。
ContextSwitches/sec计数器测量Web服务器计算机中的所有CPU切换线程上下文的速率。
此计数器的高数值通常说明存在高的锁争用,或是线程在用户模式与内核模式之间有大量切换。
可能需要使用采样分析器和其他工具进一步研究。
如果系统的吞吐量降低并且CPU的使用率很高,并且此现象发生时切换水平在150
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Windows+IIS6+SQL Server性能测试有关计数器监视及相应的分析方法00 Windows IIS6 SQL Server 性能 测试 有关 计数器 监视 相应 分析 方法 00
![提示](https://static.bdocx.com/images/bang_tan.gif)