我们正在使用WSO2 DAS 3.1.0从WSO2 API-Manager接收事件并发送到数据库。
如果我们向DAS发送大约70到100个事件/秒,持续4-5个小时,那么性能会慢慢恶化,并且开始“萎靡不振”。起初我们怀疑将结果事件推送到我们的数据库时遇到问题(我们有一个事件接收器,一个执行计划(总结事件/秒)和一个发布者到我们的数据库),但我们现在已经得出结论,这不是'一个问题,数据库完全没有问题跟上负载。
要解决我们遇到的问题,例如从传入事件接收器添加了一个事件发布者(在我们执行计划中进行任何处理之前),我们可以看到,当DAS性能恶化时,几秒钟内,该发布者也没有输出;因此问题在于处理传入的事件(我们还在将事件推送到我们的数据库之间添加了一个队列,以确保没有背压传播到传入事件的处理)。
然而,真正奇怪的部分是当发生这种行为时(处理DAS中的传入事件的性能恶化),除了重新启动整个服务器之外没有办法摆脱它(然后它会在没有问题的情况下再次开始工作几个小时)。即使我们停止向服务器发送事件数天,当我们开始向服务器发送1-2个事件时,处理所有事件之间需要几秒钟(因此直接“滞后”传入事件)。在我们重新启动DAS之前,就好像处理传入事件时性能会呈指数级增长。对于未发生此行为更改的任何潜在线索非常高兴(清除内部事件也无效)。
答案 0 :(得分:0)
经过大量的调试后,我们终于找到了原因。
在我们的Siddhi声明中,我们使用' group by'动态变化的时间戳,如下所述:https://github.com/wso2/siddhi/issues/431所描述的处理效率非常低。
修补指定的类后,问题就消失了(但目前还有一个产品获得OOM的错误,因为它没有按照信息发布动态组)。 / p>