7

appengine の公式ドキュメントによると、app.yaml で threadsafe プロパティを true に設定すると、appengine は同時リクエストを処理します。

公式リンク: https://developers.google.com/appengine/docs/python/python27/newin27#Concurrent_Requests

  • threadsafe プロパティを true にすると、アプリケーションが (2.5 よりも) 高速になるということですか? 公式ドキュメント/ブログはそう言っていますが、私は実際の経験を探しています.

  • 高レベルでは、内部でどのように機能しますか? アプリケーションが初期化され、リクエストごとに新しいスレッドが生成されるでしょうか?

4

4 に答える 4

11

リクエストごとに 1 つのスレッドしかありません。生成することはできません。

スレッドセーフをオフにすると、Appengine は 1 つのリクエストのみをインスタンスにルーティングします。そのため、1 秒あたりのリクエスト数とリクエストの処理時間の積が 1 に近づくと、Appengine はそれらを処理するために新しいインスタンスを起動します。これにはお金がかかりました。スレッドセーフをオンにすると、Appengine は複数のリクエストを 1 つのインスタンスにルーティングできます。

これが役立つかどうかは、アプリとトラフィックによって異なります。

  1. まず、1 秒あたりのインバウンド リクエスト / 平均レイテンシを計算します。これが 1 をはるかに下回っている場合、スレッドセーフはどちらの方法でも大きな違いはありません。
  2. アプリを調べて、API (データストアや URL フェッチなど) の待機に費やしている時間を調べます。これが大きな割合である場合、スレッドセーフはインスタンスのカウントを抑えるのに役立ちます。そうでなければ、あまり役に立ちません。

アプリの処理負荷が非常に高い (API 待機がほとんどない) 場合を除き、単純なルールはスレッドセーフをオンにすることです。

于 2012-06-12T23:12:10.723 に答える
4
  1. アプリケーションが高速になるという意味ではなく、リクエストは依然として単一のスレッドから処理されます。
  2. アプリケーションがスレッドセーフである場合、各インスタンスは複数のスレッドを生成できるようになり、各インスタンスがリクエストを処理する単一のスレッドを持つ非スレッドセーフとは対照的に、各スレッドはリクエストを処理します。
于 2012-06-11T09:20:04.420 に答える
3

Python 2.5 は、要求ごとに Python 2.7 よりも若干高速です。それは部分的には、それぞれがどれだけ成熟しているかによるものです. App Engine は、さまざまなメカニズムを使用してそれぞれをサポートしています。Python 2.7 の利点は、Python 2.5 で負荷スパイクを処理するために必要な速度で新しいインスタンスをスピンアップするのではなく、並列要求をサポートできることです。

「内部でどのように機能するのか」という質問は、おそらくここでは答えを得られないでしょうが、昨年の Google I/O から、私たちが何をしているのか、そしてその理由を示唆するいくつかの話があります。youtube.com で「アプリ エンジン」を検索します。

于 2012-06-13T04:29:10.413 に答える