2011-12-25

GAE/J 新 Quota と新料金体系への対策

もういろんなところで書き尽くされていると思うのだけれど、自分の記録用として。

対策結果

最初に、Japanese Bloggers Info の Billing History データ。



インスタンスをたくさん使っているものの、この当時はまだ旧 Quota で CPU Time も 6.50 に収まっていたので、課金はなし。で、最終的にこうなった。



結局課金になってはいるものの、日に 7.00 ドルかかるぞ(Frontend Instance Hour は現在の半額での計算)と宣言されていたのが 0.15 ドルになったのは上出来。


対策内容

<1> Idle Instances と、Pending Latency の設定。GAE の設定ページ「Application Settings」を開いて、スライダーを使って Idle Instances の Max Idle Instances を 1、Min Idle Instances を Auto に。Pending Latency の Min Pending Latency を 15、Max Pending Latency を Auto に設定する。これだけで、Frontend Instance Hour が 35 時間くらいに激減。

<2> TaskQueue の rate(実行頻度)を緩和。5/s だったものを 2/s に。Japanese Bloggers Info は、ブログチェックのため、5 分ごとに cron で 300 個以上の TaskQueue を呼ぶ仕組みになっているので、これだけのことでも意外と効果あり。Frontend Instance Hour も大体 30 時間以内に。

<3> Backends を利用。上記の TaskQueue が一日中動いているので、日に 6 時間は Backends で TaskQueue を動かすことに。どうしても 2 インスタンス動くところがあるので、6 時間は必ず超えるけれど、9 時間までは Backends の無料枠があるので、問題なし。というか、この残りの 3 時間で、2 インスタンス動いてしまう時間を吸収してもらう感じ。で、Frontend Instance Hour もほとんど 28 時間に収まるようになったというわけ。

<4> Memcache の積極利用。全ブログのリストや、各ブログのデータなど、5 分ごとで変化しない内容については、Memcache を利用。大幅なデータ取得の仕組みは改修せず、Entity にアクセスする前に Memcache を確認するようにしただけ。Memcache になければ、通常通り Entity からデータを得て、Memcache に入れておく。それだけで、Datastore Reads は 0.27 ドルから 0.08 ドルへ、約 3 分の 1 に。

で、現在に至る、と。どれもちょっとしたことなので、誰にでもできるはず。よかったら参考にしてください。

2011-12-03

Eclipse で GAE/J の SDK を 1.6.0 に更新したらエラーが

Eclipse の Google App Engine SDK をアップデートして、「ウィンドウ > 設定」から SDK を 1.6 に変更してみたところ、問題ビューに

The App Engine SDK JAR appengine-api-1.0-sdk-1.6.0.jar is missing in the WEB-INF/lib directory
The App Engine SDK JAR appengine-api-labs-1.6.0.jar is missing in the WEB-INF/lib directory
The App Engine SDK JAR appengine-jsr107cache-1.6.0.jar is missing in the WEB-INF/lib directory
The App Engine SDK JAR datanucleus-appengine-1.0.10.final.jar is missing in the WEB-INF/lib directory

というエラー(Google App Engine Problem)が。

プロジェクトのプロパティーから「Java のビルド・パス」を選択「順序およびエクスポート」タブの「App Engine SDK [App Engine (*) - 1.6.0]」をチェックして、「OK」押したら治りました。

…けど、更新のたびに、こんな設定していたっけ?

関連:

2011-11-03

zencoding.vim のインデントをタブからスペースに変更する

Zen coding は、エディタ上で CSS セレクタのような書き方で HTML タグを記入することのできる、優れもののプラグインのこと。動画を見るとどういうものかすぐにわかるはず。


(Zen Coding v0.5 from Sergey Chikuyonok on Vimeo)

これを Vim に入れたというのは、以前書いたのだけれど、タグを自動挿入させたときのインデントがスペースじゃなくてタブなのが気になっていた。

で調べてみて、見つけたのがこのサイト。 インデントをスペースにするには、.vimrc に以下のように設定をすればいいとのこと。

let g:user_zen_settings = {'indentation' : '  '}

これだと、インデントにスペース 2 個を使ってくれる。ということで、どんどんコーディング環境が豊かになっていくのでした。

Zenback - Everyone's Related Posts