首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >wso2 bps OutOfMemoryError -低效事件列表

wso2 bps OutOfMemoryError -低效事件列表
EN

Stack Overflow用户
提问于 2016-12-16 11:28:49
回答 1查看 75关注 0票数 1

有了WSO2 BPS3.6.0,我们偶尔会遇到OutOfMemoryError并停止服务器。经过堆分析,我们怀疑:

我们有几个流程,它们定期查找一些信息(使用web服务),直到业务项状态没有改变。经过一段时间后,一些流程实例可能有许多事件(数千个,一些10k)。当试图在碳控制台中查看实例信息时,加载的数据(实例活动)能够导致en OutOfMemoryError并删除服务器(拥有6GBRAM) :(

作为一种解决办法,我们使用DB查找:

代码语言:javascript
复制
select ode_event.event_id, ode_event.detail, ode_event.tstamp, ode_event.type,
ode_event.instance_id, ode_event.process_id,
ode_scope.scope_name
from ode_event, ode_scope where ode_event.instance_id=18204 and 
(ode_event.scope_id = ode_scope.scope_id);

尽管我们认为让任何业务用户(甚至是流程所有者)直接访问数据库的想法是非常糟糕的。

是否有(更好的)方式/查询来查看这些活动?哪个是正确的github项目来放置一个改进/特性(加载分页的活动)?

编辑:

看到源代码,这种“行为”是从Apache-ODE实现继承的(急切地将整个范围和事件列表加载到内存中)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-17 02:57:43

这是当前的行为。我们可以通过添加分页来改进它。但这就是原因,这是没有优先考虑的。

如果您检查单个DB表的大小,您将看到事件表占用了大部分空间。这是因为,进程调试级别的事件在默认情况下是启用的,它生成的许多events.These事件在开发时会很有用,但是当涉及到生产时,您必须禁用它们。否则,您将浪费生产资源(CPS、内存、DB空间)。它会影响整个BPS发动机的性能。

这里有一些一般性建议.

如果您有更大且运行时间更长的进程,建议只对需要监视的选定范围启用事件。(如果你没有,就更好了。:)

此外,您还需要不断地清理数据库中的旧数据。(只是google脚本文档),否则你的DBA会抱怨DB没有足够的空间在不久的将来运行。:)

事件并不是流程执行所必需的。这样你就能把它清理干净。在您的场景中,清理活动BPEL流程的旧事件可以吗?例句:早在1/2/7.几天。?。这将在一定程度上解决你的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41183414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档