2013-03-27 43 views
6

我正在使用rails 3.2 +獨角獸+ postgres數據庫,我有一個問題 - 獨角獸如何處理數據庫連接?獨角獸不關閉數據庫連接

如何我的理解:

  1. 麒麟主進程叉X子進程。
  2. 每個子進程設置DB連接 - 在before_fork中關閉,在after_fork中建立連接。 (如果我們使用rails DB連接池,我們創建Y(從database.yml)每個進程的DB連接) - 即如果進程正在工作(它總是工作,直到我們不殺它),我們保持連接打開並且每個Web請求都使用相同的連接(在after_fork中打開)。
  3. 打開的連接將在postgres(或任何其他數據庫)中顯示爲空閒或活動狀態。

這是正確的還是我錯過了什麼?

回答

8

是的你是對的。 如果在unicorn.conf中設置「worker_processes 5」,並在database.yml中設置「pool:4」,則會創建與數據庫的連接。

3

我寫信給Eric Wong,他是獨角獸寶石的創始人,他證實它是正確的。