実稼働サーバーでjmx(ラムダプローブ)を有効にすることをお勧めしますか?

StackOverflow https://stackoverflow.com/questions/313730

質問

Sun VM 1.5.0_06-b05で実行されているTomcat 5.5.17にデプロイされたWebアプリでいくつかの速度低下が発生しており、ホスティング会社は問題を見つけるのに十分なデータを提供していません。

lambdaプローブを本番サーバーにインストールすることを検討していますが、JMX(com.sun.managementを有効にする必要があります.jmxremote)メモリおよびCPU統計を取得するため。

JMXを有効にすると、パフォーマンスが大幅に低下しますか?

JMXを有効にした場合、セキュリティ上の欠陥はありますか? JMXへのローカルアクセスのみを有効にする場合、安全な認証を設定する必要がありますか?

本番環境で問題なく同じ(tomcat + lambdaプローブ)を使用している人はいますか?

更新

回答を見ると、JMXだけを有効にしてもVMに大きなオーバーヘッドは生じないようです。 VMに接続されている監視アプリケーション( JConsole lambda probe など)が過剰な献身でポーリングしている場合、余分な作業が発生する可能性があります。

役に立ちましたか?

解決

安全な認証を使用することにより、セキュリティ上の欠陥を解消できます。 JMXサービスを準備しておくだけで大きなオーバーヘッドは発生しないため、一般的には良い考えです。これについては、ベンチマークこちらがあります。

他のヒント

JMXのオーバーヘッドは低く、SSLと認証を使用してセキュリティを修正できます。 -Dcom.sun.management.jmxremote.ssl = trueおよび-Dcom.sun.management.jmxremote.authenticate = trueを設定します

詳細については、こちらをご覧ください。証明書の設定などに関する情報

コードの計測を開始すると、オーバーヘッドが問題になります。オーバーヘッドはかなり大きくなる可能性があり、インスツルメンテーションはアプリケーションの動作に影響を与える可能性があります。取得するもの、いわゆる heisenbergエフェクトは表示されません。

低オーバーヘッドが必要な場合は、 JRockitに付属のツールを使用します。 。 JVMが常に収集する情報に便乗します。 JVMは、どのメソッドが最も実行されているかの統計を保持して、最適化するメソッドを決定します。 JVMはまた、メモリ使用量/パターンを追跡して、選択するgc-stategyを決定します。 JRockitは、通常は別の JMVTI -agent。

JMXは、接続を待機し、外部プロセスが収集されたデータにアクセスできるようにする単なるソケットです。通常、ペナルティは非常に低くなります(もちろん、リクエストでJMXサーバーをたたく場合を除きます)。

JMXを使用すると、Java VMの基本を理解できます。 GCを実行してシャットダウンするコマンドがあります。ただし、JMXは公開キーと認証を使用する安全な接続モードを提供します。詳細についてはドキュメントをご覧ください。

運用サーバーでラムダプローブを使用していますが、大きなオーバーヘッドはありませんでした。 (Tomcats 5.5および6.0、JDK 5およびJDK 6)を使用して、プロダクションの準備ができた信頼できる製品としてプローブを推奨できます。

これは、JMXの実装と、監視したいものがどれだけ高価かによって異なります。 私は少なくとも1つのJMXアプリケーションを使用していますが、これには比較的高いメモリオーバーヘッドがあります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top