2012-02-09 4 views
0

私のApache Wicket Webアプリケーションは、GAE/Jのデータ永続性のためにJDOを使用します。同時リクエストと低トラフィックを使用しているにもかかわらず2つのインスタンス

アプリケーションの起動時に、ホームページが表示される前に、ホーム・ページがエンキューされます(デフォルトETAの遅延はゼロです)。このタスクは、存続期間中にアプリケーションが使用するJVMのシングルトンPersistence Manager Factory(PMF)インスタンスを構築するために、新しいWicket Webページの構築を引き起こします。

私は、アプリケーションのAppEngineの-web.xmlファイルに

<threadsafe>true</threadsafe> 

を追加することにより、同時要求を使用するようにアプリケーションを設定しています。

これにもかかわらず、アプリケーションのホームページへの1回のアクセス要求の後、私は2つのアプリケーションインスタンスを取得します:ホームページ訪問要求によって作成されたインスタンスと、エンキュータスクの実行によって作成されたインスタンス後で)。

エンキューされたタスクの実行を遅延させることで解決できる可能性があります(おそらく約10秒かかります)。ただし、同時要求を有効にしたときにこれを試す必要があります。最初のGAE/Jアプリケーションインスタンスは、2つ目のインスタンスを作成せずに2つの要求を同時に処理できないのでしょうか?私は何か間違っていると推測しますが、それは何ですか?

スタックオーバーフローのタグ([google-app-engine] [java])と償却グループ「Google App Engine for Java」も検索しましたが、私の質問には何も関係していません。

私はどのポインタにも感謝します。

+0

アプリダッシュボードのアプリケーション設定ページで、最小待機待ち時間の設定は何ですか? –

+0

古いインスタンスのレイテンシは約2.5秒でした。これは、インスタンスをスピンアップし、最初のページをユーザーに提示する時間です。新しいインスタンスは約0.5秒のレイテンシを持っていました。最初の後のすべてのリクエストは、この新しいインスタンスによって処理されるようです。 –

答えて

1

タスクは、既存のインスタンスを使用する場合は、GAEのドキュメントによるとX-AppEngine-FailFastヘッダ、設定することができます。

をこのヘッダは、既存のインスタンスがある場合、スケジューラは、直ちに要求を失敗するように指示します利用不可。タスクキューは、既存のインスタンスが

要求を処理するために利用できるようになるまでそれはパフォーマンスとチューニング技術のためのManaging Your App's Resource Usageドキュメントをチェックアウトする価値が再試行し、バックオフをします。

+0

ご回答いただきありがとうございます.Symonは、ドキュメントとヘッダーのヒントの両方を参考にしています。私は初期化タスクにヘッダーの追加をコーディングしました。これがうまくいかない場合は、代わりにTaskOptions.countdownMillis(...)を使用してみます。 –

+0

最新のGAEドキュメントによると、X-AppEngine-FailFastヘッダーは、「バックエンドで実行中のタスクが保留中のキューで待機するのではなく、すぐに失敗するように指定します。私はバックエンドを使用していないので、これは私を助けません。このヘッダーを本番で使用すると、最初のアプリケーションインスタンスによってエンキューされたタスクは、新しい2番目のアプリケーションインスタンスによって処理されることがよくあります。 –

関連する問題