我必须对性能/负载测试一堆相互依赖的服务。他们都使用net.tcp,大多数使用双工合同和内部排队。 [使用锁定手动操作的POCO队列类(syncRoot){if(queue.Empty)Thread.Wait(); }]为WCF服务定义SLA
这里的方法,我想出来的:
- 确定WCF服务是性能测试
- 确定的初步认识性能计数器为每个服务
- 标识逻辑启动点是将采取通过服务正在测试
- 自动生成单元测试使用VS.Net每个服务
- 编写特定的功能测试(对于考试执行我可以拿一个用例 - “下订单” - 编写测试,使所有相关服务的调用,并通常几乎所有需要的功能excercise)
- 使用跟踪文件从运行#5生成单元测试[使用来自CodePlex的WCF负载测试](这在某种程度上似乎是在调试环境中重新生成用户错误的理想工具。免责声明:未使用该工具。从阅读项目DESC)展示
- 以上可以进行调整以自动产生的输入数据
- 介绍变化到输入端,以便不同的代码路径是从性能计数器瑞典克朗(SEK)
- 登录数据
- 分析使调用的测试并找出瓶颈
问题:
- 有没有更好的方法吗?
- 对于使用内部队列的服务,使用std性能计数器测量性能时出现问题。我可能需要定制计数器?
- 如果#1为真,是否有办法引入客户计数器而不更改被测试服务的代码?
- 我应该关心功能测试的结果吗?
- 有没有办法[非侵入式]实现WCF服务的SLA? (我认为如果我的计数器有足够的数据,例如请求服务,发生异常,响应时间等,我应该能够验证我的SLA - 在5分钟内为每个请求提供200,000个请求,响应时间为2秒 - 我的问题可能是我是否可以指定我的SLA,并且产品/工具可以完成场景背后的所有管道工作并为我提供一个列表答案?我知道......我知道......我是在做白日梦:))
- 另外:什么是在WCF服务内部排队请求的最佳方法?