我找不到任何描述unicorn的数据库连接池效应的文档。
Unicorn分叉了几个工作进程。我配置了prefork,关键是不要在worker之间共享数据库连接,所以我在fork之后重置db连接。
我的rails应用程序每个服务器有8个worker,而database.yml中的pool大小是5,然后我看到了45个与mysql的连接。
每个worker都是单线程的,一次处理1个请求。 SQL查询应该是阻塞的。似乎其他4个连接都没用?我可以将池大小设置为1以获得更好的性能吗?
答案 0 :(得分:7)
由于每个工作人员一次只能提供1个请求,因此每个工作人员一次也只能使用一个连接,并且没有任何关系可以获得更多连接。如果将池大小设置为1,则每个Unicorn工作程序应打开一个连接。您可能不会获得明显的性能提升,但您可以通过减少打开的连接来节省资源。