2012年2月7日火曜日

Herokuのシングルdynoの動作

herokuでは2台以上のdynoを契約すると(つまり課金すると)その上で動いているアプリケーションはidle状態になることなく動き続ける(らしい)けれど、シングルの時には2時間程度リクエストのない状態が続くとアプリは停止し、次にリクエストが来た時にまたスタートアップする仕組みになっています。

逆に言えば定期的にリクエストが来てさえいれば動き続けるわけでherokuアプリ上からcronアドオンなり、独自スレッドなりで1時間に1回程度自分自身に対してHttpRequestを投げてやればidleになることはありません。

監視されているのはHttpRequestだけなので、独自スレッドで定期的にDBへの読み書き処理を行っていてもHttpRequestが来なければ容赦なく落とされます。
夜間バッチなどの処理を組む場合には注意が必要かもしれません。(2台契約しろという話かもしれないけれど、その場合は複数のホストで処理が同時に実行される可能性を考慮せねばならずやっぱり注意が必要)

ちなみに1度idleになったあとに再起動した時にはIPが変わります。というか再起動時には必ずIPが変わっているっぽいです。
スラグのコンパイル&コピーがいつ行われているのかわかりませんが、この辺もスラグサイズをあまり大きくするなという注意事項の要因のひとつでしょうね。

0 件のコメント:

コメントを投稿