1

非常に単純な質問がありますが、答えが見つかりませんでした。そのため、いくつかの基本的な事実が欠けている可能性が高いと思います。

私は memcache を使用して大規模な静的データをキャッシュして提供しています。これにより、通常、単一のインスタンスから何千人ものユーザーにサービスを提供できるはずです。ただし、アプリ エンジンはシングル スレッドであるため、すべてのリクエストがキューに入れられて順番に処理され、最終的に多くのユーザーにサービスを提供するときに複数のインスタンスが開始されるようです…</p>

特に新しいインスタンスを開始するときのレイテンシーは別として、これはさらに大きな価格の問題を引き起こします. Google は現在、CPU 使用率ではなくインスタンス時間に対して課金しているため、キャッシュされたデータを提供することで、各インスタンスから利用可能な CPU の一部を使用している可能性が高く、この投稿と同様に、多くの不要な追加インスタンスに対して課金されています…< /p>

何か不足していますか?

回答ありがとうございます

4

1 に答える 1

0

appengine-web.xmlファイルで「threadsafe」要素を「true」に設定してマルチスレッドを有効にすると、AppEngineはシングルスレッドではなくなります。

ただし、MemCacheにデータをキャッシュしても、1つのインスタンスから無制限の数のリクエストを処理できるわけではありません。Memキャッシュはアプリケーションコードを実行していません。データストアに移動する手間が省けるだけなので、高速です。

コードやメモリ使用量などに応じて、App Engineが1つのインスタンス(マルチスレッドのために一度に複数のリクエストを処理している)が「ビジー」になると、新しいインスタンスを起動します(これは多くのダッシュボード設定に依存します)また、appengine-web.xmlのウォームアップリクエスト設定でも)、新しいリクエストはそれらによって処理される可能性があります。

したがって、インスタンスの使用量は、受信するリクエストを処理するコードの期間と、MemCacheではなく各自のメモリ使用量に依存します。

「静的データ」と言うことで、appengine-web.xmlで「静的」としてそれらをamrkすることによって、htmlファイルなどを参照している場合、実際には、インスタンスはまったく必要ない可能性があります。これらは、インスタンスを起動したり、コードを実行したりすることなく、GoogleのCOntent Distribution Network( "CDN")によって提供されます。

そのためには、クライアントリクエスト(ブラウザなどから)は静的ファイルのみをリクエストする必要があり、アプリケーションコードを実行する必要はありません。

したがって、これらすべてに基づいて、質問を再定式化する必要があるかもしれません。いずれにしても、それが役に立ったことを願っています。

于 2012-09-19T23:25:59.503 に答える