我有以下设置:在应用程序负载平衡器(AWS)后的几个linux容器(基于aspnetcore 2.0.5构建)中运行的Web api

使用HttpClient向此api发出请求的客户端。客户端正在多个任务上并行运行调用。如果并行任务的数量增加,则api会引发异常,并显示消息“请求超时”。

调用堆栈为:



是什么会导致此错误?谁在设置超时?我该如何进一步调查?

编辑:如果我试图让 fiddler 捕获失败的请求,则不会再抛出该错误(也许 fiddler 正在以较低的并行度打开连接)。

最佳答案

一种可能的原因是由于I/O绑定(bind)操作,您正在阻止asp.net线程。从问题描述来看,您的服务器似乎正在处理请求。除此之外,它无法做到这一点。

我认为,如果您正确使用Async/Await,那么您可以处理的并发请求数不能超过当前的限制。

另外,通过配置检查是否可以增加Asp.Net线程数。传统的Asp.Net支持这一点。不确定Asp.Net Core是否具有此功能。

最后,由于您正在云中运行,因此请检查升级服务器配置的可行性。可能会升级配置,这将帮助您处理更多的请求。显然,这应该是最后的选择。首先,重点在于利用现有硬件提高应用程序的性能。

关于c# - AspNetCore(Kestrel)请求超时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49167759/

10-13 03:40