Như @swanliu đã chỉ ra rằng đó là do kết nối kém.
Tuy nhiên, trước khi điều chỉnh thời gian chờ của máy chủ và thời gian chờ của máy khách, trước tiên tôi sẽ thử và sử dụng chiến lược tổng hợp kết nối tốt hơn.
Tổng hợp kết nối
Bản thân Hibernate thừa nhận rằng chiến lược tổng hợp kết nối của nó là tối thiểu
Cá nhân tôi sử dụng C3P0
. tuy nhiên có sẵn các lựa chọn thay thế khác bao gồm DBCP
.
Kiểm tra
Dưới đây là cấu hình tối thiểu của C3P0 được sử dụng trong ứng dụng của tôi:
<property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<property name="c3p0.acquire_increment">1</property>
<property name="c3p0.idle_test_period">100</property> <!-- seconds -->
<property name="c3p0.max_size">100</property>
<property name="c3p0.max_statements">0</property>
<property name="c3p0.min_size">10</property>
<property name="c3p0.timeout">1800</property> <!-- seconds -->
Chỉnh sửa:
Tôi đã cập nhật tệp cấu hình ( Tham chiếu
), vì tôi vừa sao chép, dán một cái cho dự án của mình trước đó. Thời gian chờ lý tưởng sẽ giải quyết được vấn đề, Nếu điều đó không hiệu quả với bạn, có một giải pháp đắt tiền mà tôi nghĩ bạn có thể xem qua:
Tạo một tệp “c3p0.properties” phải nằm trong thư mục gốc của classpath (tức là không có cách nào để ghi đè nó cho các phần cụ thể của ứng dụng). ( Tham khảo )
# c3p0.properties
c3p0.testConnectionOnCheckout=true
Với cấu hình này, mỗi kết nối đều được kiểm tra trước khi sử dụng. Tuy nhiên, nó có thể ảnh hưởng đến hiệu suất của trang web.