2012-06-22 35 views
5

Chúng tôi có một webapp chạy Hibernate/C3PO 4.1.4.Final, Jetty, Java 6 và Mysql 5.1.63.MySQL/Hibernate ngẫu nhiên có "Lỗi liên kết truyền thông"

javax.persistence.PersistenceException: org.hibernate.exception.JDBCConnectionException: Truyền thông liên kết thất bại

Các gói cuối cùng nhận được thành công từ máy chủ là 238.519 mili giây trước. Gói cuối cùng được gửi thành công tới máy chủ là 0 mili giây trước.

phần tài sản persistence.xml chúng tôi trông như thế này ...

<properties> 
     <property name="hibernate.show_sql" value="false"/> 
     <!--Begin Credentials --> 
     <property name="hibernate.connection.url" 
        value="${rp.config.db.url}&amp;useUnicode=true&amp;characterEncoding=UTF-8"/> 
     <property name="hibernate.connection.username" value="${rp.config.db.user}"/> 
     <property name="hibernate.connection.password" value="${rp.config.db.password}"/> 
     <!--End Credentials --> 
     <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/> 
     <property name="hibernate.dialect" value="com.printlogix.rp.server.utils.Mysql5BitBooleanDialect"/> 
     <property name="hibernate.hbm2ddl.auto" value="validate"/> 
     <!--C3PO --> 
     <property name="hibernate.connection.provider_class" 
        value="org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider"/> 
     <property name="hibernate.c3p0.acquire_increment" value="25"/> 
     <property name="hibernate.c3p0.idle_test_period" value="60"/> 
     <property name="hibernate.c3p0.timeout" value="120"/> 
     <property name="hibernate.c3p0.max_size" value="150"/> 
     <property name="hibernate.c3p0.min_size" value="25"/> 
     <property name="hibernate.c3p0.max_statement" value="0"/> 
     <property name="hibernate.c3p0.preferredTestQuery" value="select 1;"/> 

    </properties> 

thời gian chờ của chúng tôi trên MySQL được thiết lập đến 600 giây. Chúng tôi không biết làm thế nào điều này xảy ra 1/5 lần. Máy chủ có rất ít tải, cơ sở dữ liệu là tương đối nhỏ, các servlet tất cả chạy trong vài giây.

Bất kỳ ai có ý tưởng nào?

+0

Có sự cố nào trong giao tiếp giữa các máy tính lưu trữ Jetty và MySQL không? Một số loại tường lửa? –

+0

các giao dịch mà bạn đang thực hiện để gây ra trường hợp như vậy là gì? Chúng kéo dài bao lâu? Nếu chúng kéo dài hơn thời gian chờ của MySQL, sau đó thử phá vỡ giao dịch thành nhiều giao dịch theo lô. Nguồn: Đã có ở đó, thực hiện điều đó (nếu đó là trường hợp tôi mô tả :)) –

+0

Trước hết là mysql của bạn hoạt động? và tham số này có trỏ tới url đúng -rp.config.db.url không? – Chan

Trả lời

0

Chúng tôi cũng phải đối mặt với cùng một vấn đề trên máy chủ sản xuất. Theo mặc định, MySQL đặt lại các kết nối trong mỗi 8 giờ và do đó chúng tôi nhận được lỗi giao tiếp trong hầu hết 8 giờ vì chúng tôi đã truy cập cơ sở dữ liệu liên tục với các công việc đã lên lịch. Chúng tôi đã giải quyết nó bằng cách tăng 'wait_timeout' lên 14 ngày và khi bảo trì của chúng tôi được lên lịch sau mỗi 15 ngày, chúng tôi khởi động lại từng máy chủ MySQL là cụm DB của chúng tôi (Chúng tôi có bản sao Master-Master tại chỗ). Với cách tiếp cận chúng tôi đã không nhận được bất kỳ liên kết truyền thông thất bại sau đó. Trong thực tế một số thời gian chúng tôi không khởi động lại máy chủ trong mỗi 15 ngày nhưng vẫn không có lỗi (chạm gỗ). :) Theo mô tả của bạn có vẻ như bạn đã đặt wait_timeout là 10 phút, vì vậy tôi đoán bạn sẽ nhận được các lỗi với chênh lệch múi giờ khoảng 10 phút. Xin lưu ý rằng không cần phải có lỗi này trên mọi kết nối MySQL được đặt lại sau wait_timeout. Nó sẽ chỉ có ở đó nếu bạn đang truy cập cơ sở dữ liệu tại thời điểm đó. :)

0

Tôi nghĩ rằng this post có thể hữu ích. Nếu đúng như vậy, việc tăng giá trị wait_timeout chỉ trì hoãn thời gian nhiều hơn, thay vì giải quyết vấn đề.

Vấn đề có thể liên quan với điều này:

  • Bạn mở một phiên Hibernate
  • Do một số điều mà mất nhiều thời gian hơn so với giá trị của wait_timeout của cơ sở dữ liệu của bạn
  • Bạn cố gắng sử dụng hibernate này phiên. Thông báo mà bạn nhận xét ở đây sẽ xuất hiện

Tôi đã ghi lại trường hợp trong here nếu bạn quan tâm.

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