asp.net - Azure 中休眠时间延长导致 Kestrel 性能下降

标签 asp.net performance azure kestrel-http-server

我们在 Azure A2 Basic VM 上运行的 Kestrel 实例中发现了一些有趣的行为。随着调用之间的时间增加,响应时间似乎会恶化。例如...

Load Times

在 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/

相关文章:

python - 根据另一列减去某个 pandas 数据框列的最小值

android - 最佳表演: XML or Java?

azure - 在 ADF 中使用 Foreach 循环读取 JSON 脚本数组输出时出现问题

asp.net - 来自 Visual Studio 调试的 localhost 的 ERR_SSL_PROTOCOL_ERROR

c# - 回发时添加了用户控件,但不显示

java - (为什么)Tomcat/Java 在 Linux 上比在 Windows 上表现更好?

azure - Microsoft Azure 网站上的 Geoserver

azure - 在 Powershell 中安装 Az 模块时出错 - 程序包 'Az.Accounts' 无法安装

asp.net - 如何从 web.config 读取系统值并在 ASP.NET MVC C# 方法中使用

c# - 在后面的代码中隐藏 div 元素