CloudFoundry環境内にデプロイしているJavaアプリケーションがあります。アプリケーションのメモリ使用量を監視したい。 Cloud Foundryは、指定されたアプリケーションの各インスタンスに関する出力を生成するcf app
コマンドを提供します。ここでは、2つの実行中のインスタンス(削除された)を持つ特定のアプリケーションに関する情報を確認できます。
$ cf app myapp
Showing health and status for app myapp in org myorg / space myspace as admin...
OK
requested state: started
instances: 2/2
usage: 1G x 2 instances
urls: myapp.example.com
last uploaded: Wed Jan 27 09:00:53 UTC 2016
stack: mylinuxstack
buildpack: myjavabuildpack
state since cpu memory disk details
#0 running 2016-01-27 09:01:31 AM 0.4% 689.8M of 1G 0 of 1G
#1 running 2016-02-03 05:35:03 PM 0.0% 624.2M of 1G 0 of 1G
ただし、メモリメトリックは、CloudFoundryコンテナ内で実行されているプロセスによって使用されたメモリの量を報告しているように見えます。 Javaアプリの監視を扱ったことがある場合、Javaアプリケーションがそうでなくても、JVMは最終的にはJVMが持つことができると言った量のメモリを消費する可能性があることに注意してください。それを使用します。 (つまり、独自のメモリ管理を行います。)これは、実際のJava
プロセスが1GBのメモリをすべて消費している可能性があることを意味しますが、メモリが不足しそうなことを意味するわけではありません。
私の経験では、Javaアプリのメモリ使用率の有用な監視は、JMXなどを介して(jconsole
などを介して)JVM自体からデータを取得することに依存しています。ただし、Cloud Foundryは、アプリが実際に実行されている場所に関する情報を提供していないようです。 (実際、Cloud Foundryは明示的にその情報を教えてくれないと主張する人がいます。)つまり、JMXクライアントを接続する場所がないということです。
Cloud Foundry内のJavaアプリのメモリ使用率を監視したい場合、どのように監視すればよいですか?よくご存知の場合は、私の主張に反論してください。
Cloud Foundryの (Go)Routerの/routes
URL をクエリすることで、インスタンスへの直接接続を見つけることができました。