Bonita 5.10.2 - Slow and High CPU Usage

Hi, 

we have an old Bonita 5.10.2 Open Solution Community Edition, with about 1000 active cases, running on a Tomcat server.

Such cases have active timers to send weekly notifications reminders to users.

In the last year we have noted an abnormal CPU usage of the Bonita Tomcat task, it is always (24h/day) at 15% of CPU and the system is very slow when creating new cases.

We have searched for the cause and, on the SQL Server database , on the table "bonita_journal", there is a lot of requests about "timers"

 

What could be the cause of this problem?

There is a way to avoid Timers execution, or schedule timers execution, to avoid high cpu usage in office hours?

Thanks in advance to anyone that can help us.

Best regards

Francesco

 

Hi Francesco,

Bonita 5.10 is more than 7 years old...

Without discussing if you need to migrate or not, lets try to analyze a bit more what is going on.

Could you post the queries and its response time, and bonita_journal and bonita_history tables sizes?

Thanks

Hi Pablo, 

thanks for your response. 

Yes, I know, I have a Bonita 7 server also, but these are old complex processes that are hard to migrate.

Based on your suggestions, I have analyzed the queries also.

Some queries was on the table "BN_JOB" and looking at it, I have seen that such table is about "Timers".

The table has a field named "EXCEPTION_", and, fortunately, I've seen that on some rows there is some exception written in it.

org.ow2.bonita.util.BonitaRuntimeException: No active execution found for identifer: timer-635f65e0-a3a4-4783-bf92-793c8a37fa30

at org.ow2.bonita.runtime.event.ExecuteJobsCommand.executeEvent(ExecuteJobsCommand.java:335)

at org.ow2.bonita.runtime.event.ExecuteJobsCommand.executeEvent(ExecuteJobsCommand.java:361)

at org.ow2.bonita.runtime.event.ExecuteJobsCommand.executeJob(ExecuteJobsCommand.java:130)

at org.ow2.bonita.runtime.event.ExecuteJobsCommand.execute(ExecuteJobsCommand.java:87)

at org.ow2.bonita.runtime.event.ExecuteJobsCommand.execute(ExecuteJobsCommand.java:47)

at org.ow2.bonita.services.impl.DefaultCommandService.execute(DefaultCommandService.java:44)

at org.ow2.bonita.runtime.tx.StandardTransactionInterceptor.execute(StandardTransactionInterceptor.java:45)

at org.ow2.bonita.services.impl.EnvironmentInterceptor.execute(EnvironmentInterceptor.java:40)

at org.ow2.bonita.services.impl.RetryInterceptor.execute(RetryInterceptor.java:59)

at org.ow2.bonita.runtime.event.JobExecutorThread.run(JobExecutorThread.java:39)

at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)

at java.util.concurrent.FutureTask.run(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)

Looking at the cases (about 40) with the raised exception, I've seen that the timers linked to the case was "freezed" at about the end of october 2019, and the case log stopped at the same time also.

So, given that such cases was old ones, I have cancelled them from the Bonita Portal and the Bonita server gone to 0% of CPU.

Probably, given that in the same period of October 2019 we had a "disk full" on the SQL Server, this caused the problem on timers also.

Thanks,

Francesco