我正在使用rails 3.2 unicorn postgres DB,我有一个问题 – 独角兽如何处理数据库连接?
我的理解:
>独角兽主进程分叉X子进程.
>每个子进程设置DB连接 – 在before_fork中关闭,在after_fork中建立连接.
>我们使用每个进程的连接(如果我们使用rails DB连接池,我们创建Y(来自database.yml)每个进程的数据库连接) – 即如果进程正在工作(它始终有效,直到我们不杀死它)我们保持连接打开并且每个Web请求都使用相同的连接(在after_fork中打开).
>打开的连接将在postgres(或任何其他数据库)中显示为空闲或活动.
这是正确的还是我错过了什么?
解决方法
是的,你是对的. 如果在unicorn.conf中设置“worker_processes 5”,在database.yml中设置“pool:4”,则将创建与数据库的20个连接.