应用程序托管的WCF服务在3.5小时后冻结

应用程序托管的WCF服务在3.5小时后冻结,wcf,Wcf,我已经关注一个问题有一段时间了。我们在应用程序中托管了一个(复杂的)WCF服务,并有一个GUI客户端连接到该服务。我们在GUI中遇到冻结,在客户端和服务器之间添加日志记录和心跳服务请求后,我观察到以下情况: 我在客户端和服务器的日志中看到连续发送/接收的消息。然后,在3h32min(一两秒钟)之后,我看到了客户机日志消息,但没有看到服务器。所以我会看到发送,发送,发送,发送。。。来自客户端,但不接收来自服务器的消息。这会持续一到两分钟,然后我会看到一些收到的,收到的,收到的。。。信息。这就好像W

我已经关注一个问题有一段时间了。我们在应用程序中托管了一个(复杂的)WCF服务,并有一个GUI客户端连接到该服务。我们在GUI中遇到冻结,在客户端和服务器之间添加日志记录和心跳服务请求后,我观察到以下情况:

我在客户端和服务器的日志中看到连续发送/接收的消息。然后,在3h32min(一两秒钟)之后,我看到了客户机日志消息,但没有看到服务器。所以我会看到发送,发送,发送,发送。。。来自客户端,但不接收来自服务器的消息。这会持续一到两分钟,然后我会看到一些收到的,收到的,收到的。。。信息。这就好像WCF请求在某个地方被卡住了,然后所有请求都同时被交付

我已经在服务器中实现了故障和异常处理,它不会被触发。我已经尝试过该服务的单例和每次调用实例。错误发生的时间似乎没有什么不同


在这一点上,我愿意接受任何关于尝试/测量/实验内容的建议。

我怀疑GC运行会阻止服务,但每次GC运行几分钟似乎不太可能。尽管如此,在它上面运行一个内存分析器还是值得的。请显示你的客户端调用代码和heardbeat/日志记录。在这个阶段,我会怀疑资源泄漏,除非你的代码证明不是这样。如果我将GC模型更改为禁用并发并注册通知,那么如果我让系统处于稳定状态,我会收到很少的通知。我的意思是每小时一次。对我来说,这听起来不太对,但我并不是这方面的专家。当系统遭遇冻结时,Task Manager显示内存使用率约为40%,但CPU使用率很高。回到这个问题,我在VS 2013上重新编译了我们的解决方案,并将项目定位到.Net 4.5。这似乎解决了问题,因为它从未在该配置上再次出现。然后,我使用VS2010(无需重新编译)构建的原始可执行文件,将计算机升级到.NET4.5。这似乎也解决了问题。看来我在.Net中遇到了一些微妙的错误。