【问题标题】:Heroku Postgres connection capped at 5/20Heroku Postgres 连接上限为 5/20
【发布时间】:2018-08-18 16:11:54
【问题描述】:

我有一个使用 Postgres 在 Heroku 免费计划上运行的 Sinatra 应用程序,我尝试将数据库连接设置为 20,但在我推送并运行 heroku pg:info 后,连接仍然是 5/20。即使我尝试对其进行 loader.io 负载测试,它也不会使用所有 20 个连接。

所以我想知道我该怎么做才能让它利用所有 20 个可用连接,或者我在这里有一些误解?

# database.yml (for ActiveRecord)
production:
   adapter: postgresql
   encoding: unicode
   database: mydb
   username: <%= ENV['PG_USER'] %>
   password: <%= ENV['PG_PASS'] %>
   pool: <%= ENV['DB_POOL'] || ENV['RAILS_MAX_THREADS'] || 20 %>

# Procfile
web: bundle exec puma -t 5:20 -p $PORT

# puma.rb
preload_app!

on_worker_boot do
  ActiveSupport.on_load(:active_record) do
    ActiveRecord::Base.establish_connection
  end
end

# config.ru
require_relative './config/init'
use Rack::SSL if ENV['RACK_ENV'] == 'production'
run Sinatra::Application

DB_POOL 变量在 Heroku 上已设置为 20,但它仍然没有做任何事情。任何帮助将不胜感激。

【问题讨论】:

  • Heroku/数据库提供者的文档中哪里说你得到了 20?
  • @iain running heroku pg:info 总是显示我只使用了总连接数的 5/20。 devcenter.heroku.com/articles/heroku-postgres-plans#hobby-tier 还说我的爱好开发计划应该允许最多 20 个连接。
  • 您是如何测试数据库连接的?我的意思是,让 Puma 启动一个新线程只是意味着一个新的连接,但我怀疑你需要长时间运行对 Postgres 的每次调用,否则你不会用完池,我猜想不需要连接它会落回池中并尽可能保持在最低限度(这就是池通常的编写方式)。尝试编写一个非常慢的查询,看看是否会有所不同。
  • @iain 我更新了代码以包含我的 config.ru 和 puma.rb 文件,因为我猜它们与启动 puma 有关。你能发现这些有什么问题吗?我现在真的不知道。

标签: ruby postgresql heroku sinatra puma


【解决方案1】:

我通过使用 -C config/puma.rb 运行 puma 解决了这个问题

【讨论】:

  • 很高兴你把它修好了。
猜你喜欢
  • 2020-03-19
  • 2019-02-04
  • 2019-02-16
  • 2016-10-29
  • 2020-03-03
  • 2018-05-19
  • 2018-07-13
  • 2018-01-24
  • 2014-09-17
相关资源
最近更新 更多