Webservice wcf队列的性能计数器

时间:2010-02-15 16:45:55

标签: wcf performance iis performancecounter

我正在尝试对wcf webservice进行性能测试,这应该会获得大量流量。哪些性能计数器是明智的使用和为什么目的..自然我正在看CPU和RAM,但我想知道IIS何时排队以及何时遇到问题...

对感性表现计数器的任何建议都感激不尽......

干杯亚历克斯

3 个答案:

答案 0 :(得分:2)

MSDN在WCF administration and diagnostics上有一整节,特别是performance counters in WCF

还有针对效果计数器hosted service calls以及endpointoperations的特定部分。

我建议首先查看这些内容,因为那里有大量有价值的信息。

答案 1 :(得分:0)

分析性能计数器很复杂,并且需要大量练习,这就是我说我没有足够经验来提供完整列表的方式。

您将开始寻找一些具体的事情。 首先当然是返回webservice调用需要多长时间。这会告诉您在该负载下是否存在性能问题。 接下来每个人都看着CPU。这真的不会告诉你很多。 RAM很好,但您想知道您的应用程序分页到磁盘的频率,因此请检查Page Faults / sec。 检查逻辑磁盘和物理磁盘的“当前磁盘队列长度”。如果您的物理磁盘完全排队,那么您正在读取/写入磁盘。

除此之外,您通常会尝试找到一个特定且可能不明显的问题。

我通常会分阶段进行性能测试。使用基础知识进行第一次测试,如果特定页面出现问题,请查看它导致的负载。

如果整个生产服务器运行不充分,则添加更多硬件会更容易,但我更喜欢查看正在运行的代码并使其更好。

答案 2 :(得分:0)

在运行性能监视器之前,您需要添加注册表项:

HKLM/Services/CurrentControlSet/service/
  Add ServiceModelService 4.0.0.0
  under that add Performance then add a DWORD FileMappingFile.
  The size for that will be number of services exposed * 33 * 350.

在您的配置中,您将添加

<system.ServiceModel>
  <diagnostics performanceCounters="ServiceOnly"/>
</system.ServiceModel>

您可以观看以下计数器: CPU / RAM(用于内存泄漏)/用于每个服务呼叫和呼叫持续时间以及呼叫未完成

CPU will show you how heavily your are saturating your server
RAM will show if you have memory leaks if it continues to grow and grow and grow
Calls will show the number of calls you are getting accumulative, 
Calls Per Second will give you the volume you're handling
Calls Outstanding are clients that are waiting because your services could not handle the volume.

如果您在这些分组中发现了一些可疑的数字,那么请开始查看其他元素,例如Calls Faulted或Calls Failed。 (不确定故障和故障之间的区别)

您需要进一步深入研究问题而不是仅提供服务的数字。当你进入另外两组计数器时,你的共享内存利用率会非常高。