【问题标题】:Heroku PostgreSQL database connection pooling in Ruby for Rack with PumaRuby for Rack 和 Puma 中的 Heroku PostgreSQL 数据库连接池
【发布时间】:2015-08-21 15:05:21
【问题描述】:

更新:我尝试将 PostgreSQL 连接对象的存储从常量 POSTGRES 更改为类变量 @@pg。那并没有解决问题。然后,我尝试将其更改为全局变量$pg。这似乎奏效了!但是,我仍然希望最终实现数据库连接池,这样我就可以拥有一个最多包含 5 个(左右)数据库连接的池来处理请求,而不仅仅是一个用于所有请求的全局连接。结束更新

我在 Heroku 上托管 Acani Chats REST Server

第一个请求正常,但后续请求无法连接到 PostgreSQL 数据库。

我收到以下错误:

Rack app error: #<PG::UnableToSend: SSL error: decryption failed or bad record mac>

Rack app error: #<PG::UnableToSend: no connection to the server>

发生了什么事?

/config/application.rb 中,我将常量POSTGRES 定义为PostgreSQL 连接对象。

我应该使用全局变量还是类变量而不是常量来保持连接实例?

/config/routes.rb 中,我定义了Rack call 方法。

我想学习如何使用 Puma 和 PostgreSQL 实现 database connection pooling in Ruby for Rack

【问题讨论】:

    标签: ruby postgresql heroku connection-pooling rack


    【解决方案1】:

    Puma 是线程化的,因此您需要一个到 PostgreSQL 的线程安全连接池,否则并发请求将全部同时使用同一个连接,这是意料之外的。

    请查看connection_pool gem。它应该会有所帮助。

    【讨论】:

      猜你喜欢
      • 2012-08-13
      • 1970-01-01
      • 1970-01-01
      • 2014-03-04
      • 1970-01-01
      • 2014-03-30
      • 2013-04-19
      • 2013-10-07
      • 2014-04-09
      相关资源
      最近更新 更多