Smile CDR manages a connection pool for each database connection. A number of database config properties control the behaviour of these connection pools.
If Smile CDR requests a database connection from the database and none is available, then you will see an error message like the following in the logs.
Cannot get a connection, pool error Timeout waiting for idle object
The first thing to check is that the value for db.connectionpool.maxtotal is lower than the number of database connections available for Smile CDR (as configured on the database server).
If that does not resolve the issue, then you should set the following configuration parameters to true:
This will return abandoned connections to the connection pool and DEBUG log their stack traces. You may wish to enable the Connection Pool Troubleshooting Log so these log messages are in a separate file from your main log file.