12

我试图弄清楚如何分析 WCF 服务,以便识别任何瓶颈。
我在网上找到了一些信息,但没有任何东西可以假设我所在的位置没有先验知识。

有哪些推荐的免费工具?

- visual studio tools
- clrprofiler 

是我发现的使用 vsperfcmd.exe 分析 wcf 服务的信息,据此它非常简单,但我需要填补从哪里开始的空白。我的假设是将 VsPerfCLREnv 和 VsPerfCmd 复制到托管我的 wcf 服务的服务器并执行一些我不太确定的配置步骤。我也不太确定如何查看调用堆栈来评估每个调用的性能。

clrprofiler 似乎更简单一些。我假设我会将 clrprofiler.exe 复制到服务器,File->Profile Service并添加名称和启动/停止命令。(这是一个友好的名称或文件名还是服务显示名称?)我假设然后我将对服务运行我的测试,我可以在 clrprofiler 中看到调用堆栈。这听起来正确吗?

[编辑]
我对测试网络不太感兴趣,因为这是在测试服务器上,这是一个大型 wcf 项目,上面有多个开发人员,我无法仅出于监视目的而对项目进行更改表现。我想专注于其中的实际方法的性能。

非常感谢任何有关入门的帮助。

4

5 回答 5

6

对于 WCF,仅在通道堆栈上发生一堆事情(安全、反序列化、格式化等)时对代码进行分析是不够的。一种可视化的好方法是在详细级别使用 WCF 跟踪,然后使用服务跟踪查看器查看消息处理的每个步骤所用的时间。阅读此处了解如何配置和使用 WCF 跟踪。这是帮助我诊断 WCF 问题的最重要的事情。

当然,所有其他代码分析、数据库分析等也是有效的方法。您甚至可以使用SoapUI之类的工具来测试您的网络通信和客户端性能开销,以获得更多的端到端基准。

于 2010-10-15T00:26:13.170 回答
5

我学到的一些东西可能会有帮助:

即使通过本地网络,您也无法远程配置服务。探查器必须与服务在同一台机器上运行。(这实际上花了我很长时间才弄清楚。对你来说可能很明显,但它从未被拼写出来,所以我一直在尝试这样做)

Visual Studio 无法让我分析我的 WCF 服务。我能够从 VS profiler 团队获得一些帮助,但从来没有找到一个可行的解决方案。

VS 连接和断开分析器的速度很慢,并且经常检测我的二进制文件并使它们处于损坏状态。

.net 二进制文件不需要检测,因为它们包含方法的元数据,这很奇怪,Visual Studio 一直在尝试检测它们的二进制文件。

我还尝试了 VS 独立分析器,但这使用起来非常复杂,需要重新启动我的服务器。

我最终得到了一个内部分析器(在从团队获得私有构建之后),所以我不确定有多少分析器是设计用于 WCF 服务的。

我实际上将分析器设置为监视 WAS 服务,然后将我的附加二进制文件添加到分析器。

如果探查器是否连接,进程资源管理器在故障排除时很有用。用它看inetinfo.exe环境

于 2010-11-29T22:26:03.657 回答
1

你能在调试器下运行它吗?

你能忍受一个简单的、老式的、行之有效的方法这是一个。

于 2010-10-14T21:55:34.360 回答
1

除了 Mike 的评论之外,您还可以使用内置的 WCF 性能计数器查看许多与性能相关的指标,还可以查看 WCF 跟踪上的调用时间。一旦您知道哪些操作“慢”,通常比使用通用分析器更容易为这些操作添加一些自定义计时/日志记录代码。这来自曾经从事商业分析的人。

于 2010-10-15T00:13:28.930 回答
1

您应该研究的工具:svctracelogviewer(并在您的服务和客户端中打开跟踪)。SoapUI 用于模拟负载(并进行分析)和 Fiddler,一个出色的 HTTP 嗅探器/诊断工具。

于 2010-10-15T06:16:31.790 回答