Java
監控 Cloud Foundry 中的 java 應用程序記憶體
我有一個在 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 應用程序的問題,您就會知道 JVM 最終可能會消耗您告訴它們可以擁有的記憶體量,即使 Java 應用程序沒有使用它。(換句話說,它自己進行記憶體管理。)這意味著實際
java
程序可能正在消耗它的全部 1GB 記憶體,但這並不意味著它即將耗盡記憶體。根據我的經驗,對 Java 應用程序記憶體使用率的有用監控取決於從 JVM 本身獲取數據,通過 JMX 之類的東西(例如 via
jconsole
)。但是,Cloud Foundry 似乎沒有提供有關應用程序實際執行位置的資訊。(事實上,我發現有些人聲稱 Cloud Foundry 明確不會告訴您這些資訊。)這意味著我無處可連接 JMX 客戶端。如果我想監控 Cloud Foundry 中 Java 應用程序的記憶體使用率,我應該怎麼做?如果您知道得更多,請隨時反駁我的任何主張。
我能夠通過查詢 Cloud Foundry 的(Go)Router’s
/routes
URL找到與實例的直接連接。