Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Kết nối với Db chết sau> 4 <24 trong chế độ ngủ đông của Spring-boot jpa

Cách dễ nhất là chỉ định autoReconnect trong url JDBC, mặc dù đây không phải là cách tiếp cận được khuyến nghị.

spring.datasource.url = jdbc:mysql://localhost:3306/test?autoReconnect=true

Điều này có thể gây ra các vấn đề khi bạn có kết nối đang hoạt động và trong khi giao dịch, điều gì đó sẽ xảy ra và kết nối lại sẽ xảy ra. Nó sẽ không gây ra sự cố khi kết nối được xác thực khi bắt đầu giao dịch và kết nối mới được tạo ra khi bắt đầu.

Tuy nhiên, tốt hơn hết là bạn nên bật xác thực các kết nối của mình trong suốt thời gian tồn tại của ứng dụng. Đối với điều này, bạn có thể chỉ định một số thuộc tính .

Trước tiên, hãy bắt đầu bằng cách chỉ định số lượng kết nối tối đa mà bạn cho phép cho nhóm. (Để biết cách xác định kích thước tổng hợp tối đa, hãy đọc điều này ).

spring.datasource.max-active=10

Bạn cũng có thể muốn chỉ định số lượng kết nối ban đầu

spring.datasource.initial-size=5

Tiếp theo, bạn muốn chỉ định số lượng kết nối không hoạt động tối thiểu và tối đa.

spring.datasource.max-idle=5
spring.datasource.min-idle=1

Để xác thực kết nối, bạn cần chỉ định một truy vấn xác thực và thời điểm xác thực. Khi bạn muốn xác thực định kỳ, thay vì khi kết nối được truy xuất từ ​​nhóm (điều này để ngăn kết nối bị hỏng trong nhóm của bạn).

spring.datasource.test-while-idle=true
spring.datasource.test-on-borrow=true
spring.datasource.validation-query=SELECT 1

LƯU Ý: Việc sử dụng validation-query thực sự không được khuyến khích vì JDBC4 có một cách tốt hơn / khác để thực hiện xác thực kết nối. HikariCP sẽ tự động gọi phương thức xác thực JDBC khi có sẵn.

Bây giờ bạn cũng đang xác thực khi kết nối không hoạt động, bạn cần chỉ định tần suất bạn muốn chạy truy vấn này cho các kết nối và khi nào một kết nối được coi là không hoạt động.

spring.datasource.time-between-eviction-runs-millis=5000 (this is the default)
spring.datasource.min-evictable-idle-time-millis=60000 (this is also default)

Tất cả điều này sẽ kích hoạt xác thực các kết nối (không hoạt động) của bạn và khi một ngoại lệ xảy ra hoặc thời gian không hoạt động trôi qua, các kết nối của bạn sẽ bị xóa khỏi nhóm.

Giả sử bạn đang sử dụng Tomcat JDBC làm nhóm kết nối cái này là một bài đọc hay về những gì và cách định cấu hình.

CẬP NHẬT: Spring Boot 2.x đã chuyển nhóm kết nối mặc định thành HikariCP thay vì Tomcat JDBC.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tổng quan về PostgreSQL &MySQL Cross Replication

  2. Làm cách nào để chặn đầu ra tiêu đề cột cho một câu lệnh SQL?

  3. Làm cách nào để tạo định dạng json với mysql group-concat?

  4. Làm cách nào để MySQL sử dụng INDEX cho truy vấn chế độ xem?

  5. Cách thực hiện nâng cấp cuộn cho MySQL