StreamInsight 和长 运行 查询

StreamInsight and long running queries

我有一个构建在 StreamInsight 1.2 之上的应用程序,它有几个常设查询 运行在用户定义的运算符中进行一些计算。有时,其中一项计算需要相对较长的时间才能完成(几秒钟),我发现它会阻止其他查询的执行。我不太熟悉 StreamInsight 的工作原理,因此我推测所有查询都是 运行 在单个线程上。有什么方法可以并行查询 运行 吗?

除了以某种方式将查询放在单独的线程上之外,我是否可以做任何其他事情来防止一个零星的 运行ning 查询阻塞其他查询?

您使用的是哪个版本的 StreamInsight?标准版在单个内核上运行调度程序,而高级版使用所有可用内核。 至于延迟,如果您的所有查询都依赖于挂起的时间线——通过加入、联合等——那么这就是导致它挂起的原因。事件不是来自 long-运行 UDO 的 "released" 以提供给其他流。如果是这种情况,除非您可以以某种方式重组查询,否则您无能为力。 我也会开始研究为什么 "occasionally" UDO 会花费几秒钟。这让我认为 UDO 有问题,但由于不知道它在做什么的细节,我不能肯定地说。

如果计算偶尔需要几秒钟,这就是它的本质并且你是 运行ning 标准版,你能做的最好的事情是在计算进行时不要阻塞线程。 StreamInsight 对此没有任何内置功能……这是的责任。从 StreamInsight 的角度来看,您的 UDO 需要一些时间。它不知道为什么会这样。如果线程被阻塞,在你的 UDO returns 之前它不能 运行 任何其他事情。所以我会 a) 验证您是 运行ning 标准版,然后 b) 如果是,请更改 UDO,使其成为 non-blocking/async。