【问题标题】:asp net core kestrel high cpu usageasp net core kestrel cpu使用率高
【发布时间】:2021-08-19 07:08:32
【问题描述】:
我在 .Net5 + Kestrel 中有一些 Web Api 应用程序,我想测试可以处理的最大请求。
当我将请求数量从低到高(例如,从 10 个同时请求增加到 50 个,然后是 100 个,最后是 500 个)时,程序没有问题,可以在 5 秒内异步回答 500 个请求。
但是过了一段时间(比如10分钟)我再次向服务器发送500个请求时,CPU消耗达到100%,程序没有响应,我必须重新启动程序才能解决响应问题。
我应该如何解决这个问题?
【问题讨论】:
标签:
asp.net-web-api
cpu-usage
.net-5
kestrel
【解决方案1】:
在调试程序并使用dotTrace程序后,我意识到当我想在服务中创建一个httpConnection时,我会在使用后将那个值处理掉,当服务器上的请求量增加时,动作创建和删除 httpConnecton ,给服务器带来很多开销。
希望对大家有所帮助
我知道这类问题的解决方案是使用 IHttpClientFactory。
但是因为我使用 EurekaServiceDiscovery 并且我应该创建一个 DiscoveryHttpClientHandler 并将其传递给 HttpClient Constructor。我不能做这样的事情。那么解决办法是什么