m1n*_*keh 1 azure-eventhub azure-functions
关于我们反复看到的以下异常,请在我们的消费计划功能应用程序上看到异常奇怪的行为:
Microsoft.Azure.EventHubs.RecieverDisconnectedException (已创建新的具有较高纪元“ 2”的接收器,因此当前具有纪元“ 1”的接收器已断开连接。)System.Net.WebException (引发了类型为“ Microsoft.ServiceBus.Messaging.LeaseLostException”的异常。)只要我们强调功能,即在短时间内从0到50,000个事件发生,我们就会得到这些异常,但是它们与匹配我们的Function App。的cloud_role挂钩。这会让我相信这是一个主机错误。
阅读各种文档,例如(https://docs.microsoft.com/zh-cn/azure/event-hubs/event-hubs-features),我想我知道EventHub接收器是如何工作的[但老实说,我是在行之间进行读取(目前还不清楚),因为我的一个接收者依赖于一个消费者组来管理从EventHub分区(我使用的是32个)中读取一批消息。
我的假设是,在负载下,单个消费者组的功能实例太多,无法“应付”,它只是反复地切换分区的租用...但是,在我的测试场景中,我删除了所有逻辑除了在事件中心之间中继消息外,其他功能还起作用,并且即使在EventHub上只有4个分区,错误仍然存在
为了拼命地查看是否在更高版本中得到解决,我在功能v2中模拟了完全相同的功能,并获得了与.net核心等效的功能。
Microsoft.Azure.EventHubs.RecieverDisconnectedException (已创建新的具有较高纪元“ 2”的接收器,因此当前具有纪元“ 1”的接收器已断开连接。)Microsoft.WindowsAzure.Storage.StorageException (指定的租约ID与Blob的租约ID不匹配。)System.ArgumentOutOfRangeException (因为..而忽略了偏移量为1184072 /序列号为1038的过时检查点。)所以有人可以吗
这些异常真的很烦人,因为要真正看到真正的未处理异常非常棘手。
这些是虚假的错误,是由于功能动态扩展/扩展功能驻留在Function App(主机进程)中而导致的,您可以忽略它们。
可以理解的是,它们出现在您的日志中的事实令人震惊,我们已经开始着手抑制某些错误(请参阅https://github.com/Azure/azure-webjobs-sdk/issues/1760)。该版本与v1.0.11913版本一起发布,您应该将其视为警告。如果他们仍然显示为错误,请提出问题。
为什么您会看到这些异常的其他背景
让我们从一些关于EventHub缩放如何工作的初步知识开始,如这篇文章所述:https ://stackoverflow.com/a/42911842/6465830
1. Microsoft.ServiceBus.Messaging.LeaseLostException
每次成功执行横向扩展操作时,EventHub都会在成功管理分区的租约的(1..N)组中重新分配分区租约EventProcessorHosts,其中N是分区数为您的EventHub。例如,如果您仅从Function_0开始,并且它设法在所有10个分区上都至少占有一席之地,那么当我们扩展到Function_1且EventHub决定在两个Function之间平均分配消息时,Function_0将失去对5个分区的租约。此行为说明了Exception of type 'Microsoft.ServiceBus.Messaging.LeaseLostException' was thrown您所看到的。
2. Microsoft.Azure.EventHubs.ReceiverDisconnectedException
此外,Azure函数还将横向扩展到> N实例,因此将有一组N + 1 ... M,其中M是横向扩展实例的总数,而不是能够在任何分区上获得租约。这样做的副作用是,总会有EPH随时准备迅速获取丢失的租约以保持管道畅通。这解释了New receiver with higher epoch of '2' is created hence current receiver with epoch '1' is getting disconnected.您所看到的。同样,仅在执行功能时向您收费,因此此处存在一些超额配置的事实不会影响您的账单。
| 归档时间: |
|
| 查看次数: |
1204 次 |
| 最近记录: |