Unicorn不关闭数据库连接

时间:2013-03-27 14:33:00

标签: ruby-on-rails unicorn postgresql-9.2

我正在使用rails 3.2 + unicorn + postgres DB,我有一个问题 - 独角兽如何处理数据库连接?

我的理解:

  1. 独角兽主进程分叉X子进程。
  2. 每个子进程设置数据库连接 - 在before_fork中关闭,在after_fork中建立连接。
  3. 我们使用每个进程的连接(如果我们使用rails DB连接池,我们创建Y(来自database.yml)每个进程的DB连接) - 即如果进程正在工作(它始终有效,直到我们不杀死它)我们保持连接打开并且每个Web请求都使用相同的连接(在after_fork中打开)。
  4. 打开的连接将在postgres(或任何其他数据库)中显示为空闲或活动状态。
  5. 这是正确的还是我错过了什么?

2 个答案:

答案 0 :(得分:8)

是的,你是对的。 如果在unicorn.conf中设置“worker_processes 5”,在database.yml中设置“pool:4”,则将创建与数据库的20个连接。

答案 1 :(得分:3)

我写信给Eric Wong,他是独角兽宝石的创始人,他证实这是正确的。