【发布时间】:2015-05-20 09:21:18
【问题描述】:
在我们的生产环境中,我们开始遇到缓慢的 WCF 调用(入站)。过去我们能够在 60-80 毫秒内发送响应,但现在有时需要 500-800 毫秒甚至更长。
我开始在非生产环境中进行测试,使用 JMeter 模拟实时流量并测量响应时间。创建了 JMeter 测试计划,因此它以与我们的实际环境中大致相同的权重到达我们的不同端点。
现在我在 4 个不同的端点上使用 9 种不同的方法,有些是 RESTful,有些是 SOAP。
当我将每个线程组设置为一个线程(总共 9 个线程/用户)并以 30 秒的固定持续时间开始测试时,我得到了平均响应时间。 45毫秒。在 30 秒内,我击中了 500 次端点。
测试设置了恒定吞吐量计时器,因此增加线程数将保持相同的吞吐量。
当我将每个线程组的线程数增加到 10(现在总共 90 个线程)时,响应时间会急剧增加到平均水平。约 140 毫秒 仍然在 30 秒内访问端点约 500 次,这告诉我问题/瓶颈与我们服务器上的并行性有关。但我似乎不知道该往哪里看。
如果有人对此问题有任何意见,我将不胜感激,是否有对此行为的解释,或者我是否必须查看我们的 WCF 端点的配置,IIS 是否有一些相关设置或其他任何东西?
我们的应用程序在 Windows 2012 R2 服务器上的 IIS 8.5 下运行并使用 .NET 4.5
提前致谢
【问题讨论】:
-
这些方法在做什么? SQL查询? - 他们是否会遇到 SQL 或 IO 瓶颈?
-
是的,他们从单独的 sql server(或从缓存)获取用户信息,是否是 sql server 减慢了调用速度?如果是这种情况,我该如何检测这个瓶颈?
-
当然它可能是 SQL-Server - 查看 SQL-Server-Activity 监视器:msdn.microsoft.com/en-us/library/ee377023%28v=bts.70%29.aspx 以获取 SQL-Servers-load 的更多信息(顺便说一句:是 SQL - 服务器是 Express 版本?)
-
不是快递。这是一个MS sql 2012标准版。
-
我刚刚对未连接到数据库的 wcf 端点上的方法进行了负载测试(实际上它没有做任何事情,也许我应该让它休眠或其他什么)结果如下(所有持续时间 30 秒和 450 次调用)1 个线程:平均响应:8 毫秒、5:11 毫秒、10:14 毫秒、20:28 毫秒、50:32 毫秒
标签: .net performance wcf jmeter server