3 Replies Latest reply on Oct 24, 2012 6:12 AM by Franck cdsosi

    Advices needed for configuring jBPM5 runtime environment

    Franck cdsosi Newbie

      Hi,

       

      I am currently working on a sample application using a single jBPM5 BPMN Process and using persistence in a postgresql database.

      I want to test remotly my process from two ways :

      1. in a classical way that is to say :
        • drop my BPMN file into the sample\evaluation\src\main\resources
        • include my business classes in a jar included in  jbpm-gwt-console-server.war\WEB-INF\lib
        • "invoke" my process through the REST API coming with jBPM 5.3.0
      2. in a web application which embeds jBPM runtime and test it by exposing some REST services

       

      I want to test the load of the jBPM5 Engine by sending "some" REST requests to simulate a lot of users interacting with my process. Of course I also want to send many parallel requests to see how the jBPM5 engine reacts from a concurrency point of view.

      My future application may have this kind of requirements.

       

      So my question is :

       

      What are the advices that the jBPM team can give me to configure in an appropriate manner JAS 7 / Persistence / ...  so that performance could be the best as possible.

       

      • One parameter I see is increasing the max pool size of the postgresql datasource in standalone.xml

                              <max-pool-size>

                                  yy

                              </max-pool-size>

      • Are there any others parameters on which one can play with or things / tips to know to encounter the least performance issues?

       

      Thanks for help and replies coming

       

      Kind Regards

        • 1. Re: Advices needed for jBPM5 engine load testing
          Franck cdsosi Newbie

          No one to get some advices from, best practices, feedback ???

           

          I am currently using the following environnement :

           

          4GB RAM

          CPU Quad Core

          Ubuntu

          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 !!

          • 2. Re: Advices needed for jBPM5 engine load testing
            Maciej Swiderski Master

            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.

             

            HTH

            • 3. Re: Advices needed for jBPM5 engine load testing
              Franck cdsosi Newbie

              Hi Maciej,

               

              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?

               

              Macej,

              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 ?

              - RAM

              - CPU

              - JVM parameters

              - ...

               

              Kind Regards

               

              Franck