2015-04-07 34 views
0

我正在使用dropwizard服務器來提供http請求。這個dropwizard應用程序支持我的mysql服務器進行數據存儲。但是,當閒置(通宵)時,它會產生一個'斷管異常' 我做了一些我認爲可能有所幫助的事情。我將yaml文件中的jdbc url設置爲'autoConnect = true'。我還添加了一個'checkOnBorrow'屬性。我增加了jvm以使用4gb 這些修復程序都不起作用。 另外wait_timeout和'interactive_timeout for mysql serveris設置爲8小時。 這是否需要更多/更少?空閒服務器上的斷管異常

還有一個配置屬性,可以在dropwizard yaml文件中設置?換句話說,如何在dropwizard中管理連接池?

回答

4

問題:

MySQL服務器配置了超時後,它終止連接池中空閒的所有連接。這在我的情況是默認的(8小時)。但是,數據庫連接池不知道池中已終止的連接。因此,當有新的請求進入時,會從連接池訪問死連接,導致「Broken Pipe」異常。

解決方案: 所以要解決這個問題,我們需要擺脫死亡的連接,並讓池知道,如果它試圖借用的連接是死連接。這可以通過在.yml配置中設置以下來實現。

checkOnReturn:真

checkWhileIdle:真

checkOnBorrow:真

+0

感謝,工作對我很好!但參數是檢查**連接** OnReturn,檢查**連接** WhileIdle並檢查**連接** OnBorrow(Dropwizard 0.9.2) – Elijun