Unicorn不关闭数据库连接

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

我的理解:

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

这是正确的还是我错过了什么?

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

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