我们使用siddhi-3.1.2作为我们的cep引擎。我们目前正在使用1个线程来处理siddhi中的所有数据。数据处理速度非常慢。
分析cpu的使用情况,我们发现大部分时间都花在了initAggregator方法上。 Yourkit快照分析显示1s采样的CPU使用率约为954ms。
Analytics (1/1) TID=322 STATE=RUNNABLE CPU_TIME=1978 (87.24%) USER_TIME=1910 (84.20%) Allocted: 512423096 org.wso2.siddhi.core.query.selector.attribute.aggregator.AttributeAggregator.initAggregator(AttributeAggregator.java:47) org.wso2.siddhi.core.query.selector.attribute.processor.executor.GroupByAggregationAttributeExecutor.execute(GroupByAggregationAttributeExecutor.java:52) org.wso2.siddhi.core.query.selector.attribute.processor.AttributeProcessor.process(AttributeProcessor.java:38) org.wso2.siddhi.core.query.selector.QuerySelector.processInBatchGroupBy(QuerySelector.java:225) org.wso2.siddhi.core.query.selector.QuerySelector.process(QuerySelector.java:78) org.wso2.siddhi.core.query.processor.stream.window.WindowProcessor.processEventChunk(WindowProcessor.java:57) org.wso2.siddhi.core.query.processor.stream.AbstractStreamProcessor.process(AbstractStreamProcessor.java:101)
CPU中的热点如下所示。
我想知道在initAggregator上花费的时间是否一般是预期的,或者是否依赖于正在处理的siddhi查询。