首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AspNetCore (Kestrel)请求超时

AspNetCore (Kestrel)请求超时
EN

Stack Overflow用户
提问于 2018-03-08 07:37:04
回答 1查看 10.2K关注 0票数 7

我有以下设置:在应用程序负载均衡器(AWS)后面的两个linux容器(构建在aspnetcore 2.0.5上)中运行的web

使用HttpClient向该api提出请求的客户端。客户端并行运行对多个任务的调用。如果并行任务的数量增加,api将开始抛出消息“请求超时”的异常。

调用堆栈是:

Microsoft.AspNetCore.Server.Kestrel.Internal.System.IO.Pipelines.PipeCompletion.ThrowFailed() at Microsoft.AspNetCore.Server.Kestrel.Internal.System.IO.Pipelines.Pipe.GetResult(ReadResult&成绩)在Microsoft.AspNetCore.Server.Kestrel.Internal.System.IO.Pipelines.Pipe.Microsoft.AspNetCore.Server.Kestrel.Internal.System.IO.Pipelines.IReadableBufferAwaiter.GetResult() at Microsoft.AspNetCore.Server.Kestrel.Internal.System.IO.Pipelines.ReadableBufferAwaitable.GetResult() at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.MessageBody.d__24.MoveNext() --从抛出异常的前一个位置开始的堆栈跟踪的结束--在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task任务中)在Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Frame`1.d__2.MoveNext()。

是什么导致了这个错误,是谁设置了一个超时,我如何进一步研究这个问题?

编辑:如果我尝试fiddler来捕获失败的请求,错误就不会再抛出了(也许fiddler正在以较小的并行度打开连接)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-08 14:11:31

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

我认为,如果您正确地使用异步/等待,那么您可以提供比当前限制更多的并发请求。

如果可以增加Asp.Net线程的值,也可以通过配置检查这一点。传统的Asp.Net支持这一点。不确定Asp.Net核心是否有此功能。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49167759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档