6

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

我是怎么理解的:

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

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

4

2 回答 2

8

Yes you are right. If you set "worker_processes 5" in unicorn.conf, and "pool: 4" in database.yml, will be create d 20 connections to database.

于 2013-03-28T10:03:44.843 回答
3

我写信给 Eric Wong,他是 unicorn gem 的创始人,他确认这是正确的。

于 2013-03-28T14:33:13.920 回答