【问题标题】:Degraded Kestrel Performance Over Increased Dormant Periods In Azure在 Azure 中增加的休眠期导致 Kestrel 性能下降
【发布时间】:2016-04-22 15:45:53
【问题描述】:

我们在 Azure A2 Basic VM 上运行的 kestrel 实例出现了一些有趣的行为。随着呼叫之间的时间增加,响应时间似乎越来越恶化。比如……

在 5 分钟左右,它表现得好像操作系统或 Kestrel 进程已经回收了一些资源,但响应时间在 5 分钟后的线性增加让我们陷入了循环。

此外,这似乎是在本地开发时间歇性发生的,这就是为什么没有消除 Kestrel 可以做某事的想法。

有人对 5 分钟退化和随后恶化的退化有想法吗?这仅仅是使用 A2 虚拟机的症状吗?

时间的线性增加怎么样?我知道数据点的数量有限,而且增加很可能是快速浏览的异常情况,但这似乎很常见在日常开发中发生。 因缺少数据点而被删除

【问题讨论】:

  • 您确实没有足够的数据点来判断加载时间,更不用说确定它是线性的了。事实上,这对我来说更像是一个步骤。
  • @DavidG 我完全同意你的看法。数据点是有限的,它只是我们日常所见的反映。希望其他人可能会遇到类似的事情并对此有所了解。你指的这个“步骤”是什么?
  • 这是我指的步骤imgur.com/0mar3s3
  • 谢谢,我明白你现在看到的了。我将问题更新为没有线性假设。
  • 您是否通过依赖注入使用任何Singleton or Instance services 可能会占用内存?我们也在使用 Kestrel,并没有看到这种行为。

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


【解决方案1】:

在使用附加跟踪进行一些测试后,大部分性能下降可以追溯到建立与 Azure SQL 的连接。 Azure 门户中生成的默认连接字符串中未指定“最小池大小”。这会导致使用默认值 0。

将“最小池大小”设置为 5 后,闲置时间后的响应时间得到改善。在 21 分钟不活动后,加载时间仍然只有 400 毫秒。

然后我们没有指定“最小池大小”(应用默认值 0,导致没有连接保持打开状态)。使用此设置,加载时间会在 5 分钟不活动后增加到 4 或 5 秒。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-26
    • 2012-09-12
    • 2012-04-17
    • 1970-01-01
    相关资源
    最近更新 更多