Esper 不是 defrencing objects 并导致聚合对象的 oom
Esper is not defrencing objects and leading to oom for aggregated objects
我们是 Esper 聚合,即按特定事件集分组...但 esper 并未取消引用该聚合对象。
Esper 查询:
private static final String HOURLY_CONTEXT =
"create context HourlyRollup start(0,*,*,*,*,0) end(59,*,*,*,*,59)";
这是我们的每小时上下文...
查询中的这个 bean 没有被取消引用,我们正在获取这些对象的 gbs。
private static final String HOURLY_STATEMENT =
"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 order by a,b,c,Dir,d,e";
private static final int HOURLY = RollupPeriod.HOURLY.ordinal();
当 select-clause 选择每个事件的属性时,不在 group-by 子句中,这意味着 Esper 不能忘记事件本身并保留事件直到输出和终止。
这种类型的查询是http://esper.espertech.com/release-8.2.0/reference-esper/html_single/index.html#processingmodel_aggregation_batch_group_agg
当 select-clause 只有聚合属性加上出现在 group-by 子句中的 un-aggregated 属性时,这意味着 Esper 可以忘记事件并保留聚合值。
这种类型的查询是 http://esper.espertech.com/release-8.2.0/reference-esper/html_single/index.html#processingmodel_aggregation_batch_full_agg
所以...检查 select-clause 中的表达式并确保事件属性在 group-by 子句中,或者全部聚合,例如 "last(r)" 或 "first(r)" 或类似的。
我们是 Esper 聚合,即按特定事件集分组...但 esper 并未取消引用该聚合对象。
Esper 查询:
private static final String HOURLY_CONTEXT =
"create context HourlyRollup start(0,*,*,*,*,0) end(59,*,*,*,*,59)";
这是我们的每小时上下文...
查询中的这个 bean 没有被取消引用,我们正在获取这些对象的 gbs。
private static final String HOURLY_STATEMENT =
"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 order by a,b,c,Dir,d,e";
private static final int HOURLY = RollupPeriod.HOURLY.ordinal();
当 select-clause 选择每个事件的属性时,不在 group-by 子句中,这意味着 Esper 不能忘记事件本身并保留事件直到输出和终止。
这种类型的查询是http://esper.espertech.com/release-8.2.0/reference-esper/html_single/index.html#processingmodel_aggregation_batch_group_agg
当 select-clause 只有聚合属性加上出现在 group-by 子句中的 un-aggregated 属性时,这意味着 Esper 可以忘记事件并保留聚合值。 这种类型的查询是 http://esper.espertech.com/release-8.2.0/reference-esper/html_single/index.html#processingmodel_aggregation_batch_full_agg
所以...检查 select-clause 中的表达式并确保事件属性在 group-by 子句中,或者全部聚合,例如 "last(r)" 或 "first(r)" 或类似的。