【问题标题】:Azure Message Bus not releasing memoryAzure 消息总线未释放内存
【发布时间】:2021-02-01 16:25:00
【问题描述】:

我正在使用高级层的 Azure 服务总线(主题/订阅)。我运行了一个相当大的压力测试,将主题发送到发送到 5 个订阅之一的总线。这个压力测试是成功的,它在大约 20 分钟的时间内发送了大约 20000 条消息。足以满足我目前的需要。

我正在关注微软message-transfers-locks-settlement的消息发送流程概述

我的 C# 应用程序(这是一个由 http 请求触发的 Azure 函数)本质上是在执行这种模式来发布:

var tasks = new List<Task>();
for (int i = 0; i < 100; i++)
{
  tasks.Add(client.SendAsync(…));
}
await Task.WhenAll(tasks);

我有另一个 Azure 函数触发订阅以处理消息。根据文档,当 Azure Function 完成时,它会完成并从总线上删除消息。

我遇到的问题是,在 Azure 门户中,我看到在我的测试运行后,服务总线没有完全释放它在测试期间使用的所有内存: Azure Portal Message Bus Memory

在过去的几天里,队列中没有活动消息或死信消息。不确定是什么在使用内存或如何清除它。不确定 Azure 消息总线是否有自己的 garbale 集合,这可能会有所帮助。

任何关于如何通过门户或以编程方式清理内存的想法都将不胜感激。

【问题讨论】:

  • “过去几天,队列中没有活动消息或死信消息” Azure Functions 在一段时间不活动后终止。您确定没有发生任何事情来保持该功能处于活动状态吗?
  • 我确实检查了 Azure 函数资源,我已经继续并停止了它,以确保它没有留下任何活动。停止后,我确实看到消息总线的连接减少了,但消息总线的内存使用率仍然稳定在 25%。
  • 我假设这是一个消费计划,对吧?如果是这样,那么函数的运行方式可能会有所不同。您是否尝试过与 Microsoft 核实为什么内存显示为未释放?
  • 我尚未向 Microsoft 开具票证。这可能是我的下一步......我希望能在这个论坛上更快地找到一些东西。 Azure Function 资源是服务计划的一部分,而服务总线是高级计划统一费率。我刚刚进行了一个较小的压力测试,服务总线上的内存在没有释放的情况下只增加了 2%。顺便说一句,感谢您的回复。

标签: azure performance memory azureservicebus


【解决方案1】:

在与 Microsoft 合作后,他们表示服务总线确实将内存用于缓存目的。当需要额外内存时,将释放用于缓存的内存。使用的内存可能正在等待垃圾收集运行。垃圾收集何时运行是不可预测的。也不可能触发内存清理启动。

【讨论】:

    猜你喜欢
    • 2013-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多