【问题标题】:Set database connection timeout in rails在 Rails 中设置数据库连接超时
【发布时间】:2016-04-28 09:57:59
【问题描述】:

我正在使用 activerecord-oracle_enhanced-enhanced (1.6.6) gem 从 rails 应用程序 (rails 4.2.5) 连接 oracle 数据库
我需要设置数据库连接超时。
以下是database.yml文件中使用的设置,

development:  
    adapter: oracle_enhanced  
    host: 10.10.10.58  
    port: 1521  
    database: TUTSDB  
    username: tutsadmin  
    password: Tuts1234  
    encoding: utf8  
    timeout: 15000  

我已将超时时间指定为 15 秒。
即使在这样做之后,我们也会收到以下错误:
(ActiveRecord::ConnectionTimeoutError) "could not get a database connection within 5 seconds (waited 5.000144774 seconds)
它仅等待连接 5 秒(这是默认超时值)。理想情况下,它应该等待 15 秒。

【问题讨论】:

  • 您的数据库到底有多慢?如果需要那么长时间,这听起来像是一个损坏的配置。是否在连接时解析反向 DNS 名称?
  • 没有。有许多连接,因此无法建立新连接。它等待 5 秒并抛出上述错误。
  • 确保您在开发模式下测试您的应用。您已在此处设置了开发模式的超时时间。或者将其设置为所有模式,然后进行测试。

标签: ruby-on-rails activerecord oracle11g


【解决方案1】:

Timeouts guides好像要设置超时不然:

development:
  database: "(DESCRIPTION=
    (ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))
    (CONNECT_TIMEOUT=5)(TCP_CONNECT_TIMEOUT=5)
    (CONNECT_DATA=(SERVICE_NAME=xe))
  )"

【讨论】:

  • connect_timeout 是否以秒为单位?
  • 从文档看来是这样的
猜你喜欢
  • 2011-01-23
  • 1970-01-01
  • 2015-12-13
  • 2011-06-07
  • 1970-01-01
  • 2016-01-05
  • 2013-01-12
  • 2017-04-21
  • 2022-12-11
相关资源
最近更新 更多