簡體   English   中英

socketTimeout之后jruby activerecord-jdbc-adapter連接池未重新連接

[英]jruby activerecord-jdbc-adapter connection pool is not reconnecting after socketTimeout

我正在使用jruby和mysql2 gem版本mysql2(0.3.11)。 我的database.yml看起來像這樣。

production:

  <<: *common
  database: database
  host: host
  port: 3306
  username: username
  password: ********
  pool: 5
  pool_initial: true
  checkout_timeout: 0.3
     properties:
     connectTimeout: 250
     socketTimeout: 90000 

在我的情況下,其中一個查詢超過了90秒的套接字超時,此后,使用來自池的相同連接的每個請求都開始失敗。 我期望mysql2應該重新連接,但是在我的情況下卻沒有重新連接。 我查看了文檔,但找不到任何東西。

Edit1:我做了更多的調試工作,我在生產中使用了activerecord-jdbc-adapter而不是mysql2 gem,我嘗試使用autoReconnect來解決問題:true,但是似乎不建議這樣做,因為它會破壞一致性。 http://pages.citebite.com/p4x3a0r8pmhm

Edit2:版本-jruby(1.7.4)和activerecord-jdbc-adapter(1.2.9.1)

首先,如果您使用的是JRuby,則不能使用mysql2 gem。

您正在使用JDBC驅動程序(jdbc-mysql gem-您已正確識別出該驅動程序)。

reconnect: true應該已經起作用(映射到autoReconnect: true屬性),沒有重新連接AR的池可能無法正確檢測到無效連接。 這實際上可能取決於Rails的版本,也可能被視為activerecord-jdbc-adapter錯誤。

暫無
暫無

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

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