...
Configure an external database server such as MySQL as the persistence storage instead of embedded H2 database. Althogh Although slight performance gains can be experienced when using simple BPEL processes with H2 database, it cannot handle multiple concurrent requests and complex processes with the same efficiency.
...
BPS has two engines; Apache ODE BPEL processor and HumanTask engine. These two engines are tightly coupled with the database layer and their function is to persist instance data into the database. Thus, for BPS to function properly, you need to allocate enough database connections for BPS datasource. Both these engine share same BPS datasource and database connections so we generally recommend allocating 50% of database connections for each engine for an application running with both BPEL and HumanTask.
For example if you have a total 100 db database connections , for a BPEL and HumanTask application, you can use upto 50 db database connections for the ODE engine and leave the rest of the db database connections for HumanTask operations.
If If you have only BPEL usecasein your application, you can allocate many db connections ( see next topic) for more database connections for the ODE engine.
Note |
---|
Also note that, even you have allocated higher number of |
...
database connections for the BPS datasource, performance may not increase as |
...
expected. One reason |
...
for this could be |
...
that there are |
...
not enough |
...
database sessions from the database side. If that is the case, you need to increase the number of |
...
database sessions from database side. |
Configure the BPS datasource by editing the <BPS_HOME>/repository/conf/datasources.properties
file and changing the following.
Code Block |
---|
synapse.datasources.bpsds.validationQuery=SELECT 1 FROM DUAL
synapse.datasources.bpsds.dsName=bpsds
synapse.datasources.bpsds.maxActive=100
synapse.datasources.bpsds.maxIdle=20
synapse.datasources.bpsds.maxWait=10000 - See more at: http://tryitnw.blogspot.com/2014/05/wso2-bps-320-performance-tuning-know.html#sthash.UnATY5b5.dpuf |
ODE scheduler threads
ODE scheduler threads are useful when your application requires high throughput.
In the ODE engine, every scheduler thread is associated with a db connection. So the rule of thumb is, number of ODE scheduler threads should be less than or equal to number of db connections allocated for ODE engine. Otherwise some threads may not work properly, because they can't acquire a db connections to work. For example In BPEL + HumanTask scenario, if you have total 100 db connections, your can allocate 50 threads for ODE scheduler. This will guarantee that at a given time, only 50 db connections are acquired by ODE engine.
Multi-threaded HTTP connection manager
Configure 'multi-threaded Http connection manager' connection pool settings to suit your BPEL processes. Typically, the HTTP connection manager should be configured to be in sync with the concurrent HTTP connections in BPS.
...