我们在 Azure A2 Basic VM 上运行的 Kestrel 实例中发现了一些有趣的行为。随着调用之间的时间增加,响应时间似乎会恶化。例如...
在 5 分钟标记附近,它的行为就好像操作系统或 Kestrel 进程回收了一些资源,但在 5 分钟标记之后响应时间的线性增加使我们陷入了循环。 p>
此外,在本地开发时,这种情况似乎会间歇性地发生,这就是为什么 Kestrel 可能有所作为的想法尚未消除。
有人对 5 分钟退化和随后恶化的退化有什么想法吗?这仅仅是使用 A2 虚拟机的症状吗?
时间的线性增加怎么样?我知道数据点的数量有限,乍一看,这种增加很可能是异常的,但这似乎是一种常见现象日常开发中发生的情况。 因缺乏数据点而被删除
最佳答案
使用额外的跟踪进行一些测试后,大部分性能下降可以追溯到建立与 Azure SQL 的连接。 Azure 门户中生成的默认连接字符串中未指定“最小池大小”。这会导致使用默认值 0。
将“最小池大小”设置为 5 后,不活动一段时间后的响应时间得到改善。 21 分钟不活动后,加载时间仍然只有 400 毫秒。
然后,我们没有指定“最小池大小”(应用默认值 0,导致没有连接保持打开状态)。使用此设置,在 5 分钟不活动后,加载时间将增加到 4 或 5 秒。
关于asp.net - Azure 中休眠时间延长导致 Kestrel 性能下降,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36798194/