2011-09-14 18 views
2

私はapache cxfを使ってwebserviceアプリケーションを開発しています。基本的にこのWebサービスは、hibernateを使用してpsqlデータベースを検索し、結果を返すものです。

このサービスの問題は、それほど遅いことです。起動時にLOCALLYを実行してクライアントがデータを要求するようにすると、VisualVM Profilerはそのことを指摘しますsun.rmi.transport.tcp.TCPTransport.ConnectionHandler.runはCPU時間の80%を消費します。リストの他の機能はすべて5%未満です。

私はこの機能がサービスからクライアントへのデータ転送に関係していると考えます。どちらもローカルに実行されるので、この転送でCPU時間がかかるとは思わないでしょう。誰もがこれを引き起こす可能性があることを知っている?

ありがとうございます!

+0

これは、クライアントプロセスまたはサーバープロセス、またはその両方をプロファイリングすることですか? – Tim

+0

"CPU時間"の80%、または "時間"の80%しか消費しませんか?言い換えれば、その間に何かをやっているのですか、それとも待っていますか? –

+0

@Branko彼はVisualVMを使ってプロファイリングしていますが、これはCPU時間ではなく壁時計の時間をカウントしています。この観察はCPU使用率の隣で確認されます。 – Tim

答えて

0

は、私は、この関数は、クライアント

いいえ、それは非整列化に関与しているに サービスからデータを転送する位置、実行、そしてちょっと待っへ行くから全体RMI呼び出しを整列化に関与していると思われます。それはあなたのリモートメソッドがCPU時間の80%を取っているのでほぼ確実にCPU時間の80%を取っている場合。

+0

これは80%が正常であることを意味しますか? –

+0

@Coos Baakmanは、あなたの未公開のリモートメソッドが実際に行う/実行することに完全に依存します。 'while(true);'は100%を消費するでしょうか? – EJP

関連する問題