Ruby for Rack with Puma 中的 Heroku PostgreSQL 数据库连接池

Heroku PostgreSQL database connection pooling in Ruby for Rack with Puma

更新:我尝试将 PostgreSQL 连接对象的存储从常量 POSTGRES 更改为 class 变量 @@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连接对象。

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

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

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

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

请看connection_pool gem。应该有帮助。