2012-04-16 32 views
13

Tôi mới đến c3op, và bối rối về việc sử dụng:Việc sử dụng c3p0.idle_test_period.

c3p0.idle_test_period 

Trong liên kết này: HowTo configure the C3P0 connection pool

idleTestPeriod : Must be set in hibernate.cfg.xml (or hibernate.properties), Hibernate default: 
0, If this is a number greater than 0, c3p0 will test all idle, pooled but unchecked-out 
connections, every this number of seconds. 

mục đích của loại hình này của thử nghiệm là gì (idel, kết nối gộp lại) và mối quan hệ giữa c3p0.idle_test_period và c3p0.timeout?

Trả lời

23

Máy chủ cơ sở dữ liệu có thể đóng kết nối ở phía sau sau một khoảng thời gian nhất định - gây ra một số lỗi trong ứng dụng của bạn, vì nó sẽ cố gắng gửi truy vấn trên kết nối không còn khả dụng ở phía máy chủ.

Để tránh điều này, bạn có thể để cho hồ bơi định kỳ kiểm tra kết nối (Hãy suy nghĩ về ping) để có hiệu lực. Đây là những gì idle_test_period dành cho.

timeout là khoảng thời gian sau đó hồ bơi sẽ xóa kết nối khỏi hồ bơi, vì kết nối không được kiểm tra (đã sử dụng) trong một thời gian và hồ chứa có nhiều kết nối hơn c3pO.min_size.

+8

Hãy ghi nhớ rằng giá trị hibernate.c3p0.idle_test_period không bao giờ vượt quá giá trị của hibernate.c3p0.timeout. Nếu không, C3P0 sẽ không bao giờ phát hiện các kết nối đã bị đóng. – MichaelCleverly

+0

@MichaelCleverly Tôi cho rằng trong trường hợp đó, nó sẽ loại bỏ các kết nối từ hồ bơi thay vì kiểm tra chúng cho liveness ... đáng thực hiện chắc chắn nhưng không nhất thiết phải "không bao giờ" tôi nghĩ :) – rogerdpack

+0

Một kết nối xấu có thể xảy ra cho nhiều lý do hơn so với thời gian chờ nhàn rỗi phía máy chủ - có các lớp HA có thể kích hoạt nó khi xảy ra chuyển đổi dự phòng, ví dụ. –

-1

Tôi nghĩ rằng cài đặt này được sử dụng trong chế độ ngủ đông để xác thực kết nối được gộp sau mỗi vài giây. Xem xét một kịch bản nếu ở phía cơ sở dữ liệu, mật khẩu được thay đổi. Hibernate đã gộp các kết nối trên mật khẩu cũ. Vì vậy, nó là vi phạm an ninh có hồ bơi với mật khẩu sai.So khi hibernate sẽ xác nhận sau vài giây nó. Nó sẽ làm mất hiệu lực kết nối gộp lại.

Các vấn đề liên quan