WSO2 DAS 对传入事件的性能不佳?
WSO2 DAS bad performance for incoming events?
我们正在使用 WSO2 DAS 3.1.0 从 WSO2 API-Manager 接收事件并发送到数据库。
如果我们在 4-5 小时内向 DAS 发送 70-100 个事件/秒,性能会慢慢下降,并且开始 "laging"。起初我们怀疑将结果事件推送到我们的数据库(我们有一个事件接收器、一个执行计划(每秒汇总事件)和一个发布到我们的数据库)的问题,但我们现在得出结论,这不是没问题,数据库跟上负载完全没有问题。
为了隔离我们遇到的问题,例如添加一个事件发布者到来自传入事件接收器的文件(在我们在执行计划中进行任何处理之前),我们可以看到当 DAS 性能恶化时,有几秒钟,这个发布者也没有输出;因此问题在于处理传入事件(我们还在将事件推送到数据库之间添加了一个队列,以确保没有背压传播到传入事件的处理)。
然而,真正奇怪的部分是,当这种行为发生时(DAS 中处理传入事件的性能下降),除了重新启动整个服务器(然后它再次开始工作而没有问题)之外没有办法摆脱它几个小时)。即使我们停止向服务器发送事件几天,当我们开始向服务器发送 1-2 个事件时,处理所有事件之间也需要几秒钟的时间(因此直接 "lags" 落后于传入事件)。在我们重新启动 DAS 之前,处理传入事件的性能似乎呈指数级下降。
如果有任何潜在的线索,我们会很高兴知道在哪里进行更改以防止这种行为发生(清除内部事件也没有效果)。
经过大量调试,我们终于找到了原因。
在我们的 Siddhi 语句中,我们使用 'group by' 和动态变化的时间戳,结果证明处理效率极低,如这个错误所述:https://github.com/wso2/siddhi/issues/431。
在给指定的类打补丁后,问题消失了(但目前还存在产品因未发布动态'group by'信息而OOM的bug)。
我们正在使用 WSO2 DAS 3.1.0 从 WSO2 API-Manager 接收事件并发送到数据库。
如果我们在 4-5 小时内向 DAS 发送 70-100 个事件/秒,性能会慢慢下降,并且开始 "laging"。起初我们怀疑将结果事件推送到我们的数据库(我们有一个事件接收器、一个执行计划(每秒汇总事件)和一个发布到我们的数据库)的问题,但我们现在得出结论,这不是没问题,数据库跟上负载完全没有问题。
为了隔离我们遇到的问题,例如添加一个事件发布者到来自传入事件接收器的文件(在我们在执行计划中进行任何处理之前),我们可以看到当 DAS 性能恶化时,有几秒钟,这个发布者也没有输出;因此问题在于处理传入事件(我们还在将事件推送到数据库之间添加了一个队列,以确保没有背压传播到传入事件的处理)。
然而,真正奇怪的部分是,当这种行为发生时(DAS 中处理传入事件的性能下降),除了重新启动整个服务器(然后它再次开始工作而没有问题)之外没有办法摆脱它几个小时)。即使我们停止向服务器发送事件几天,当我们开始向服务器发送 1-2 个事件时,处理所有事件之间也需要几秒钟的时间(因此直接 "lags" 落后于传入事件)。在我们重新启动 DAS 之前,处理传入事件的性能似乎呈指数级下降。
如果有任何潜在的线索,我们会很高兴知道在哪里进行更改以防止这种行为发生(清除内部事件也没有效果)。
经过大量调试,我们终于找到了原因。
在我们的 Siddhi 语句中,我们使用 'group by' 和动态变化的时间戳,结果证明处理效率极低,如这个错误所述:https://github.com/wso2/siddhi/issues/431。
在给指定的类打补丁后,问题消失了(但目前还存在产品因未发布动态'group by'信息而OOM的bug)。