<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>yuexiahandao (Gavin)</title>
    <link>https://ruby-china.org/yuexiahandao</link>
    <description/>
    <language>en-us</language>
    <item>
      <title>Heroku 重启 resque 和 clockwork 的问题</title>
      <description>&lt;p&gt;亲们，最近遇到一个问题。项目是部署在 heroku 上的。server 使用 unicorn, 另外还有 resque 和 clockwork 两个 worker 进程。所以 procfile 的内容如下：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="ss"&gt;web: &lt;/span&gt;&lt;span class="n"&gt;bundle&lt;/span&gt; &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="n"&gt;unicorn&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nb"&gt;p&lt;/span&gt; &lt;span class="vg"&gt;$PORT&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;/&lt;/span&gt;&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;unicorn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;rb&lt;/span&gt;
&lt;span class="ss"&gt;worker: &lt;/span&gt;&lt;span class="n"&gt;bundle&lt;/span&gt; &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="n"&gt;rake&lt;/span&gt; &lt;span class="n"&gt;resque&lt;/span&gt;&lt;span class="ss"&gt;:work&lt;/span&gt; &lt;span class="no"&gt;QUEUE&lt;/span&gt;&lt;span class="o"&gt;=*&lt;/span&gt;
&lt;span class="ss"&gt;clock:  &lt;/span&gt;&lt;span class="n"&gt;bundle&lt;/span&gt; &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="n"&gt;clockwork&lt;/span&gt; &lt;span class="n"&gt;clock&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;rb&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;部署到项目之后，就发现这 3 个进程，最近几乎一天就会被重启一次。我想知道这是为什么？&lt;/strong&gt;我们没有做什么操作。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;下面的图片中显示有 119 个 resque worker 但其实是只有一个。&lt;/strong&gt;
&lt;img src="https://l.ruby-china.com/photo/2015/659aa3dda289d7a0da47fe273054f1ac.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;这三个进程都需要使用 Redis 进行相互之间的通信。最近发现 Redis 有时会连不上而报错，这会是 clockwork, resque 和 unicorn 重启的原因的吗？我想这两个 gem 包应该考虑到这个问题的吧！&lt;/p&gt;

&lt;p&gt;clockwork 不能倒，因为里面有抓实时数据的线程，resque 其实也不能倒，clockwork 中的一些任务需要 resque 来做。resque 其实倒了立即启动也没事，但是经常发现 resque 倒了再启动，有些 clockwork 的任务它没有及时做！好像 resque 重新启动有一小时的时间差！&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;顺便说一句我的机器上，这些代码都是工作相当正常的。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;本人是刚毕业，然后进公司自学 ruby，没有人指导，自己还要负责一个项目，遇到问题大都自己独立解决，不过这个关于 heroku 的问题实在是很难解决！请各位高手帮忙看看，感激不尽！&lt;/p&gt;</description>
      <author>yuexiahandao</author>
      <pubDate>Wed, 22 Apr 2015 17:33:25 +0800</pubDate>
      <link>https://ruby-china.org/topics/25252</link>
      <guid>https://ruby-china.org/topics/25252</guid>
    </item>
  </channel>
</rss>
