【发布时间】:2014-05-20 13:39:24
【问题描述】:
我正在 Heroku 上运行一个 Rails 应用程序。
我有一个测功机。我正在使用 Hobby Basic 数据库,每月 9 美元,连接限制为 20。
我的应用在 Unicorn 上运行。但是当进行多个数据库调用时,它仍然很慢。
这是我的 unicorn.rb 文件中的内容:
# config/unicorn.rb
worker_processes 3
timeout 30
preload_app true
before_fork do |server, worker|
Signal.trap 'TERM' do
puts 'Unicorn master intercepting TERM and sending myself QUIT instead'
Process.kill 'QUIT', Process.pid
end
defined?(ActiveRecord::Base) and
ActiveRecord::Base.connection.disconnect!
end
after_fork do |server, worker|
Signal.trap 'TERM' do
puts 'Unicorn worker intercepting TERM and doing nothing. Wait for master to sent QUIT'
end
defined?(ActiveRecord::Base) and
ActiveRecord::Base.establish_connection
end
本文讨论管理并发连接:https://devcenter.heroku.com/articles/concurrency-and-database-connections
但是,我仍然感到困惑。使用我当前的设置,如何同时允许多个数据库连接?在我的数据库允许的最大连接数下(20)?如果这里有处理过在 Heroku 上扩展 Rails 应用程序的人能指出我正确的方向,我将不胜感激。
【问题讨论】:
-
在我看来,每个数据库连接都需要一个“独角兽”工作者。每个工人都有一个连接。当然,我从来没有使用过独角兽,这正是使用fork的样子。
标签: ruby-on-rails postgresql heroku unicorn heroku-postgres