Azure流分析太慢 - 时间值也无关紧要

时间:2016-06-25 02:25:13

标签: performance azure azure-eventhub azure-stream-analytics azure-functions

我们希望将我们的专用服务器迁移到Azure平台,以便轻松扩展,并根据我们的需求调查了大量Azure服务。因此,我们要使用的Azure服务之一是Azure流分析(ASA)。

我们根据我们执行某些测试的需求添加了一些Azure平台(目前它们的用途并不重要)。结构如下:

SimpleApp(发送请求,不在Azure中) - >事件中心1(EH1) - > ASA - > Event Hub 2(EH2) - >功能应用程序(FA)

  • SimpleApp 向经典专用服务器发送简单的HTTP GET请求 名为 TESTSERVER 。它花了最多100-150毫秒,它代表 我们的开始时间。之后,它将消息发送给EH1。
  • ASA&#39> 查询很简单:SELECT * INTO [输出] FROM [输入]
  • 功能应用 TESTSERVER 发送一个简单的HTTP GET请求 确定完成时间。

当我们看到 TESTSERVER 日志的结果时,我们感到震惊。耗时4000-5000毫秒!

然后我们开始调查这个问题。选中 EventEnqueuedUtcTime EventProcessedUtcTime 等值,以确定哪个块导致此缓慢。但这些时间价值完全无关紧要。例如; EventEnqueuedUtcTime 应小于 EventProcessedUtcTime 但不是!因此,这表明即使在不同的Azure块中,时间服务器也可能不同,我们无法使用它们进行测量。我错了吗?

无论如何,在此之后,我们怀疑最后一个 Azure功能应用可能导致这种缓慢。我们认为功能应用程序的事件中心触发器可能效果不佳。所以我们设计了一个新的测试环境:

SimpleApp(发送请求,不在Azure中) - >事件中心1(EH1) - >功能应用程序(FA1) - > Event Hub 2(EH2) - >功能应用2(FA2)

第二次震惊......总共花了大约400毫秒!

然后,我们使用包含ASA的不同架构进行了大量测试,但所有测试对我们来说都太慢了。

您是否遇到过ASA的任何性能问题?您能分享一下您的经验和流程吗?总时间消耗?

最好的问候。

1 个答案:

答案 0 :(得分:4)

从事件中心按时间顺序合并所有事件时存在延迟。

ASA将访问EH的所有分区,获取数据并按时间顺序组织事件。这意味着数据必须到达EH中的所有分区。我认为这也将解释您在EventProcessedUtcTime中看到的奇怪行为,可能是因为事件是有序的,逻辑处理时间是在实际到达时间之前。虽然我对此不确定,因为我不知道ASA的内部运作。

此延迟将随着使用的分区数量而增加,尤其是在数据流速度较慢时。

您可以通过在EH字段partitionid上进行分区来回避合并。 确保您也将数据发送到EH中的正确分区。

更多信息可以在Stream Analytics blog找到。