簡體   English   中英

wso2 bps OutOfMemoryError-無效事件列表

[英]wso2 bps OutOfMemoryError - inefficient event list

使用WSO2 BPS 3.6.0時,我們偶爾會遇到OutOfMemoryError並且服務器已停止。 經過堆分析后,我們懷疑:

我們有一些流程,這些流程會定期(使用Web服務)查找一些信息,直到業務項目狀態不變為止。 一段時間后,某些流程實例可能會發生許多事件(數千個事件,大約10k)。 當嘗試在Carbon控制台中查看實例信息時,加載的數據(實例活動)能夠導致en OutOfMemoryError並刪除服務器(具有6GB RAM):(

解決方法-我們使用數據庫查找:

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實現繼承的(將整個范圍和事件列表迅速加載到內存中)

這是當前行為。 我們可以通過添加分頁來改進它。 但這是原因,沒有優先考慮。

如果檢查單個數據庫表的大小,您將看到事件表已占用了大多數空間。 這是因為,進程調試級別的事件默認情況下處於啟用狀態,並且會生成許多事件。這些事件在開發時會很有用,但是在生產時,必須禁用它們。 否則,您將浪費生產資源(CPS,內存,數據庫空間)。 這將影響整個BPS引擎的性能。

以下是一些一般性建議。

如果您的流程較長且運行時間較長,建議僅對需要監視的選定范圍啟用事件。 (如果您什么都沒有,那就更好了。:)

另外,您將需要不斷清理數據庫中的舊數據。 (只是google BPS文檔的腳本)否則,您的DBA將會抱怨DB在不久的將來沒有足夠的空間來運行。 :)

流程執行不需要事件。 這樣您就可以清理它。 在您的方案中,可以清除活動BPEL流程的OLD事件嗎? 例如:清除早於1/2/7 ..天的事件。 這將在某種程度上解決您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM