请原谅我的无知,但是是否可以增加 Resque 工作人员的每个 dyno 的进程数?如果是这样,怎么办?
我目前正在使用 Unicorn 为 web dynos 添加并发性,到目前为止效果很好。我想将此扩展到 Resque 工作人员。我按照Heroku 的指南设置并发。
请原谅我的无知,但是是否可以增加 Resque 工作人员的每个 dyno 的进程数?如果是这样,怎么办?
我目前正在使用 Unicorn 为 web dynos 添加并发性,到目前为止效果很好。我想将此扩展到 Resque 工作人员。我按照Heroku 的指南设置并发。
更新:以下解决方案有效,但不推荐。对于 heroku 上的 resque 并发,请使用resque-pool gem。
如果您使用该COUNT=*
选项,这是可能的。您的 procfile 将类似于:
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 任务 isresque:workers
和not resque:work
。
更新说明
COUNT=*
heroku 上的选项和rake resque:workers
生产调用存在重大问题。由于 resque 使用线程启动多个工作人员的方式,所有允许工作人员停止当前作业、重新排队作业和正确关闭(包括取消注册)的 、 等处理都将发生SIGTERM
。SIGKILL
这是因为信号由未被线程捕获的主进程处理。这可能会导致幻影工人在被杀死后很长时间仍留在工人列表中。这可能就是为什么 resque 代码中有一条注释警告 resque:workers 只能在开发模式下使用的原因。