Default maximumPoolSize for HikariCP
Master System Design with Codemia
Enhance your system design skills with over 120 practice problems, detailed solutions, and hands-on exercises.
HikariCP is a high-performance JDBC connection pool that is widely acclaimed for its speed, simplicity, and lightweight footprint. One of the key configuration parameters in HikariCP is the maximumPoolSize, which determines the maximum number of connections that the pool can manage. Understanding its implications and configuring it correctly is critical to ensuring optimal application performance.
Understanding maximumPoolSize
Definition
maximumPoolSize represents the limit on the number of open connections in the pool. When an application needs a connection, the pool will allocate an existing one if available or establish a new one up to this limit. Once the limit is reached, further requests will be queued until a connection is released back into the pool.
Default Setting
The default value for maximumPoolSize in HikariCP is typically 10. This means that no more than 10 concurrent connections will be maintained by the pool unless the configuration is explicitly overridden.
Technical Correlation
The maximumPoolSize should be informed by the application's concurrency needs, database capacity, and the expected workload. If not properly configured, you may either face throttled performance due to too few connections or resource exhaustion due to too many.
Example Configuration
Key Considerations
Database Resource Constraints
The underlying database server has its own limits regarding the number of connections it can handle efficiently. Setting maximumPoolSize too high can overwhelm the database, leading to contention and possible system throttling.
Application Throughput
Your application's throughput can be a determining factor. If your application performs a high rate of short-lived transactions, increasing the pool size may enhance performance. Conversely, for applications with fewer but longer transactions, a smaller pool size might suffice.
Concurrent Client Requests
Estimate the number of concurrent client requests and how database-intensive each is. The maximumPoolSize should support peak demand while balancing database load.
Example Scenario
Imagine an e-commerce application which expects about 100 concurrent users during peak times, each issuing a database query every 2 seconds. Here's how you might calculate a suitable maximumPoolSize:
- Concurrency Level: 100 users.
- Request Rate per User: 1 query every 2 seconds, meaning 0.5 queries/second/user.
- Total Request Rate:
100 users * 0.5 queries/second/user = 50 queries/second. - Assume a query takes, on average, 0.2 seconds to execute.
- Required connections:
50 queries/second * 0.2 seconds/query = 10 connections.
In this scenario, a maximumPoolSize of 10 could be adequate, adjusting slightly higher to provide buffering for variations and spikes in load.
Tuning Tips
- Always test under load conditions resembling production rather than relying solely on default or arbitrary configurations.
- Monitor using HikariCP’s built-in metrics or integrate with application performance management (APM) tools to gain insights into connection pool behavior.
- Consider using a standby server for failover if your database exceeds its connection limits frequently.
Summary Table
| Aspect | Description |
| Default Value | 10 |
| Determining Factors | Concurrency needs, database capacity, expected workload |
| Potential Risks | Throttled performance or resource exhaustion |
| Custom Configuration | Example: setMaximumPoolSize(20) |
| Monitoring | Use HikariCP metrics and APM tools for behavior insights |
With a firm grasp on the intricacies of maximumPoolSize and strategic adjustments, you can significantly enhance the robustness and efficiency of your connection pooling strategy, ensuring your application scales gracefully under varying loads.

