簡體   English   中英

Dropwizard應用程序中的管道破損異常

[英]Broken Pipe exception in Dropwizard application

當服務器長時間運行而沒有任何http請求時,出現“管道中斷”異常。 經過一番調查,我發現發生此異常是因為服務器關閉了其數據庫連接,並在連接關閉時客戶端請求資源時發生了。 為了解決這個問題,我將以下內容添加到了jdbc連接網址中

?autoReconnect=true

我還增加了機器上的堆內存,以防萬一。 同樣,沒有很多http客戶端從此dropwizard服務器請求資源。 還有其他可能發生的事情嗎?

錯誤信息供參考

You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.

我有辦法在dropwizard應用程序中配置連接池嗎? 還是將mysqld的“ interactive-timeout”和“ wait_timeout”屬性更改為8小時以上是一種好習慣?

感謝您的幫助,我通過將以下內容添加到yaml文件中解決了此問題

  1. checkConnectionWhileIdletrue
  2. checkConnectionOnReturntrue
  3. checkConnectionOnBorrowtrue

並確保所有事務都已提交,在發生異常的情況下回滾,並在使用后關閉會話。

根據您使用的是JDBiHibernate還是其他工具,我建議使用提供的捆綁軟件來建立連接。 這些捆綁包帶有一個內置池,可以很容易地對其進行配置,如鏈接上的示例所示。

如果您使用純JDBC或其他OR映射器,則始終可以自己編寫托管對象或適當的捆綁包,或者嘗試在啟動過程中直接利用ManagedPooledDatasource

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM