首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WCF冷启动

WCF冷启动
EN

Stack Overflow用户
提问于 2008-12-17 20:38:21
回答 3查看 1.4K关注 0票数 3

我在一个相当苛刻的环境中使用WCF。我观察到的一种行为是我称之为冷启动。当我第一次启动一个调用服务的客户端时,在第一次调用中似乎有很多失败。例如,我可以观察前10个呼叫,然后接下来的200个呼叫全部失败。我正在异步地与服务对话。然后,服务运行并正常响应。我可以看到这是一个(潜在的)端点问题,而不是操作问题,因为多个不同的操作都会失败。感觉就像有一个锁,端点停止并重置自己,然后就好了,尽管我没有证据支持这一点。

服务器端跟踪中没有错误。我的客户端日志显示了很多以下异常:

System.ServiceModel.CommunicationException:服务器未提供有意义的回复;这可能是由于约定不匹配、会话过早关闭或内部服务器错误导致的。

我已经考虑过实现平滑算法来平衡服务调用,因为在启动时往往会有很多服务调用。其他人有没有看到过类似的行为?谢谢。

史蒂夫

编辑:该服务驻留在Windows服务中。

编辑:感谢大家的评论。

我从一开始就将各种队列上的数字设置得相当高。关于如何扩展WCF服务,我有一些来之不易的知识。我允许2048个并发连接。我已经设置了listenBackLog等。

我为前1000个调用实现了平滑,这似乎得到了它。这可能与JIT有关,但我没有证据。就目前而言,我将离开它,看看它是否会再次发生。

EN

回答 3

Stack Overflow用户

发布于 2008-12-17 20:42:19

出于兴趣,您是如何托管WCF服务器的?IIS具有方便的池化(通过F5等NLB ),但存在应用池回收问题,以及IIS首先生成(按需)应用池/域/等所导致的滞后。自托管(windows服务等)倾向于更线性和可预测的性能,特别是如果(在服务启动期间)你强制加载所有东西,可能是通过向自己发出请求(如果你明白我的意思)。

如果你不需要集群服务,考虑自托管它。看看能不能帮上忙。

票数 2
EN

Stack Overflow用户

发布于 2008-12-21 01:21:50

您是否已尝试增加终结点的排队连接数?可能有10个正在排队,当.NET CLR正在JITing您的代码时,其余的传入连接将被拒绝,直到您的代码开始运行。

票数 1
EN

Stack Overflow用户

发布于 2009-09-03 18:51:02

这是一个更老的话题,但我发现自己也遇到了类似的情况。操作员声明

我为前1000个调用实现了平滑,似乎得到了它。

他说的“平滑”到底是什么意思我在谷歌上搜索了一下,它似乎不是一个关键词……

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/375937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档