2012-04-09 58 views
0

我們一次在JBPM5中批量啓動進程(比如說100個實例)。並且該過程的每個任務都是由外部程序異步啓動和完成的。在這種情況下,JBPM引擎會花費很多時間來生成下一個任務,因此整體性能會受到影響。 (例如:平均需要45分鐘才能完成100個進程實例)請提供一種優化jbpm5引擎性能的方法。優化JBPM5引擎的性能

回答

0

現在它更快。通過

client.complete() 

完成任務之後,我的威逼/使用命令

ksession.getWorkItemManager().completeWorkItem(id, data); 

與此發動機的信令服務器產生後續的任務完成得更快,我可以能夠檢索它爲我處理。 但是,這是完成任何任務的理想方式..?

0

有些東西一定是錯的或配置錯誤,因爲完成100個過程實例的45分鐘看起來太多了,一般情況下每個請求通常應該大大少於一秒。但很難弄清楚什麼可能是錯的。你有更多關於你的設置的信息,以及實際上花了很多時間嗎?你在調用什麼類型的外部服務?你有沒有我們可以看到的原型?

Kris

+0

示例工作流程包含8個人工任務,並且戰爭部署在運行在後臺的jboss服務器和守護程序線程中。啓動100個進程時,線程將啓動所有保留的任務,另一個線程將完成進行中的任務。所有過程的第一項任務的啓動和完成速度更快,但後續任務的生成速度更慢,並且其後花費了大量時間。 – 2012-04-10 05:33:37

+0

現在它更快。完成任務後 client.complete() 我使用 ksession.getWorkItemManager()完成/發信號通知服務器。 與此引擎正在更快地生成後續任務,我可以找回它爲我的處理。但是,這是完成任何任務的理想方式..? – 2012-04-23 05:26:40

0

是的,這聽起來是問題在您的域中,而不是在您的引擎。前一段時間,我們爲內存進程和數據庫持久化進程做了一些性能測試,引擎引入的延遲小於每個活動2ms(內存)和每個活動5ms(數據庫中保留)。 你究竟是怎麼打電話給引擎的,你怎麼託管它?你在做什麼樣的電話?你有沒有辦法測量你的外部服務需要多長時間來回答?

乾杯

+0

我們正在用mysql db和jboss服務器進行測試。 – 2012-04-10 05:41:56

+0

在後臺運行的線程將啓動並完成每個進程的任務。在mysql數據庫中,我們目睹了一次100個任務完成後,新任務生成需要時間,這就是我們懷疑引擎可能很慢的地方。 – 2012-04-10 05:50:17

+0

它不應該。線程運行在後面什麼意思?人類應該完成這些人類任務嗎?那些線程在做什麼?看看sql日誌,看看發生了什麼..可能你正在殺死數據庫發送噸這些後臺線程的查詢。 – salaboy 2012-04-10 08:06:27