I am having performance problems with my jBPM application, and it appears to be related to a single step in one of my processes. The node posts XML data to an external server over an HTTP connection, and can take up to 30 seconds.
In a stress test scenario, I have seen processes which normally take 20-50 seconds to complete take over 80 minutes. It seems that almost all the time is spent waiting for the CommandExecutorThread to start processing them after their first async node.
Looking at the code which creates this thread, it seems that there is no thread pooling for this component. It seems like I could get huge gains if the CommandExecutorThread was actually many threads, perhaps managed in a thread pool.
Has anyone ever implemented such pooling with jBPM? Is there code available for this already? What are the potential problems I should look out for if I decide to implement this on my own?
no there is no threadpooling, and I do not know if there ever will be. For enterprise scaling we advise to use the jms solution that will be in 3.2