Google App Engine新料金体系でも無料枠で使えそう

 - by Don

先週やや悲観的な感じでGAEの新料金体系と対策を調べていたのですが、自作のアプリはパフォーマンスの設定だけではどうにもならないので、ソースコードの最適化を進めていました。そして今日ようやく$0に抑えられたので実施した対策などを記録しておきます。

Before

SiReFaSoは先週まではこんな状態でした。

before tuning sirefaso

before tuning sirefaso

Instance時間だけでなくDatastoreの読み書きも無料枠を超えています。

After

現在はこんな状態。

after tuning sirefaso

after tuning sirefaso

Frontend Instance Hoursの無料枠は24IHから28IHまで引き上げられるそうなので、余裕で収まっています。Datastore Writesも冗長な箇所が相当あったのでかなり削れましたがDatastore Readsは厳しいですね。ギリギリすぎるので運用面でもう少し節約を目指さないといけなさそうです。

実施した対策

チューニング

各所で勧められている通り、Application Settingsの管理画面でMax Idle Instancesを1に、Min Pending Latencyを15sに設定します。

performance setting

performance setting

ちょっとしたアプリであればこれだけでインスタンス時間は28IH内に抑えることが可能だと思います(SoSiReMiMiDoLaSoはこれだけで解決しました)。

Backendsの利用

スケジュールされた重いタスクを実行する場合はBackendを利用するとお得です。Frontend Instance Hoursの28IHとは別にBackend Instance Hoursが9IH分、無料で利用できます。

Backendのインスタンス数は完全にコントロールできますが、一度立ち上がると15分程度立ち上がりっぱなしになります。1分程度で終わるようなジョブも15分無駄に起動してしまうのでもったいないですが、一時間ごとの実行であれば24回x15分=6時間程度なので9時間以内に余裕で収まります。

instance graph

instance graph

Pythonでの設定はこちらを参考にしました。→App Engine のリソース管理 – TaskQueue の設定

追記:こちらの記事がめっちゃ詳しい!→GAE/PでのBackendsの使い方

Backendの利用にはappcfgからの初期設定が必要ですが、Kay-Frameworkのmanage.pyを通すとうまくいかないのでappcfg.pyから直接叩きます。

$ python appcfg.py backends <dir> update

ソースの書き直し

Datastoreの読み書きはもう自分でなんとか工夫するしかないですね。memcacheガンガン使っても1時間ごとにクリアしてるのでそのあたりをどうにかしないといけなさそうです。クロール間隔をもう少し空けようかな。

ということで(運用面で節約を強いられながらも)もうしばらく続けていける見通しがつきました。

No comments yet.