【发布时间】: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