2011年11月9日水曜日

Datastore Read Operations

Datastore Readを減らす方法は、順次検討していきます。

筆者の顧客から連絡がありました。
appengineでサービスしてる(イントラ用)サーバが昨日から動いてないと言うのです。

画面にpython のexceptionが漏れてたので、それをコピペしてくれてました。
ナニナニ?

 File "/base/python_runtime/python_lib/versions/1/google/appengine/api/datastore.py", line 1700, in Count batch = self.GetBatcher(config=config).next() File "/base/python_runtime/python_lib/versions/1/google/appengine/datastore/datastore_query.py", line 2525, in next return self.next_batch(self.AT_LEAST_ONE) File "/base/python_runtime/python_lib/versions/1/google/appengine/datastore/datastore_query.py", line 2562, in next_batch batch = self.__next_batch.get_result() File "/base/python_runtime/python_lib/versions/1/google/appengine/api/apiproxy_stub_map.py", line 592, in get_result return self.__get_result_hook(self) File "/base/python_runtime/python_lib/versions/1/google/appengine/datastore/datastore_query.py", line 2317, in __query_result_hook self._conn.check_rpc_success(rpc) File "/base/python_runtime/python_lib/versions/1/google/appengine/datastore/datastore_rpc.py", line 1182, in check_rpc_success rpc.check_success() File "/base/python_runtime/python_lib/versions/1/google/appengine/api/apiproxy_stub_map.py", line 558, in check_success self.__rpc.CheckSuccess() File "/base/python_runtime/python_lib/versions/1/google/appengine/api/apiproxy_rpc.py", line 133, in CheckSuccess raise self.exceptionOverQuotaError: The API call datastore_v3.RunQuery() required more quota than is available

QverQuotaErrorですね。アレ今までこんなこと無かったのに。
Dashboardを見ると、StorageのDatastore Read OperationsがLimitedになっちゃってました。0.05 of 0.05 Million Ops。ミリオンオプス???

ちゃんと調べてみると、9月からアナウンスは出てたみたいですね。

appengine.google.comのbiling historyで、「課金体系が変わったら、この位の金額になるよ」的な表示もあったみたいですね。全然気づきませんでした。完全に出遅れてます。



あと13時間でリセットします。って話でしたが、日本時間14時ぐらい?まで使えないのはヤバイので、仕方なく課金設定しました。それにしても0.05 Milion Opsってそんなに簡単に行っちゃうもんなのか?

ちょっと計算してみると、50000 Ops/日 アレ意外と少ない??1分辺り、34Ops。これは油断してると喰らいそうだな。

一応、本サービスで使ってるappspotなので、止まっちゃいましたでは済みません。しかたないので課金することにしました。

Datastore Readを減らす方法は、順次検討していきます。