与Heroku上的Resque并发(每个节点运行多个worker)
请原谅我的无知,但是是否有必要增加Resque工人每个dyno的进程数?如果是,怎么做与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
我目前正在使用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
和notresque:work
更新说明 在heroku上的生产中,
COUNT=*
选项和rake resque:workers
调用存在重大问题。由于resque使用线程启动多个Worker的方式,所有允许Worker停止当前作业、重新排队作业和正确关闭(包括取消注册)的SIGTERM
、SIGKILL
等处理都将发生。这是因为信号由主进程处理,而不是由线程捕获。这可能导致幻影工人在被杀后很长时间仍留在工人列表中。这可能就是resque代码中警告resque:worker只能在开发模式中使用的原因