2009-04-08 8 views
5

Netbeans 6.5プロファイラを使用して、リモートからJava Webアプリケーションのメモリ使用量をプロファイルする際に問題があります。Netbeans 6.5プロファイラを使用してリモートWebアプリケーションをプロファイルしますか?

私はtutorialの手順に従っており、プロファイリングエージェントで開始するようにTomcatインスタンスをカスタマイズすることができました。 Netbeansプロファイラを実行中のサーバーに接続することもできます。プロファイラは、サーバーのメモリ使用量を示すグラフを表示します。

しかし、私は展開されたWebアプリケーションを実行することができません。数秒後、サーバーはメソッドのメイン(サーバーの予想された動作とほとんど同じ)の一番下に達したかのように正常にシャットダウンされます。

この間、サーバーは責任を負わず、Webアプリケーションに接続できません。単純に展開されません。

プロファイルを作成するためだけに新しいNetbeansプロジェクトにアプリをインポートしたくありません。そのソースにアクセスすることなくリモートアプリをプロファイルすることは可能でしょうか?結局のところ、数秒間、サーバーは稼働していて、プロファイルされていました。

Netbeans 6.5でWebアプリケーションをプロファイルしたいと考えています。私は何を忘れましたか?

+0

は、サーバーのログを読みましたか? – Sergey

+0

"空の" tomcatを実行するだけで、webappをデプロイせずにtomcat自体をプロファイル/監視できますか? –

+0

同じことが私に起こっています。私たちが実行しているもののバージョン番号を入れて、人々が質問を検索できるようにすると役に立ちますか? 私はJava 5とJava 6の両方で動作するTomcat 5.5.xにデプロイしようとしていました。 Netbeansの私のバージョンは6.5だった 一方、私のプロジェクトをNetbeansにインポートし、プロファイラを実行すると、完全に動作しました。 @sergey残念ながら、Tomcatのログには出力がありません – jklp

答えて

0

ウェブサーバー全体をプロファイリングしていますか、またはプロファイルフィルタを使用してパッケージのみをプロファイルしましたか? プロファイラとアプリケーションサーバーの間のやりとりを減らすことで解決できます。

1

VisualVMツールも使用できます。以下の手順に従ってください。

1)ランのjstatd(JSTATデーモンプロセス)(アプリケーションが実行されているリモートマシン上で実行) のjstatd -p 1098 -J-Djava.security.policy = tools.policy(未使用のポートを指定する)tools.policy場合ファイルが指定されていない場合は、次のように作成します。

tools.policy 
grant codebase "file:${java.home}/../lib/tools.jar" { 

permission java.security.AllPermission; };

2)JVMを起動する前に、次のプロパティも指定します。

#JMX property 
JVM_ARGS="${JVM_ARGS} -Dcom.sun.management.jmxremote=true" 
JVM_ARGS="${JVM_ARGS} -Dcom.sun.management.jmxremote.port=10992" 
JVM_ARGS="${JVM_ARGS} -Dcom.sun.management.jmxremote.authenticate=false" 
JVM_ARGS="${JVM_ARGS} -Dcom.sun.management.jmxremote.ssl=false" 

3)ローカルマシンでVisual VMを起動します。 a。リモートタブの下にリモートノードを追加します。 b。数分待って、すべてのコアアプリケーションインスタンスがリモートタブの下に表示されます。 c。リモートノードをクリックしてから、JMX接続の追加を選択します。ノード:ポートを指定します(ポイント2で前述したポート)。 d。数秒待って、リモートノードの下にJMX接続が表示されます。

4)数秒後に、新しいタブがリモートノードの下に表示されます。 remote_node:10992をダブルクリックすると、右側にプロファイルテーブルが表示されます。 メモリ、CPU、スレッドなどの詳細が表示されます。

0

jvmのバージョンを確認してください。 netbeansで使用されるバージョンは、tomcatで使用されるバージョンと同じである必要があります。 デフォルトのポートを使用します。ポートを変更した場合、ポートが1024以上になっていることを確認してください。 Tomcatでサンプルアプリケーションのプロファイルを作成してください(他のアプリケーションはすべて削除してください)。正常に実行されている場合は、メモリの制約があることを意味します。 プロファイリングには膨大なメモリが必要です。 tomcatの場合は-xms1024m -xmx1024mを使用します。 それ以外の場合はすべて失敗します。 jdk6とtomcat 6に切り替えることを考えてください。 多くの試験の後、私はjdk5とtomcat5に多くの制限があることを発見しました。 tomcat6とjdk6に切り替えると私の問題が解決しました。

JRockitの動作しないのNetBeansとプロファイリング、IBM JDKなど。

--kiran.kumar

関連する問題