0

キーでGCP Datastoreからエンティティを照会するGCP HTTPトリガークラウド機能を導入しました。GCPデータストアをGCPクラウド機能で使用するときのクエリ時間が遅い

ログによれば、この関数の呼び出しには約1.6秒かかります。繰り返しの呼び出しはそれほど速くはありません。

クエリを削除してHTTP要求に応答するまでには0.5秒かかりますので、クエリの実行には約1.1秒かかります。私にとってはこれは非常に遅く、これがGCP Datastoreの意図されたパフォーマンスであるとは思われません。

おそらくDBと関数が異なる地域で動作していても確認できないと思われました。マニュアルに記載されている説明が間違っています(https://cloud.google.com/datastore/docs/locations#location-r)。地域は私のページには表示されません。

ここで設定した問題は何ですか?私は〜1100msではなく、簡単なクエリで〜50msを期待していました。

+0

ここでの設定に関する問題はわかりませんが、Google App Engineダッシュボードの右上の「your-project-id」に位置情報が表示されるはずです。 appspot.com "、もう一度確認できますか? –

答えて

2

this質問には、Googleのスタックトレースの添付スクリーンショットがあり、DatastoreとGCPの最適な時間は約100ミリ秒です。

正直言って、私たちは3ヶ月以上のDatastoreでGCFに取り組んでいましたが、この時間は通話あたり通常100ミリ秒、約200〜400ミリ秒に相当します。私はGCPのサポートと会話していましたが、現時点ではGCFとDatastoreの間のリクエストのルーティングと最適化だけで問題があることを確認できます。私は、Yandex-Tankを通していくつかのパフォーマンステストデータセットを収集し、平均リクエストレイテンシは約800ms〜7秒(約4-5 Datastoreシリアルリクエスト)でした。

開発の3ヶ月後にApp Engineに移動し、この環境でDatastoreがより速く動作することがわかりました。平均時間はDatastoreリクエストごとに約20〜30ms(4〜5倍速く)です。

気付いたことに、Datastoreの検索時間は、データの量にほとんど依存していません。それは1レコードか1000レコードか、時間はほぼ同じ20-30ミリ秒です。私はこの時間は、ネットワーク通信の追加なしでDatstore自体を見ることができればさらに良いと思っています。

すべてのリクエストを高速化するために、キャッシュサービスとしてredisを追加しました。私はそれがGCFとDatastoreでもうまくいくかもしれないと思いますが、これは保証された解決策ではないと思います。 したがって、1次処理エンドポイントの代わりにユーティリティー処理単位としてGCFを使用することを検討してください。

+0

非常に役に立ちます。ありがとうございました。 LambdaとDynamo DBにはこの問題がないため、AWSをこのタスクに使用することを選択しました。 – lpil

関連する問題