2012-03-12 4 views
0

RPCによってGWTクライアントからGAE Javaサーバーにクエリを送信しています。応答はかなり複雑なオブジェクトツリーです。サーバー上のRPC実装は、最初から最後まで900msかかる。 HTTP要求の合計が4〜5秒かかります。実際の送信時間とping時間は無視できることを確認しました。 (空虚なRPCは300ミリ秒かかり、実際の送信時間は短いです)Google App Engine(GAE)を使用したGWT RPCに遅延が発生し、パフォーマンス上の問題が発生しました

私は、応答のシリアライゼーションに時間がかかるかもしれないと思ったが、RPC.encodeResponseForSuccessを使ってサーバー上で明示的に呼び出すとわずか50msしかかかりませんでした。

私たちは3〜4秒のオーバーヘッドを完全には明らかにしていないので、それをどのようにデバッグするのかは分かりません。私たちはRPCの代わりにサーブレットを使ってシリアル化されたRPCレスポンスを送ろうとしましたが、まったく同じレスポンスが5ではなく〜1秒かかっていました!

ありがとうございます!

答えて

1

リクエストデータのクライアント側シリアル化時間とレスポンスデータの逆シリアル化時間を忘れてしまいます。

-style PRETTYでアプリをコンパイルし、Chrome Dev Tools Profiler、IE Dev Tools Profiler、またはdynaTrace Ajax(http://ajax.dynatrace.com/ajax/ja/)または同様のjavascriptプロファイリングツールを使用してアプリを実行して、あなたの時間は行く。

非常に大きな応答は、逆シリアル化に時間がかかります。あなたの応答に多くのBigDecimal値を使用すると、エミュレーションコードが本当に複雑な性質を持つため、時間がかかります(これはキラーです)。

+0

私のサーブレットも同じ応答を逆シリアル化する必要がありますが、それはもっと速く動作します。明白な理由がないのに数秒間のRPCオーバーヘッドがあります。 – user1176505

関連する問題