Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
与Heroku上的Resque并发(每个节点运行多个worker)_Heroku_Resque_Unicorn - Fatal编程技术网

与Heroku上的Resque并发(每个节点运行多个worker)

与Heroku上的Resque并发(每个节点运行多个worker),heroku,resque,unicorn,Heroku,Resque,Unicorn,请原谅我的无知,但是是否有必要增加Resque工人每个dyno的进程数?如果是,怎么做 我目前正在使用Unicorn将并发性添加到web dynos中,到目前为止,它工作得非常好。我想把这一点扩展到重新招聘员工。我随后设置了并发性。更新:下面的解决方案可行,但不推荐使用。对于heroku上的resque并发,请使用gem 如果使用COUNT=*选项,则可能会出现这种情况。您的proc文件将类似于: web: bundle exec unicorn -p $PORT -c ./config/un

请原谅我的无知,但是是否有必要增加Resque工人每个dyno的进程数?如果是,怎么做


我目前正在使用Unicorn将并发性添加到web dynos中,到目前为止,它工作得非常好。我想把这一点扩展到重新招聘员工。我随后设置了并发性。

更新:下面的解决方案可行,但不推荐使用。对于heroku上的resque并发,请使用gem


如果使用
COUNT=*
选项,则可能会出现这种情况。您的proc文件将类似于:

web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb
resque: env TERM_CHILD=1 COUNT=2 RESQUE_TERM_TIMEOUT=6 QUEUE=* bundle exec rake resque:workers
请务必注意,Procfile中的rake任务是
resque:workers
not
resque:work


更新说明

在heroku上的生产中,
COUNT=*
选项和
rake resque:workers
调用存在重大问题。由于resque使用线程启动多个Worker的方式,所有允许Worker停止当前作业、重新排队作业和正确关闭(包括取消注册)的
SIGTERM
SIGKILL
等处理都将发生。这是因为信号由主进程处理,而不是由线程捕获。这可能导致幻影工人在被杀后很长时间仍留在工人列表中。这可能就是resque代码中警告resque:worker只能在开发模式中使用的原因