我有点犹豫如何从工头设置中设置 unicorn worker 的数量
web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb
然后在运行时 foreman start -c web=16
或 unicorn ,只需设置worker_processes 16
如果我在设置 worker_process=2
的同时设置 foreman start -c web=8
,这意味着它总共只会运行 16
这只是一种偏好还是有什么我不明白的地方?有人可以解释一下吗?
最佳答案
foreman start -c web=16 每次 fork 时将启动 16 个主 unicorn 进程,但默认情况下会设置许多工作进程。
foreman start -c web=1 同时将worker_processes设置为16将启动一个主 unicorn 进程,该进程将 fork 16个工作进程。
主要区别在于您让谁控制流程。 unicorn master 进程的构建理念是跟踪其 fork 进程并了解它们何时被挂起等,以便进行清理和重新启动。 foreman 进程只知道主 unicorn 进程,而不知道主 unicorn 进程派生的任何进程。
unicorn 机架服务器专门用于替换运行多个进程(例如 4 个瘦服务器),而是运行单个主进程并让它处理 fork 工作进程的管理。这允许单个进程了解为机架应用程序提供服务的所有其他进程。
简而言之 - 运行单个 unicorn 进程并在配置文件中添加工作人员数量。别让工头干这事。
关于ruby-on-rails - 使用工头从网络设置 unicorn worker 的数量与从 unicorn 本身设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15072821/