Home Database Mysql Tutorial Spring Boot Database Connection Timeout: How to Effectively Configure Connection Pools?

Spring Boot Database Connection Timeout: How to Effectively Configure Connection Pools?

Dec 10, 2024 am 01:42 AM

Spring Boot Database Connection Timeout: How to Effectively Configure Connection Pools?

Spring Boot Connection Timeout Issue with Database

Issue Summary

Spring Boot applications utilizing Spring Data JPA and Hibernate with MySQL may encounter connection timeout errors. Specifically, the error message "CommunicationsException: The last packet successfully received from the server was >4<24 milliseconds ago" indicates that the connection between the application and the database has timed out.

Possible Solution Using autoReconnect

While using spring.datasource.testonborrow=true and spring.datasource.validationQuery=SELECT 1 is a viable solution, it is not recommended. A better approach involves configuring the connection pool appropriately.

Recommended Solution: Connection Pool Configuration

  1. Set Maximum Number of Connections:

    • spring.datasource.max-active=10
    • This specifies the maximum number of concurrent connections allowed in the pool.
  2. Set Initial and Idle Connection Limits:

    • spring.datasource.initial-size=5
    • This sets the number of initial connections in the pool.
    • spring.datasource.max-idle=5
    • This sets the maximum number of idle connections in the pool.
    • spring.datasource.min-idle=1
    • This sets the minimum number of idle connections in the pool.
  3. Enable Connection Validation:

    • spring.datasource.test-while-idle=true
    • This validates connections while they are idle.
    • spring.datasource.test-on-borrow=true
    • This validates connections when they are retrieved from the pool.
    • spring.datasource.validation-query=SELECT 1
    • This sets the validation query to execute.
  4. Set Validation Period and Idle Timeout:

    • spring.datasource.time-between-eviction-runs-millis=5000
    • This specifies how often to run the validation query.
    • spring.datasource.min-evictable-idle-time-millis=60000
    • This sets the maximum age of an idle connection before it is considered evictable.

By configuring the connection pool in this manner, connections are validated periodically, idle connections are purged regularly, and new connections are acquired when necessary. Spring Boot automatically handles the reconnection process, ensuring that connections are always available.

The above is the detailed content of Spring Boot Database Connection Timeout: How to Effectively Configure Connection Pools?. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot Article Tags

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Reduce the use of MySQL memory in Docker Reduce the use of MySQL memory in Docker Mar 04, 2025 pm 03:52 PM

Reduce the use of MySQL memory in Docker

How do you alter a table in MySQL using the ALTER TABLE statement? How do you alter a table in MySQL using the ALTER TABLE statement? Mar 19, 2025 pm 03:51 PM

How do you alter a table in MySQL using the ALTER TABLE statement?

How to solve the problem of mysql cannot open shared library How to solve the problem of mysql cannot open shared library Mar 04, 2025 pm 04:01 PM

How to solve the problem of mysql cannot open shared library

What is SQLite? Comprehensive overview What is SQLite? Comprehensive overview Mar 04, 2025 pm 03:55 PM

What is SQLite? Comprehensive overview

Run MySQl in Linux (with/without podman container with phpmyadmin) Run MySQl in Linux (with/without podman container with phpmyadmin) Mar 04, 2025 pm 03:54 PM

Run MySQl in Linux (with/without podman container with phpmyadmin)

Running multiple MySQL versions on MacOS: A step-by-step guide Running multiple MySQL versions on MacOS: A step-by-step guide Mar 04, 2025 pm 03:49 PM

Running multiple MySQL versions on MacOS: A step-by-step guide

What are some popular MySQL GUI tools (e.g., MySQL Workbench, phpMyAdmin)? What are some popular MySQL GUI tools (e.g., MySQL Workbench, phpMyAdmin)? Mar 21, 2025 pm 06:28 PM

What are some popular MySQL GUI tools (e.g., MySQL Workbench, phpMyAdmin)?

How do I configure SSL/TLS encryption for MySQL connections? How do I configure SSL/TLS encryption for MySQL connections? Mar 18, 2025 pm 12:01 PM

How do I configure SSL/TLS encryption for MySQL connections?

See all articles