CoreWcf 服务在一段时间后挂起
CoreWcf Service hangs up after some time
我以前有一些 NET Framework WCF 服务。它像发条一样工作。 NET5 和 CoreWCF 发布后,我将服务迁移到 NET5 和 CoreWCF。
现在一段时间后挂断。如果负载很轻,那么它可能会工作一天左右(然后随机死掉),但如果负载变重,那么它可能会在一个小时左右就死掉。当它死亡时,我可以看到它开始消耗大量处理能力。
客户端工作正常,即使我重新启动服务,它们也会恢复连接(在抱怨了一段时间服务不可用之后)。
该服务作为单例运行。
记录然后监视记录何时停止似乎是弄清楚发生了什么的唯一方法。不幸的是,这种日志记录会产生大量数据,而且即使在服务的“核心”不再正常运行后,它似乎也会产生一些数据。
可以切换到 gRPC。但是,这将需要重写所有客户端。
调试是行不通的,因为服务会在一小时到一天后的某个时间终止,并且当它处理多个连接和计时器事件时。
不知道有没有人有什么想法。非常感谢!
建议:运行调试器中的服务,然后查看它死在哪里and/or开始消耗 CPU 个周期。
如果您不会使用调试器,那么我认为 logging/monitoring 是您最好的选择。也许您可以减少记录的数据量以仅关注服务的“核心”。
我以前有一些 NET Framework WCF 服务。它像发条一样工作。 NET5 和 CoreWCF 发布后,我将服务迁移到 NET5 和 CoreWCF。
现在一段时间后挂断。如果负载很轻,那么它可能会工作一天左右(然后随机死掉),但如果负载变重,那么它可能会在一个小时左右就死掉。当它死亡时,我可以看到它开始消耗大量处理能力。
客户端工作正常,即使我重新启动服务,它们也会恢复连接(在抱怨了一段时间服务不可用之后)。
该服务作为单例运行。
记录然后监视记录何时停止似乎是弄清楚发生了什么的唯一方法。不幸的是,这种日志记录会产生大量数据,而且即使在服务的“核心”不再正常运行后,它似乎也会产生一些数据。
可以切换到 gRPC。但是,这将需要重写所有客户端。
调试是行不通的,因为服务会在一小时到一天后的某个时间终止,并且当它处理多个连接和计时器事件时。
不知道有没有人有什么想法。非常感谢!
建议:运行调试器中的服务,然后查看它死在哪里and/or开始消耗 CPU 个周期。
如果您不会使用调试器,那么我认为 logging/monitoring 是您最好的选择。也许您可以减少记录的数据量以仅关注服务的“核心”。