2011-08-09 44 views
1

検索バーに入力すると、 という名前と写真が表示される、Facebookに似たGAEで検索バーが作成されました。例えばjo を入力すると、「John Smith」と「Michael Jordan」のドロップダウンが表示されます。この は実際に開発サーバー上でうまく動作し、 のページをロードした直後にユーザーが実際に検索すると、実際には実際には が動作します。私がページを待っている場合は、30秒〜1分です。次に を試して検索バーを使用すると、結果は と非常に表示されます。時には15秒ほど長く、以前は でした。誰かがここで何が起こっているのか説明できますか?このリクエストを暑くしておくことができる方法はありますか? また、joを検索して、結果を取得し、joを削除して別の検索を入力すると、結果がすぐに表示されます。これは、私が何かがアクティブに保たれていない場合、シャットダウンしていると思うようにする。GAE:遅延の遅いリクエスト

私の検索バーは、JQuery オートコンプリートバーを実装し、Jquery ajax getsを使用して結果を取得します。

+0

管理コンソールのログにこれらのリクエストが表示されるのは何ですか? –

+0

私の賭けは、バックエンドでのクエリが遅いということです。結果がすぐに得られるのは、JQueryが以前の結果を自動的にキャッシュするためです。 – systempuntoout

+0

@systempuntooutはそうではありません。私の要求は通常100ミリ秒以下に戻ります。インスタンスに待ち時間がなくても、私の要求によって新しいインスタンスが作成されているようです。 – Lumpy

答えて

0

実際に新しいインスタンスを開始するかどうかを確認します。ダッシュボードに移動し、コンボの[チャート]セクションで、[秒数]の代わりに[インスタンス]を選択します。

+0

私の要求に対して動的インスタンスが作成されたようです。待機時間のない常駐インスタンスが3つあります。この動的インスタンスがすぐに削除され、別のインスタンスが作成される必要がありますか? – Lumpy

+0

"threadsafe"オプションがオンになっていますか?デフォルトでGAEは並列要求を許可しません。あなたはそれをオンにする必要があります。理論的にGAEはマルチスレッドの場合、新しい要求に対して新しいインスタンスを開始する必要はありません。ここの最後のセクションをご覧ください:http://code.google.com/appengine/docs/java/config/appconfig.html#Using_Concurrent_Requests – okrasz

0

これは通常、アプリケーションのトラフィックが少ない場合、GAEは新しいJVMを起動することで「ウォームアップ」し、数秒かかるためです。

here "Loading Request"について。

この問題を回避するには、アプリケーションにAlways Onモードを使用します。これはプレミアム機能であることに注意してください。

+0

私はこのアプリケーションのために常にオンにしています – Lumpy

+0

@ Lumpy - ちょっと待ってから新しいプロセスが開始されているかどうかをログで確認できますか?それは何が起こっているかのヒントを与えるでしょう。 – Kal

+0

新しいインスタンスが作成されている場合、問題を解決するために何かできますか? – Lumpy