C# CoreWcf服务在一段时间后挂断

C# CoreWcf服务在一段时间后挂断,c#,wcf,.net-core,f#,C#,Wcf,.net Core,F#,我曾经有一些netframeworkwcf服务。它像钟表一样工作。NET5和CoreWCF发布后,我将服务迁移到NET5和CoreWCF 现在过了一段时间它就挂了。如果负载很轻,那么它可能会工作一天左右(然后随机死亡),但如果负载变重,那么它可能只在一个小时左右死亡。当它死后,我可以看到它开始消耗大量的处理能力 客户机工作正常,即使我重新启动服务,他们也会恢复连接(在抱怨服务不可用一段时间后) 该服务以单例运行 记录日志,然后监测日志何时消失似乎是了解发生了什么的唯一方法。不幸的是,这样的日志记

我曾经有一些netframeworkwcf服务。它像钟表一样工作。NET5和CoreWCF发布后,我将服务迁移到NET5和CoreWCF

现在过了一段时间它就挂了。如果负载很轻,那么它可能会工作一天左右(然后随机死亡),但如果负载变重,那么它可能只在一个小时左右死亡。当它死后,我可以看到它开始消耗大量的处理能力

客户机工作正常,即使我重新启动服务,他们也会恢复连接(在抱怨服务不可用一段时间后)

该服务以单例运行

记录日志,然后监测日志何时消失似乎是了解发生了什么的唯一方法。不幸的是,这样的日志记录会产生大量的数据,而且即使在服务的“核心”不再正常运行之后,也会产生一些数据

可以切换到gRPC。但是,这需要重写所有客户端

调试是不可能的,因为该服务会在一小时到一天之后的某个时间,以及在处理多个连接和计时器事件时终止


我想知道是否有人有什么想法。非常感谢

建议:在调试器中运行该服务,然后查看它在哪里死掉和/或开始消耗CPU周期


如果您不能使用调试器,那么我认为日志/监视是您最好的选择。也许您可以减少记录的数据量,以便只关注服务的“核心”。

核心中WCF的替代方案是gRPC:建议:在调试器中运行服务,然后查看它在哪里死掉和/或开始消耗CPU周期。如果您不能使用调试器,那么我认为记录/监视是您最好的选择。也许你可以减少记录的数据量,只关注服务的“核心”。@brianberns,我听从了你的建议,结果发现我这边有一个愚蠢的错误:我在每次WCF调用时都创建了一个较低级别的底层服务,而不是单例服务。由于这个低级服务产生了一个
Timer
处理程序,因此服务运行的时间越长,我对
Timer
的订阅就越多,直到系统死机。如果你能,请,提交你的评论作为一个答案,那么我很高兴标记它如此。谢谢!很高兴它成功了!