我正在使用 Rails 3.2 + unicorn + postgres DB,我有一个问题 - unicorn 如何处理数据库连接?
我的理解是:
- unicorn主进程分叉X子进程。
- 每个子进程建立数据库连接——在before_fork中关闭,在after_fork中建立连接。
- 我们使用每个进程的连接(如果我们使用rails DB连接池,我们为每个进程创建Y(来自database.yml)DB连接) - 即如果进程正在工作(它总是工作直到我们不杀死它)我们保持连接打开并且每个Web 请求使用相同的连接(在 after_fork 中打开)。
- 打开的连接将在 postgres(或任何其他数据库)中显示为空闲或活动。
这是正确的还是我错过了什么?
是的你是对的。
如果您在 unicorn.conf 中设置“worker_processes 5”,并在 database.yml 中设置“pool: 4”,将创建 20 个与数据库的连接。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)