c# - 无法在 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"
解决方案
推荐阅读
- linux - IntelliJ 在 Linux 上显示“Haxe SDK 没有有效的根”
- asp.net-core-2.1 - DotNet Core 身份 - 它不记得用户
- arrays - 在 groovy 中创建地图的汇总列表
- r - 在 R 中使用具有不同宽度的列的数据框时出现问题
- javascript - 如何在函数中保存全局变量值?
- html - 无法在圆形按钮中垂直居中文本
- r - R:为什么 group_by 仍然需要“做”,即使使用 quosures
- big-o - 这个例子是 O(n) 还是 O(nlogn)?
- pandas - 创建 100% 堆栈栏
- android - Android Studio 更新 3.2.1