【发布时间】:2021-11-14 23:46:35
【问题描述】:
我在 IIS 上运行 .net core web api 应用程序。在应用程序的某些部分,我调用 wcf 服务以获取一些信息(异步、使用异步等待等)有时该 wcf 服务不可用并且我得到超时(默认为 1 分钟)然后启动问题。因为有很多对我的 API 的请求,等等 wcf 服务,线程数开始增加,在某些时候 wcf 服务开始正常工作,但是当我的线程数超过 200(我猜)它开始不断上升(我猜每秒 1 个线程)并且它不会停止。那时我的应用程序没用了,唯一的方法是在 IIS 上停止并启动应用程序池,然后我的应用程序开始正常工作。
这是一个月内的一个案例,但我不知道该怎么办。我尝试了很多。下一个尝试是在调用 wcf 服务时降低超时。
【问题讨论】:
-
你的代码是做什么的? ASP.NET Core 不会无缘无故地启动线程。不知何故,你的代码阻塞了这些线程。如果将
async/await与 WCF 的异步方法一起使用,则线程在等待时不会被阻塞 -
如果您知道远程服务已损坏,最好停止使用它。您可以自己实现代码或使用例如Polly 来实现重试或停止使用服务等策略
-
我觉得可以这样: 1.调整服务器上的最大线程数。 2.设置启动优先级,WCF程序优先。 3.删除无用程序。
标签: c# wcf .net-core threadpool