4

私は小規模なサービスに GAE を使用しています。私は 1 日に 3 つか 4 つのクライアントしか持っていません。私のサービスは、Spring MVC、Spring Security、Objectify を使用して Java で記述されています。そのため、起動時間は 15 ~ 20 秒かかります。

クライアントのこの起動遅延を回避するために、課金を有効にし、最小アイドル インスタンスを 1 (最大の場合は 1) に設定します。しかし、この構成でも、クライアントが最初のリクエストを 15 秒間待たなければならないことがあります。

ウォームアップ リクエスト (使用されていない) の直後のログでわかるように、クライアントは新しいインスタンスを起動します (後で使用されることはありません)。

例 1:

2012-09-10 23:23:31.442 /myIndex.do 200 18997ms 15kb Mozilla
x.x.x.x - - [10/Sep/2012:14:23:31 -0700] "GET /myIndex.do HTTP/1.1" 200 15048 - "Mozilla" "www.mysite.fr" ms=18997 cpu_ms=10442 cpm_usd=0.001682 loading_request=1 instance=00c61b117c2e937c04807734919256d8a5cee8

2012-09-10 23:05:05.260 /_ah/warmup 200 14225ms 0kb
0.1.0.3 - - [10/Sep/2012:14:05:05 -0700] "GET /_ah/warmup HTTP/1.1" 200 0 - - "3.360029581669528772.mywebsite.appspot.com" ms=14225 cpu_ms=8969 loading_request=1 instance=00c61b117c10680b3f12b4c8f80f7b7191ce8bab

例 2:

2012-08-31 18:51:16.096 /myIndex.do 200 14676ms 14kb Mozilla
x.x.x.x - - [31/Aug/2012:09:51:16 -0700] "GET /myIndex.do HTTP/1.1" 200 14954 "http://www.mysite.fr/myIndex.do" "Mozilla" "www.mysite.fr" ms=14676 cpu_ms=8514 cpm_usd=0.001671 loading_request=1 pending_ms=1022 instance=00c61b117cf69060fbcfbfe9dbd6ed735b869817

2012-08-31 18:39:43.895 /_ah/warmup 200 19812ms 0kb
0.1.0.3 - - [31/Aug/2012:09:39:43 -0700] "GET /_ah/warmup HTTP/1.1" 200 0 - - "3.360029581669528772.mysite.appspot.com" ms=19812 cpu_ms=10243 loading_request=1 instance=00c61b117c1d4303f8698a615149d5a40dcac7

私はすでに 4 つのクライアントでこの種の問題を抱えているのではないかと心配しています:/

同様の問題も見つかりました http://code.google.com/p/googleappengine/issues/detail?id=7865

これらの 2 つの問題が関連しているかどうか、誰でも確認できますか?

どうも

サミュエル

4

1 に答える 1

0

私はあなたの質問に正しく答えることができるかどうかわかりませんが、私はあなたを正しい軌道に乗せるために最善を尽くします。

ウォームアップ要求は、「ライブ」要求がアプリケーションインスタンスに送信される前に、アプリケーションサーバーによって呼び出されます。できるだけ多くのコードを呼び出し/初期化して、メモリにロードする機会です。「ライブ」リクエストがアプリケーションにヒットすると、迅速に実行されます。ログを見ると、/myIndex.doへのリクエストの実行には14秒かかります。どんな基準でも、これはかなり長いです。

これは私に次のことを提案させます:

  1. インポートしているライブラリが原因でリクエストが非常に長くなる原因を突き止めてください。それを確立したら、ウォームアップハンドラーでそれらをロード/使用することを確認してください。
  2. ライブラリの読み込みの問題ではない場合は、リクエストで多くの処理を行っていることを意味します。その一部を非同期ハンドラー(AJAXを使用)に委任することをお勧めします。
  3. 最後に、タスクをスケジュールして/myindex.doを定期的に(数分ごとに)呼び出して、「ホット」であることを確認できます。
于 2013-03-20T02:20:35.890 に答える