I am currently getting about 2 job completions per second from a clustered environment and multiple job executors running. I am trying to drastically improve this (> 200 jobs per second). From the looks of it it seems I am thread bound. Hardware is not a concern for me and I created my own JobExecutor (basically copied the DefaultJobExecutor), and replaced the default values to this:
protected int queueSize = 50;
protected int corePoolSize = 75;
private int maxPoolSize = 200;
This doesn't seem to be having any effect, I still see only three threads at any given time running jobs. My process engine config code is:
processEngineConfigurationImpl
.setDatabaseType(DatabaseConfig.getDatabaseType())
.setJobExecutor(new CustomJobExecutor())
.setJobExecutorActivate(true)
.setDatabaseSchemaUpdate(databaseSchemaUpdate);
ProcessEngine processEngine = processEngineConfigurationImpl.buildProcessEngine();
Is there something I am missing? If anyone else has experience in getting more throughput from the job executor I'd really appreciate it if they could share their experiene and any best practices.
Thanks