【Azure Event Hub】在VMSS中使用WAD(Window Azure Diagnostic)插件发送日志到Event Hub中报错分析

问题描述

使用Azure的虚拟机集VMSS中部署应用程序,通过它的扩展WAD(Window Azure Diagnostic)来授权系统及应用层面的全部事件日志,并发送到Event Hub中。

只是,通过EventHub收集到的日志,发现丢失了一部分事件日志。并且在VMSS中收集到的日志文件中,可以发现下列错误信息:

  1. Failed to publish data to event EventXXXXXXXXXXXXXXXXXXXXXX; event hub xxxxxxxxx.servicebus.chinacloudapi.cn\/xxxxxx is too busy
  2. There are more than 50 batches in the queue for EventHub.
  3. Operation could not be completed within the specified time

基于以上信息,是否是接收端Event Hub达到了瓶颈了呢?

问题解答

对于错误消息 event hub xxxx is too busy,初步判断是怀疑Event Hub服务端的瓶颈。因为Event Hub的吞吐量是存在限制的。

事件中心的吞吐量容量由"吞吐量单位"控制。 单个吞吐量单位限制为:

  • 流入量:最高每秒 1 MB,或每秒 1000 个事件(以先达到的限制为准)。
  • 流出量:最高每秒 2 MB,或每秒 4096 个事件。

当流入量受限,事件中心将引发 EventHubsException("原因"值为 ServiceBusy)。

如果Event Hub服务端出现限流并报错Service Busy,会在Azure Event Hub门户指标上显示。但是,在WAD报错event hub xxxxxxxxx.servicebus.chinacloudapi.cn\/xxxxxx is too busy的时间点上,并没有发现Event Hub的Service Busy报错指标。

所以,在排除Event Hub服务端之后,回到WAD客户端的配置,根据 "There are more than 50 batches in the queue for EventHub." 分析到50是WAD 客户端的源代码中硬编码,无法配置和修改。

如果WAD所在的实例上的日志数据数据量太大,在发送给Event Hub服务之前,在Queue中已经有50个batch后 (即本地缓存池已满,消息的生成速度 > 发送速度),就会出现There are more than 50 batches in the queue for EventHub 报错信息。

如果是客户端生成的日志事件过多,合理的解决方案有:

1)增加VMSS中的实例数,让应用分配到更多实例上,减少单个实例上生产日志的速度。最终达到消息的生成速度<发送速度

2)修改WAD的 sinks 配置,对事件日志进行分类,减少单个sinks发送渠道压力

参考资料

吞吐量单位 : https://docs.azure.cn/zh-cn/event-hubs/event-hubs-scalability#throughput-units

Send data from Microsoft Azure diagnostics extension to Azure Event Hubs : https://learn.microsoft.com/en-us/azure/azure-monitor/agents/diagnostics-extension-stream-event-hubs


当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!

相关推荐
Data-Miner7 天前
大语言模型+智能体AI,122页PPT详解落地应用培训!
人工智能·microsoft·语言模型
c++之路8 天前
备忘录模式(Memento Pattern)
c++·microsoft
Solis程序员8 天前
MCP (Model Context Protocol):AI应用连接外部世界的标准协议
人工智能·microsoft·agent·skill·mcp
诺未科技_NovaTech8 天前
上海诺未携手惠灵顿中国,基于微软 Azure 打造 AI 教育生态标杆
人工智能·microsoft·azure·ai教育
hnult8 天前
在线笔试平台如何选型?考试云九重防作弊 + 六大 AI 能力 智能招聘笔试解决方案
人工智能·笔记·microsoft·信息可视化·课程设计
步步为营DotNet8 天前
Blazor 与 Microsoft.Extensions.AI 在客户端性能优化中的协同应用
人工智能·microsoft·性能优化
hai3152475438 天前
九章编程法 · 猜数字游戏 (GW-BASIC 重构版) *
人工智能·microsoft·游戏引擎·游戏程序
weixin_397574098 天前
从AI问答到AI执行:企业智能体平台的定位跃迁
人工智能·microsoft
basketball6168 天前
AI Infra 硬件体系与编程模型:17. CUDA编程基础:底层驱动 API 调用
人工智能·microsoft·nvidia·cuda