在我们的生产环境中,我们开始遇到缓慢的 WCF 调用(入站)。我们过去能够在 60-80 毫秒内发送响应,但现在有时需要 500-800 毫秒甚至更多。
我开始在非生产环境中进行测试,方法是使用 JMeter 模拟实时流量并测量响应时间。 JMeter 测试计划的创建使其以与我们的实际环境中大致相同的权重命中我们的不同端点。
目前我在 4 个不同的端点上使用了 9 种不同的方法,一些是 RESTful,一些是 SOAP。
当我将每个线程组设置为一个线程(总共 9 个线程/用户)并开始一个固定持续时间为 30 秒的测试时,我得到了平均响应时间。 45 毫秒。在 30 秒内,我达到了终点 500 次。
测试设置了恒定的吞吐量计时器,因此增加线程数将保持相同的吞吐量。
当我将每个线程组的线程数增加到 10 个(现在总共有 90 个线程)时,响应时间急剧增加到平均水平。约140ms 在 30 秒的时间内仍然击中端点大约 500 次告诉我问题/瓶颈与我们服务器上的并行性有关。但我似乎不知道去哪里找。
如果有人对这个问题有任何意见,我将不胜感激,是否有对此行为的解释,或者我是否必须查看我们的 WCF 端点的配置,IIS 是否可以有一些相关设置或其他任何东西?
我们的应用程序在 Windows 2012 R2 服务器上的 IIS 8.5 下运行并使用 .NET 4.5
提前致谢
最佳答案
您的问题有很多原因:
- 具有并发 sql 查询的慢速数据库
- 错误配置的sql server
- 由于带宽引起的网络争用
- IIS 配置错误
- 影响并发(锁定)的代码问题
- ...
没有更多的元素是无法猜测的
关于.net - 并行时 WCF 服务变慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30345465/