0

私のアプリ エンジン サービスは Go で書かれています。サーバーがポートでリッスンする前に Cloud Datastore に接続するコードがあります。たった 4 つのエンティティを読み取る約 500 ミリ秒かかる単一の Projection クエリがあります。接続を確立する必要があるため、データストアとの最初のやり取りのレイテンシが高くなる可能性はありますか? このデータストア接続の待ち時間を短縮する方法はありますか? また、ポートをリッスンする前にこの db 呼び出しを行うのと、ウォームアップ リクエスト内で行うのとでは違いがありますか (これは自動スケーリングされたインスタンスです)。

Cloud Datastore の高い初期レイテンシと同様に、Cloud Tasks にも同様のパターンが見られます。最初のタスクの作成は 500 ミリ秒にもなる可能性がありますが、後続のタスクでさえ 200 ~ 400 ミリ秒です。これは米国中部にあります。私は実際にデータベースの更新をバックグラウンド タスクに移行することを検討していましたが、一般的に、タスク作成のレイテンシは、データを読み取って更新するトランザクションを実行するのとほぼ同じであり、純利益はありません。

最後に、インスタンスの起動時間は通常 2.5 ~ 3 秒で、メインは約 2 秒後に呼び出されます。私のアプリの起動時間は、上記のプロジェクト クエリ コストの 500 ミリ秒であり、他には何もありません。では、アプリの起動をどれだけ最適化しても、約 2 秒の追加の遅延を想定する必要がありますか?

システムの負荷は非常に軽いため、これらの問題はボリュームが大きいためではありません。

更新: Miguel から要求されたデプロイメント ファイル (これは、パフォーマンス特性を調査するテスト環境用です。製品デプロイメントは、インスタンスに対してより寛大になります)

デフォルトのアプリ:

service: default
runtime: go112
instance_class: F1
automatic_scaling:
  min_instances: 0
  max_instances: 1
  min_idle_instances: 1
  max_idle_instances: 1
  min_pending_latency: 200ms
  max_pending_latency: 500ms
  max_concurrent_requests: 10
  target_cpu_utilization: 0.9
  target_throughput_utilization: 0.9
inbound_services:
- warmup

バックエンド アプリ:

service: backend-services
runtime: go112
instance_class: B1
basic_scaling:
  idle_timeout: 1m
  max_instances: 1
4

1 に答える 1