甚至在使用输出速率限制器后,Esper仍在抛出oom

问题描述 投票:0回答:1

我们正在esper中创建一个每小时的上下文,并将@hint与输出速率限制器一起使用。但是在某些事件中,我们仍然会耗尽内存。XMX -12 G

[在某些情况下,如果我们进行了不良的压缩,则意味着,例如,我们获得了6 GB的数据,这些数据是未聚合的,因此从esper看来是不良的压缩。]

我也想在esper上限制大小,因此,如果我们在每小时上下文之前达到限制,我可以刷新压缩效果不好的大量数据。

就像您按小时显示上下文或刷新输出数据的大小一样。

我的esper查询

 private static final String HOURLY_CONTEXT =
  "create context HourlyRollup start(0,*,*,*,*,0) end(59,*,*,*,*,59)";
  private static final String HINT = "@Hint('enable_outputlimit_opt') ";

private static final String HOURLY_STATEMENT = HINT+
      "context HourlyRollup "
          + "select count(*) as xcount,hourlyFloor(min(from_time)),a,b,c,d,e,f,"
          + "g,h,sum(h),sum(i),j,k,l,"
          + "m,n,y,o,p,q,r "
          + "from io.common.Bean where Dir in (-5,-3,0,1) "
          + "group by a,b,c,d,e,f,g,Direction,h,"
          + "i,j,k,l,m,l,n,o,p output all "+"when terminated";

我们正在esper中创建一个每小时的上下文,并将@hint与输出速率限制器一起使用。但是在某些事件中,我们仍然会耗尽内存。 XMX -12 G在某些情况下,如果压缩不好,...

events compression out-of-memory esper
1个回答
0
投票

请确保您的查询已完全聚合,否则,由于选择子句要求提供事件数据,Esper必须保留事件。当查询完全聚合后,Esper仅保留聚合数据,这就是您想要的。

© www.soinside.com 2019 - 2024. All rights reserved.