No one to get some advices from, best practices, feedback ???
I am currently using the following environnement :
CPU Quad Core
Java 1.6.0 (xms = xmx = 1024m permsize = 256m)
JAS 7.0.2 coming with jBPM 5.3.0 Final release
DB PostGreSQL (min pool size = 20 max pool size = 40)
JPA Persistence with JPADbMemoryLogger enabled for business activity monitoring
Please post in my thread !!
Franck, I would say that it really depends on your requirements, there are number of elements that can be tuned, among others -number of sessions that are in use, process definitions, how many synchronous actions you have, etc. Probably best is to define what are your objectives and then give it a test drive and see how far or close you are with default configuration. Next is to look into what could be improved and fine tuned.
Thanks for replying.
To answer to some of your questions :
In my process I have :
- a Start Message Event
- some Service Tasks all synchronous
- at the end of my process i have an EventBasedGateway either waiting for a BPMN message to receive or a timer that is triggering if the message does not arrive within a specific amount of time, then the process ends
My tests are done in the second mode describe above (web application which embeds jBPM runtime) since I want to signal a message to the session (signalEvent method) and then it starts automatically my process (waiting for this message to start of course )
My main objective is to have an idea as accurate as possible of the threshold of what the jBPM engine is able to handle depending on the amount of HTTP request made to my servlet :
- number of HTTP request send (with OK status) as opposed to the number of created processes in jBPM Engine
- number of created processes and time to complete them
- delay involved when a process is created and "remains in processintanceinfo table" before being completed
This kind of tests is made with other BPMN solutions (by other colleages) to see what each solution is able to handle as far as loading is concerned. The goal is to try to have a good idea of what is reasonable or not to consider with each tested BPMN solutions.
So please help me to rise jBPM5 to the top on the shelf even if I already think that it is a top one !
Some furher informations :
For each test :
- I start my JAS 7.0.2 Server with postgresql configuration enabled (my servlet instanciate a single session with JPADbMemoryLogger enabled)
- Once JAS 7.0.2 is started and my application well deployed, I send HTTP requests (multiple threads with a constant throughput timer) for several minutes
- Shutdown of the HTTP Request and see how many processes have been completed / how many are pending, time to get all pending processes completed, ...
- Once processintancelog table is empty I shutdown JAS 7.0.2
Each is test is made with a new session (each time my servlet is started), in your opinon is it a problem? => The past sessions are completed that is to say no more processes in a wait state, all completed. Till now I do have only 10 sessions.
Each session has the same bpmn process and only one.
Once a session is no more used, is there anything particular to do ?
Some questions about relationship between session and process instance :
- is there a way to know the session in which a process instance has been created
- case 1 processinstance is completed => in table processintancelog I can see a link with a particular session? Many sessions can live together so how do you get this information?
- case 2 process instance is not completed => it appears in table processinstanceinfo so how do you link with a specific session id?
Sorry to ask again and be insistent , but as far as configuration is concerned, there are no specific recommendations from the jBPM team so that jBPM engine will be at ease or confortable when running ?
- JVM parameters