Имея WSO2 BPS 3.6.0, мы время от времени сталкивались с OutOfMemoryError, и сервер останавливался. После анализа кучи мы подозреваем:
У нас есть несколько процессов, которые периодически просматривают некоторую информацию (используя веб-службу) до тех пор, пока состояние бизнес-элемента не изменится. Через некоторое время у некоторых экземпляров процесса может быть МНОЖЕСТВО событий (тысячи, некоторые 10k). При попытке просмотреть информацию об экземпляре в углеродной консоли загруженные данные (действия экземпляра) могут вызвать en OutOfMemoryError и отключить сервер (имеющий 6 ГБ ОЗУ) :(
Как обходной путь - используем поиск по БД:
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 (жадно загружая весь список областей и событий в память)