2011年11月11日金曜日

appengine 新課金対策その1

Data Read OpsのOverQuotaErrorに引っかかって以来、色々試してますが、

現段階でのbackendsはちょっと失敗でした。単価がfrontより高いし、「動きっぱなし」「課金しっぱなし」っぽいので、cronからの移行ではかなり高く付きます。試したのが夜中だったから、課金枠を増やしてどうにかなりましたが、DeadlineExceedで死んでた分が死ななくなったのもあるようです。

とりあえずFront instance HoursとDatastore Read Opsを減らす方向でmemcacheを使うことにします。


対応前までのQuotaがこんな感じですね。本日分の業務も10時から始まってますが、Frontend Instance Hoursの殆どは、12時間前(昨日22時以前)以前です。

顧客の運用は、「予約制」の「客商売」の「窓口業務」なので、毎日負荷のバラツキが結構あります。それこそがmemcacheを導入せざるを得なかった理由ですね。ブラウザリロードするな、とは言えません。htmlをキャッシュする事も考えましたが、一番負荷を食ってる処理が、「そろそろ来そうな予約者一覧」なので、ある程度動的生成せざるを得ません。

結局、検索部分をメソッドに分離、メソッドの引数と戻り値をmemcacheに保存するデコレータを書いて、あちこちに挟んでみることにします。

これでfrontendとDatastore Read Operationsが減ってくれればかなり助かります。