首页 > 解决方案 > 无法在 Owin 中读取请求正文(卡在 ReadAsStringAsync 中)

问题描述

在具有多个实例的 Azure 负载均衡器和 Azure 流量管理器配置文件后面的 Azure Service Fabric 中运行 OWIN 自托管 Web 服务。当服务尝试使用HttpContent.ReadAsStringAsync将请求正文从传入请求读取到字符串时,大约 2% 的 Web 请求会卡住。所以ReadAsStringAsync超时后失败:

System.Net.Http.HttpRequestException:将内容复制到流时出错。

Web 服务接收不同大小的请求,其中大多数很小,但有些可能高达 60K。并发未决请求/实例的数量约为 900,CPU 负载约为 30%。扩展服务数量有一点帮助,但并不能完全解决,我也在试图了解根本原因是什么。这是我在 OwinHttpListener 中覆盖的设置:

listener.SetRequestProcessingLimits(Environment.ProcessorCount * 5, int.MaxValue);
listener.SetRequestQueueLimit(10000);

关于根本原因和/或如何解决它的任何想法?欧文版:

PackageReference 包括="Microsoft.AspNet.WebApi.Owin" 版本="5.2.6"

标签: c#azureowin

解决方案


推荐阅读