我有一个在Cloud Foundry环境中部署的Java应用程序。 我想监视应用程序的内存使用情况。 Cloud Foundry提供了cf app命令,用于生成关于指定应用程序的每个实例的输出。 在这里,您可以看到有关具有两个正在运行的实例(已过期)的特定应用程序的信息:
$ 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
但是,内存度量标准似乎仅报告在Cloud Foundry容器内运行的进程所使用的内存量。 如果您已经处理了监控Java应用程序的问题,那么即使Java应用程序没有使用Java应用程序,您也将意识到JVM最终可能会消耗尽可能多的内存。 (换句话说,它自己进行内存pipe理。)这意味着实际的java进程可能会消耗完全1GB的内存,但这并不意味着即将耗尽内存。
根据我的经验,Java应用程序内存利用率的有用监控取决于从JVM本身通过类似于JMX(例如通过jconsole )获取数据。 但是,Cloud Foundry似乎并没有提供关于应用程序在哪里运行的信息。 (事实上,我发现一些人声称Cloud Foundry明确不会告诉你这些信息。)这就意味着我没有地方连接一个JMX客户端。
如果我想监视Cloud Foundry中的Java应用程序的内存使用情况,我该如何做? 如果你知道的更好,请随时反驳我的任何要求。
通过查询Cloud Foundry (Go)路由器/routes URL,我能够find与实例的直接连接。