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。应该有帮助。
更新:我尝试将 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。应该有帮助。