我找不到任何描述 unicorn 的数据库连接池效果的文档.
Unicorn forks 几个工作进程。我配置了 prefork,不要在 worker 之间共享数据库连接是很重要的,所以我在 fork 之后重置了数据库连接。
我的 Rails 应用程序每个服务器有 8 个工作人员,database.yml 中的池大小为 5,然后我看到 45 个到 mysql 的连接。
每个工作线程都是单线程的,一次处理 1 个请求。 SQL 查询应该是阻塞的。似乎其他 4 个连接没有用?我可以将池大小设置为 1 以获得更好的性能吗?
最佳答案
由于每个 worker 一次只能处理 1 个请求,因此每个 worker 一次也只能使用一个连接,拥有更多连接没有任何好处。如果将池大小设置为 1,则每个 Unicorn worker 应该打开一个连接。您可能不会获得明显的性能提升,但可以通过减少打开的连接来节省资源。
关于mysql - unicorn rails 真的需要一个数据库连接池吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8663529/