使用Java VisualVM監控遠程服務器部署在Docker容器中的java項目

有時候程序內存溢出或者做壓力測試的時候我們就需要監控我們的程序的運行狀況,包括內存使用情況、CPU使用情況等等,Java VisualVM就是監控這些數據的一個很好的工具,它在JDK安裝目錄的bin目錄下。
在這裏插入圖片描述
在打開這個工具之前,我們先對我們部署的java項目做一些配置。我這裏是使用Docker-Compose對容器進行管理,所以我這裏主要就是修改docker-compose.yml文件和docker容器的構建文件Dockerfile。
在這裏插入圖片描述
紅框中的那一句就是爲了使用Java VisualVM實現監控而多加的一行,這一行的目的是爲了把容器內的1199端口掛載到宿主機的1199端口。
在這裏插入圖片描述
紅框中的內容就是爲了使用Java VisualVM實現監控而多加的內容。其中
-Djava.rmi.server.hostname指定宿主機的公網ip
-Dcom.sun.management.jmxremote.port用於Java VisualVM遠程監控的端口
-Dcom.sun.management.jmxremote.rmi.port指定“用於Java VisualVM遠程監控的端口”需要掛載到宿主機的哪個端口
-Dcom.sun.management.jmxremote.authenticate配置是否需要驗證,如果true,則在使用Java VisualVM連接的時候需要你認證賬號密碼
-Dcom.sun.management.jmxremote.ssl不指定ssl
在這裏插入圖片描述
最後開放上面配置的1199端口,如果你的是阿里雲服務器,就像我下圖一樣,在阿里雲控制檯配置安全組規則。別的雲服務器安全策略配置方式可能不一樣,有的可能是配置防火牆,反正目的就是向外開放1199端口。
在這裏插入圖片描述

修改好這兩個文件之後重新構建你的容器,然後在你本地就可以遠程監控你的Java程序了。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
最後監控成功,如下圖
在這裏插入圖片描述

當我們需要“堆dump”操作的時候,dump文件是生成在遠程服務器的docker容器內的,如下兩張圖,我們需要把dump文件拿到本地來分析的話,需要找到dump文件的位置
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
所以我們要把容器內的tmp目錄掛載在宿主機的tmp目錄,這樣我們就可以通過宿主機拿到我們的dump文件
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章