• 测试技术
  • 博客
  • 视频
  • 开源
  • 论坛
  • 沙龙
  • 下载
  • 杂志
  • 招聘

字号: | 推荐给好友 上一篇 | 下一篇

蛙蛙推荐:创建自己的性能计数器及压力测试入门

发布: 2008-9-25 10:13 | 作者: 不详 | 来源: 测试时代 采编 | 查看: 96次 | 进入软件测试时代论坛讨论

软件测试时代 做服务端的程序,经常要监控服务的性能,比如某个方法每秒执行了多少次了呀?某个方法同一时间有多少个并发方法啦?某个对象在内存里有多少个实例啦?执行某个操作的平均操作时间啦等等。.net提供了创建自定义性能计数器的API来让我们方便的实现这些需求,我改造了一下《.net企业应用高级编程》里的WEO框架的计数器部分,让大家方便的创建自己的计数器,原来是.net 1.0的,用的反射,我移植到了.net 2.0,改用的泛型,性能会好一些。先来看看大概思路。
单击显示全图,Ctrl+滚轮缩放图片

要想创建自定义的计数器,先得实现IPerfCounterProvider接口,CreateCounters方法声明要创建的计数器,CountersCreated方法把创建的计数器赋值给本类的成员,PerformanceObjectName返回要创建自定义计数器的分类名。

PerfCounterFactory主要用来创建一个IPerfCounterProvider的实例,它有个GetCounters的泛型方法用来创建一个IPerfCounterProvider的实例,CreateCounters方法用来实际的创建性能计数器,另两个AddPerfCounter方法和Find方法是让IPerfCounterProvider的两个方法用的,下面的例子里会有。

PerfCounter是一个实体类,保存每个计数器的名称,帮助,类型。

好,我们要监控一个web服务的性能,这个Web服务提供相乘和相加的服务,我们要知道这个Web服务的总请求数,每秒调用次数,并发调用数,每个web方法每秒的调用次数,创建计数器如下,关于计数器的类型,及性能计数器的相关内容,请查看MSDN,计数器类型有总量计数器,平均计数器,速率计数器,并发计数器等,分别适用于不同的需求。
复制 保存
publicclassMathServicePerfCounter : IPerfCounterProvider
{staticMathServicePerfCounter _instance =
        PerfCounterFactory.GetCounters<MathServicePerfCounter>();publicstaticMathServicePerfCounter Instance
    {get{return_instance; }
    }publicPerformanceCounter TotalOfRequest;publicPerformanceCounter RateOfRequest;publicPerformanceCounter RateOfAddition;publicPerformanceCounter RateOfMultiplication;publicPerformanceCounter CountOfCurrentRequest;conststringTotalOfRequestStr ="Total # req";conststringRateOfRequestStr ="req/sec";conststringRateOfAdditionStr ="Addition/sec";conststringRateOfMultiplicationStr ="Multiplication/sec";conststringCountOfCurrentRequestStr ="current # req";#region IPerfCounterProvider 成员publicvoidCreateCounters()
    {
        PerfCounterFactory.AddPerfCounter(newPerfCounter(TotalOfRequestStr,"请求总数",
            PerformanceCounterType.NumberOfItems64));
        PerfCounterFactory.AddPerfCounter(newPerfCounter(RateOfRequestStr,"每秒请求的数量",
            PerformanceCounterType.RateOfCountsPerSecond64));
        PerfCounterFactory.AddPerfCounter(newPerfCounter(RateOfAdditionStr,"每秒相加请求的数量",
            PerformanceCounterType.RateOfCountsPerSecond64));
        PerfCounterFactory.AddPerfCounter(newPerfCounter(RateOfMultiplicationStr,"每秒相成的数量",
            PerformanceCounterType.RateOfCountsPerSecond64));
        PerfCounterFactory.AddPerfCounter(newPerfCounter(CountOfCurrentRequestStr,"当前并发请求量",
            PerformanceCounterType.RateOfCountsPerSecond64));
    }publicvoidCountersCreated()
    {
        TotalOfRequest = PerfCounterFactory.Find(TotalOfRequestStr);
        RateOfRequest = PerfCounterFactory.Find(RateOfRequestStr);
        RateOfAddition = PerfCounterFactory.Find(RateOfAdditionStr);
        RateOfMultiplication = PerfCounterFactory.Find(RateOfMultiplicationStr);
        CountOfCurrentRequest = PerfCounterFactory.Find(CountOfCurrentRequestStr);
    }publicstringPerformanceObjectName()
    {return"MathServicePerfCounter";
    }#endregion}

文章来源于软件测试时代 http://www.testage.net/

TAG: 计数器 入门 推荐 性能 压力

41/41234>

软件测试时代开课信息
Google
关于我们 | 合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2007 TestAge(测试时代) 北京慧灵科技有限公司 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备05002925号
技术支持和业务联系:info@testage.com.cn 电话:010-51297073