流分析太慢(两个流之间的时间滑点)?

时间:2018-05-27 00:50:02

标签: azure amazon-kinesis azure-stream-analytics stream-analytics

这是我的流分析拓扑

EventHubSource => Job A (HoppingWindow every second) => EventHubA
EventHubSource => Job B (HoppingWindow every second) => EventHubB
  • 每个作业在EventHubSource中都有一个不同的使用者组。
  • 每项工作均为embarrassingly parallel且仅供消费 14%的SU资源。

在测试JobA和JobC时,windowEnd和原始事件时间之间的差异只有几毫秒(~300),这是好的(来自我的制作人的延迟+ eventhub +流分析处理时间)。

但是当我在这样的新Job C中加入两个流时:

EventHubA 
          \
            => Job C (Join Datediff = 0 and timestamp by windowEnd)
          /
EventHubB

这会产生一些输出,但问题出现在这里:

真实事件相隔数分钟,即使它们被作业A和B同时推动(同一窗口结束)

当我检查来自EventHub A和B的数据时,windowEnd和实际事件时间戳之间的差异在39到44分钟之间,对于所有这些。但是,当像上面提到的那样测试时,它只有300毫秒。

这里最糟糕的部分是,当我在prod中运行它时,它只会发出大约十几个事件并停止,即使输入计数仍然是数千个。

我已经工作了几周,每次我处理ASA的一些神秘行为时,我的拓扑非常简单,我只使用简单的跳跃窗口1s跳,这不应该花费数周的调整和试验错误,甚至不知道发生了什么。

对于使用ASA和AWS Kinesis分析的人,您是否发现Kinesis分析更易于使用?在ASA中让我烦恼的是不可预测的行为和没有错误消息的问题(我激活了日志分析并且没有错误......)

1 个答案:

答案 0 :(得分:1)

很抱歉听到您遇到ASA的一些问题。我看到你有一个1秒的跳跃窗口,但窗户的总大小是多少,你的大概吞吐量是多少?

关于延迟:看起来是您的问题,我认为您的ASA作业可能没有足够的CPU资源,然后事件处理被延迟。不幸的是,这在当前的SU%指标中是不可见的,但我们计划在未来显示CPU和内存的指标。 要确认这是根本原因,您可以在job diagram中检查积压事件的数量。如果积压了大量事件,您可能需要增加此工作的SU数量。

您还提到了十几个输出后的作业停止,您是否在日志中看到错误消息?