3

現在、JSF/PrimeFaces Web アプリケーションのボトルネックを取り除こうとしています。そのために、VisualVM とその GlassFish プラグインをインストールしました。

JMX で明示的に「プロファイリング」することはできませんが、「サンプリング」出力を生成することはできます。ただし、この出力は、 と呼ばれるオペレーションのほぼ全体の負荷を示しています$Proxy245.invoke()

VisualVM サンプリング出力

私自身の操作 (ch.diction.*) と SQL インタラクション ロジック (com.mysql.jdbc.*) は、最初はボトルネックではないかと疑っていましたが、このパフォーマンスの欠如に大きく貢献しているようには見えません。

表示されているページは、数百のページ分割されたレコードを持つ PrimeFaces データテーブルです。レコードの数は、排他的ではないにしても、パフォーマンスに大きな影響を与えます。

私の質問は次のとおり$Proxy245.invoke()です。このシナリオで実際のボトルネックを特定するために、背後にあるものをどのように見つけることができますか?

事前にアドバイスとよろしくお願いします

パスカル

4

1 に答える 1

1

$Proxy245 は、いくつかのAOPフレームワークによって生成されたプロキシ クラスです。メソッド呼び出しをインターセプトするために使用されます。生成されているため、実際のソースがないため、実際のソースは見つかりません。VisualVM ([スレッド] タブ) でスレッド ダンプを作成し、スタック トレースを確認することをお勧めします。これにより、最後にこの (プロキシ) メソッドを呼び出す一連のメソッドを見つけることができます。

また、サンプルだけでなくアプリケーションのプロファイリングも試みます (プロファイラー タブ)。プロファイラーを使用すると、これらが同じメソッドに対する複数の呼び出しなのか、終了したくない 1 つの長い呼び出しなのかを確認できます。

于 2013-04-09T17:13:15.987 に答える