Google の中の人と話す機会があったのsinup/downについて聞いてきた。
でいくつか思い違いが有ったのでメモっとく。
  • spindownは時間じゃなくてリソース競合で起こる
他のアプリが使いたいリソースを開放させる為に発生するらしい。
それが無ければずっとインスタンスは生きているとの事。
実際試しているとアクセスが無いのに30分以上 spindown が起こらない事がある。
  • sipnupで遅い時が有るのは主にI/O待ちが発生している。
I/Oリソースを共有している他のアプリと競合した場合に待たされているらしい。
したがってCPUタイムと無関係にバラツキの有る処理時間になるとの事。


この話からするととにかく I/O は memcache にキャッシュすれば バラツキを押えて CPU 時間前後で安定する事になる。

それを前提に現在実験中なのだがログからはコード改修の結果なのか 単に環境の負荷が下がっているだけなのかの区別が付かないので結論が出ない。

少し、長い目で見るしか無いねこの件は。

ちなみに今のところはっきり効果を感じたのはクラスパス内の リソースファイルの読み込みを memcache 化した場合。 複数有ったため 1000ms くらいがっつり減った。



GAEのspinupとmemcache の記事で変化が無かったのはデシリアライズで失敗してた為、 memcache が効いていなかった。
これはクラスローダの問題が絡んでいたのだがこっちはこっちで根が深いのでまた別の機会に。

関連記事: