亲们,最近遇到一个问题。项目是部署在 heroku 上的。server 使用 unicorn, 另外还有 resque 和 clockwork 两个 worker 进程。所以 procfile 的内容如下:
web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb
worker: bundle exec rake resque:work QUEUE=*
clock: bundle exec clockwork clock.rb
部署到项目之后,就发现这 3 个进程,最近几乎一天就会被重启一次。我想知道这是为什么?我们没有做什么操作。
下面的图片中显示有 119 个 resque worker 但其实是只有一个。
这三个进程都需要使用 Redis 进行相互之间的通信。最近发现 Redis 有时会连不上而报错,这会是 clockwork, resque 和 unicorn 重启的原因的吗?我想这两个 gem 包应该考虑到这个问题的吧!
clockwork 不能倒,因为里面有抓实时数据的线程,resque 其实也不能倒,clockwork 中的一些任务需要 resque 来做。resque 其实倒了立即启动也没事,但是经常发现 resque 倒了再启动,有些 clockwork 的任务它没有及时做!好像 resque 重新启动有一小时的时间差!
顺便说一句我的机器上,这些代码都是工作相当正常的。
本人是刚毕业,然后进公司自学 ruby,没有人指导,自己还要负责一个项目,遇到问题大都自己独立解决,不过这个关于 heroku 的问题实在是很难解决!请各位高手帮忙看看,感激不尽!