我在设置从工头设置的独角兽工人数量之间有点困惑
web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb
然后在运行foreman start -c web=16
或独角兽只需设置worker_processes 16
如果我在设置foreman start -c web=8
时设置worker_process=2
,这意味着它将只运行16个
这只是一种偏好还是有些我不理解的东西?有人可以解释一下。
答案 0 :(得分:3)
foreman start -c web = 16将启动16个master unicorn进程,每个进程都会分叉,但默认情况下会设置很多工作进程。
foreman start -c web = 1,而将worker_processes设置为16将启动一个主unicorn进程,该进程将分叉16个工作进程。
主要区别在于您是谁控制流程。独角兽主进程是围绕这样的想法建立的,即跟踪它的分叉进程并知道它们何时被挂起等,以便进行清理和重新启动。工头流程只会知道主独角兽流程,而不是主麒麟流程分叉的任何流程。
独角兽机架服务器专门用于替换正在运行的多个进程(例如4个瘦服务器),而是运行单个主进程并让它处理分叉工作进程的管理。这允许单个进程了解为机架应用程序提供服务的所有其他进程。
简而言之 - 运行单个独角兽进程并在配置文件中添加#个worker。不要让工头这样做。