我们有一个带有 Azure Event Grid主题的Azure设置,并且我们有一个 Azure Function Service ,其中包含约15个通过不同前缀订阅该主题的功能过滤器。 Azure功能服务被设置为基于消耗的资源,并且应该能够根据需要进行扩展。
每个订阅均设置为在放弃活动前最多4个小时内尝试发送10次。到目前为止,一切都很好,并且设置在大多数情况下都按预期工作。
在某些情况下(对于我们未知的情况),事件网格主题似乎无法将事件传递给不同的功能。我们可以看到,死信存储中充满了尚未交付的事件。
从日志中,我们可以看到未传递各种事件的原因。原因通常是结果:试用期。我们找不到Microsoft提供的有关这实际上意味着什么的任何信息。
此外,网格失败,并且在超时策略(4小时)和传递尝试策略(10次重试)之前,将事件添加到死信日志中已超过。有时,功能服务会处于空闲状态,并且不会从Grid接收任何事件。
你们中的任何一个人是否对我们如何进行故障排除有任何想法?当出现错误信息“试用”时,Grid和Funciton App之间发生了什么?我们注意到的一件事是,与传递的事件数量相比,从网格到功能应用程序的连接数量很多。 除了事件网格,没有其他与Function App的传入连接。
[{
"id":"a40a1f02-5ec8-46c3-a349-aea6aaff646f",
"eventTime":"2020-06-02T17:45:09.9710145Z",
"eventType":"mitbalAdded",
"dataVersion":"1",
"metadataVersion":"1",
"topic":"/subscriptions/XXXXXXX/resourceGroups/XXXX_STAGING/providers/Microsoft.EventGrid/topics/XXXXXstaging",
"subject":"odl/type/mitbal/v1",
"deadLetterReason":"TimeToLiveExceeded",
"deliveryAttempts":6,
"lastDeliveryOutcome":"Probation",
"publishTime":"2020-06-02T17:45:10.1869491Z",
"lastDeliveryAttemptTime":"2020-06-02T19:30:10.5756332Z",
"data":"<?xml version=\"1.0\" encoding=\"utf-8\"?><Stock><Action>ADD</Action><Id>123456</Id><Store>123</Store><Shelf>1</Shelf></Stock>"
}]
答案 0 :(得分:0)
我不确定您是否在这里找到了问题,但是这里有一些类似情况下的其他见解。
首先,试用期是目的地不健康的结果,Event Grid仍会尝试交付。
根据图表,函数看起来达到了100个执行标记,然后花了一段时间扩展到下一个100个。您可以根据每个函数的执行情况来调整host.json
设置,以获得更好的结果会。
包括scale controller logs可能会更有助于了解横向扩展时内部发生的事情。
另外,另一种选择是先将事件发送到service bus或event hubs中,然后从那里运行一个函数。