2015-05-19 16 views
7

tôi nhận được lỗi này nếu ứng dụng Spring Boot của tôi không hoạt động trong vài giờ (ví dụ như trong đêm):Xuân Boot: Truyền thông liên kết thất bại sau một giờ không hoạt động với Hibernate, JDBC và MySQL

2015-05-19 09:16:32.666 WARN 20582 --- [http-nio-8080-exec-6] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 0, SQLState: 08S01 
2015-05-19 09:16:32.668 ERROR 20582 --- [http-nio-8080-exec-6] o.h.engine.jdbc.spi.SqlExceptionHelper : Communications link failure 

The last packet successfully received from the server was 29.792.613 milliseconds ago. The last packet sent successfully to the server was 6 milliseconds ago. 

Đang cố gắng để giải quyết vấn đề này, tôi đọc mà MySQL có một tham số có tên wait_timeout setted theo mặc định đến 8 giờ (28800 giây) và sau thời gian này tất cả các kết nối hoạt động của tôi đều đóng cửa, vì vậy mùa xuân của tôi khởi động ứng dụng chấm hết cho công trình ...

Câu hỏi của tôi là:

  • Làm cách nào để tránh sự cố này?
  • Tôi có nên tăng giá trị cho thông số như vậy không?
  • Có bất kỳ hạn chế nào tăng giá trị như vậy không? (Nó luôn luôn có thể là một giá trị đạt được bởi ứng dụng của tôi nếu nó không hoạt động quá lâu ..: /)
  • Không có giải pháp nào khác bằng cách sử dụng Khởi động mùa xuân (giống như cuộc thăm dò hoặc một cái gì đó tương tự)?

EDIT

Có tương tự/câu hỏi hữu ích khác tại đây:

Từ tài liệu tham khảo trên, chúng tôi có thể kết luận rằng một giải pháp là thêm C3P0 thư viện như bổ sung và đúng cách cấu hình nó để tránh những lỗi liên kết truyền thông ..

Đây có phải là giải pháp duy nhất tôi có? Không có giải pháp nào "tích hợp" hơn với Spring/Spring Boot (tức là không thêm thư viện bên ngoài)?

+0

Bạn nên đọc qua các ý kiến ​​C3P0. Có các chỉnh sửa và tinh chỉnh của MySQL cho URL kết nối của bạn (truy vấn xác thực và tự động kết nối lại là quan trọng nhất). –

+0

Cảm ơn @ M.Deinum vì đề xuất của bạn. Đọc ở đây http://stackoverflow.com/questions/667289/why-does-autoreconnect-true-not-seem-to-work có vẻ như thiết lập 'autoReconnect'in chuỗi kết nối không được đề xuất .. Vì vậy, tôi sẽ để thử một số tùy chọn cho nguồn dữ liệu của tôi: 'testWhileIdle',' timeBetweenEvictionRunsMillis' và 'validationQuery'. Tuy nhiên tôi vẫn đang chờ đợi một số câu trả lời tốt và "dứt khoát" :) – Andrea

Trả lời

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