如何对 Windows 服务中托管的 wcf 服务进行负载/压力测试?

Posted

技术标签:

【中文标题】如何对 Windows 服务中托管的 wcf 服务进行负载/压力测试?【英文标题】:How do I do load/stress testing of wcf services hosted in a windows service? 【发布时间】:2012-01-03 22:08:13 【问题描述】:

我们在 Windows 服务中托管了大约 15 个 wcf 服务。其中一些在 .NET 4.0 中,一些在 .NET 3.5 中。

我想知道如何对 Windows 服务中托管的 wcf 服务进行负载/压力/性能测试。客户端使用 .net tcp 绑定与服务进行通信。此外,出于性能考虑,大多数 API 都会返回一个流。

我能够找到一些用于 IIS 中托管的 wcf 服务测试的工具,但不知道如何对窗口服务中托管的服务进行负载/压力/性能测试。

感谢任何帮助。谢谢。

【问题讨论】:

如果您愿意分享您为 IIS 中托管的 WCF 服务找到了哪些工具 @SurjitSamra - 请参阅与 IIS 中的 WCF 测试相关的 this post。 @SurjitSamra - 但我的服务托管为 Windows 服务,我使用 net.tcp 绑定。 当它的服务然后我更喜欢服务单元测试用例,这实际上意味着执行一个业务事件,例如,1) CreateACustomer 2) CheckValidCustomer 3) ValidAddress 4) 等等,然后我将这些测试用于两个 Windows主机和 Web 主机服务。这些测试作为 MSTest 开发,然后作为简单的控制台应用程序运行。 【参考方案1】:

您可以参考here中的简单步骤进行WCF服务的负载和性能测试

【讨论】:

【参考方案2】:

6 Different Ways to Testing a Web Service 呢?

Here 使用jmeter 实现 WS 测试的快速方法。

并查看这 2 个帖子 - 它们似乎与您的问题有关: 1.WCF with tcp.net binding testing with JMeter 2.How to test a WCF Webservice with JMeter?

【讨论】:

我不确定这是否有助于测试 Windows 服务。因为我的 WCF 服务托管在 Windows 服务中。【参考方案3】:

您应该能够使用 Visual Studio 2010 Ultimate 版本进行测试。基本流程是模拟http请求。

我可以想象的最简单的方法是创建一个应用程序来调用您要测试的 Web 服务,其模式类似于您期望普通应用程序调用它的方式。使用 Fiddler2 记录 https 会话。将会话保存为 Visual Studio Web 测试。 将 webtest 加载到 Visual Studio 中并将其转换为编码的 web 测试。这允许您控制针对 Web 服务使用的安全性等。

运行负载测试需要 Visual Studio 2010 Ultimate 版本,但可以使用普通版本创建 webtests。真正的硬测试还需要虚拟用户包的许可证,但终极版允许使用单个 CPU 测试多达 250 个虚拟用户。这足以了解 Web 服务的性能概况。

【讨论】:

但我的服务托管为 Windows 服务,我使用 net.tcp 绑定。这种方法也适用于这种情况吗?

以上是关于如何对 Windows 服务中托管的 wcf 服务进行负载/压力测试?的主要内容,如果未能解决你的问题,请参考以下文章

使用单个 Windows 服务托管 4 个不同的 WCF 项目。如何?

如何在虚拟机中使用托管在 Windows 服务中的 WCF

我可以在 Windows 服务中托管 WCF 服务吗?

Windows 服务(托管 WCF 服务)在启动时立即停止

将WCF寄宿在托管的Windows服务中

使用 Windows 身份验证的 IIS 托管 WCF 服务和 SQL 查询