C# Microsoft Azure中托管的.NET CORE API应用程序超时异常(Redis缓存、SQL、.NET CORE)
我拥有以下基础设施: .NET核心3.1 API,托管在VNet中。在VNet内部,我们有8台服务器,带有负载平衡器+SQL Server+Redis缓存 我们正在登录操作上每秒运行API负载测试1200操作(这不是轻量级操作)。此时,所有服务器上的负载为5-10%。但问题是我们遇到了API超时和Redis超时问题 好像有什么东西挡住了我们的思路 这是我的Startup.cs(我们试图利用价值,但没有成功): 这来自*.csproj文件:C# Microsoft Azure中托管的.NET CORE API应用程序超时异常(Redis缓存、SQL、.NET CORE),c#,.net-core,azure-redis-cache,vnet,C#,.net Core,Azure Redis Cache,Vnet,我拥有以下基础设施: .NET核心3.1 API,托管在VNet中。在VNet内部,我们有8台服务器,带有负载平衡器+SQL Server+Redis缓存 我们正在登录操作上每秒运行API负载测试1200操作(这不是轻量级操作)。此时,所有服务器上的负载为5-10%。但问题是我们遇到了API超时和Redis超时问题 好像有什么东西挡住了我们的思路 这是我的Startup.cs(我们试图利用价值,但没有成功): 这来自*.csproj文件: <PropertyGroup> <T
<PropertyGroup>
<ThreadPoolMinThreads>315</ThreadPoolMinThreads>
315
Update1->Redis发行信息已添加
Redis错误:
StackExchange.Redis.RedisTimeoutException:等待响应的超时(出站=0KiB,入站=0KiB,已过10000ms,超时为10000ms),命令=GET,下一步:设置键\u digievents\uuuuuuuuuuuuuuuuuuuuuuuuuuuFreeEvent\u4072,inst:0,qu:0,qs:684,aw:False,rs:ReadAsync,ws:Idle,in:2197285,in:0,in:0,out-pipe:0,out-pipe:0,serverEndpoint:10.0.0.0.34:6379,mc:1/0,经理:10人中的10人可用,客户名称:akssocial27apiapp-xkkb4,IOCP:(忙=0,空闲=1000,最小=1000,最大=1000),工作人员:(忙=430,空闲=32337,最小=315,最大=32767),v:2.1.58.34321
StackExchange.Redis.RedisTimeoutException:等待响应的超时(出站=0KiB,入站=0KiB,已过10000ms,超时为10000ms),命令=GET,下一步:设置键\u digievents\uuuuuuuuuuuuuuuuuuuuuuuuuuuFreeEvent\u4072,inst:0,qu:0,qs:684,aw:False,rs:ReadAsync,ws:Idle,in:2197285,in:0,in:0,out-pipe:0,out-pipe:0,serverEndpoint:10.0.0.0.34:6379,mc:1/0,经理:10人中的10人可用,客户名称:akssocial27apiapp-xkkb4,IOCP:(忙=0,空闲=1000,最小=1000,最大=1000),工作人员:(忙=430,空闲=32337,最小=315,最大=32767),v:2.1.58.34321
在Datadog.Trace.ClrProfiler.Integrations.StackExchange.Redis.ConnectionMultiplexer.ExecuteAsyncImplInternal[T](对象多路复用器、对象消息、对象处理器、对象状态、对象服务器、Func`6原始方法)
我很乐意接受任何建议。
提前感谢。许多人在升级到2.x时会遇到TimeoutException 此解决方案可能会帮助您: 在帖子的末尾,它写道: 在.NETCore中,添加环境变量 COMPlus_ThreadPool_ForceMinWorkerThreads覆盖默认值 MinThreads设置,根据环境/注册表配置 旋钮-也可以使用与相同的ThreadPool.SetMinThreads()方法 如上所述 以下是我随函附上的关于我所问问题的说明。我希望这能帮助别人,节省很多时间 首先,我们没有关于带宽是Azure基础设施瓶颈的例外/错误/报告。这只是我们的假设。但为了反驳这一假设,我们大幅增加了容量,甚至连微软Azure团队都表示,我们的资源调配比使用量过多。 所以带宽从来都不是问题。 这是以下方面的限制:
- 在许多现实场景中,Redis的吞吐量在受到CPU限制之前就受到了网络的限制。为了在一台服务器上整合多个高吞吐量Redis实例,值得考虑使用TCP/IP绑定放置一个10 Gbit/s NIC或多个1 Gbit/s NIC
- CPU是另一个非常重要的因素。Redis是单线程的 支持具有大缓存且核数不多的快速CPU
<PropertyGroup>
<ThreadPoolMinThreads>315</ThreadPoolMinThreads>