実稼働サーバーでjmx(ラムダプローブ)を有効にすることをお勧めしますか?
-
10-07-2019 - |
質問
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アプリケーションを使用していますが、これには比較的高いメモリオーバーヘッドがあります。