6

Rails 3.2 + unicorn + postgres DB を使用していますが、質問があります - unicorn は DB 接続をどのように処理しますか?

私が理解する方法:

  1. ユニコーン マスター プロセスが X 子プロセスをフォークします。
  2. 各子プロセスのセットアップ DB 接続 – before_fork で閉じ、after_fork で接続を確立します。
  3. プロセスごとに接続を使用します(Rails DB接続プールを使用する場合、プロセスごとにY(database.ymlから)DB接続を作成します)-つまり、プロセスが機能している場合(プロセスを強制終了しない限り常に機能します)、接続を開いたままにしておきますWeb リクエストは、(after_fork で開かれた) 同じ接続を使用します。
  4. 開かれた接続は、postgres (または他の DB) でアイドルまたはアクティブとして表示されます。

それは正しいですか、それとも何かを逃しましたか?

4

2 に答える 2

8

はい、あなたは正しいです。unicorn.conf に「worker_processes 5」、database.yml に「pool: 4」を設定すると、データベースへの接続が 20 個作成されます。

于 2013-03-28T10:03:44.843 に答える
3

私は、Unicorn gem の創設者である Eric Wong に手紙を書きました。彼はそれが正しいことを確認しました。

于 2013-03-28T14:33:13.920 に答える