java获取服务器状态_获取远程服务器上 Java 进程的运行状态
為了安全考慮, 有些服務器會被限制登錄. 本文介紹如何獲取遠程服務器上 Java 進程的運行狀態.
啟動 jstatd 服務
在服務器端啟動 jstatd 服務后, 遠程的機器可以通過 rmi 協議獲取服務器上 Java 程序的運行狀態.
在服務器上創建 jstatd 的授權文件, 假設文件路徑為 /etc/jstatd.all.policy , 內容如下:
grant codebase "file:/usr/local/java/lib/tools.jar" {
permission java.security.AllPermission;
};
如果你的 JAVA_HOME 目錄不是 /usr/local/java 的話, 請改為正確的值.
接下來通過以下命令啟動 jstatd 服務:
jstatd -J-Djava.security.policy=/etc/jstatd.all.policy -p 12345
需要注意的地方有:
授權文件的路徑需要改成你自己的, 最好使用絕對路徑.
-p 參數指定 jstatd 服務監聽的端口. 如果不指定的話, 默認的端口為 1009. 不過從我自己的實踐來看, 最好還是設定一個比1024大的端口號.
遠程使用jps, jstat命令
在服務器上啟動 jstatd 服務之后, 就可以在自己的機器上查看服務器上運行的 Java 進程了. 假設服務器的IP為 192.168.2.37, jstatd 服務監聽的端口號為 12345.
首先通過 jps 命令獲取服務器上運行的 Java 進程列表:
jps -l rmi://192.168.2.37:12345
拿到 Java 進程的 pid 列表之后, 可以通過 jstat 命令獲取某個進程的 GC 信息:
jstat -gcutil rmi://39939@192.168.2.37:12345 1000 1000
其中 39939 表示 Java 進程的pid.
遠程使用 VisualVM 監控 Java 應用
通過VisualVM, 可以在圖形面板上看到很多 Java 應用的信息, 相當于多個命令(jps, jstat, jstack, jmap, jinfo)的集合.
VisualVM 是一個圖形應用, 只能運行在本機, 然后通過遠程連接, 獲取服務器上的 Java 應用的信息.
通過 $JAVA_HOME/bin/jvisualvm 命令啟動 VisualVM, 點擊下圖的紅框部分, 輸入要連接服務器的IP地址:
然后右鍵點擊服務器地址, 可以看到能夠通過2種方式連接服務器, 分別是 jmx 和 jstatd.
按照上述的步驟在服務器上啟動 jstatd 服務后, 就能夠以 jstatd 的形式連接到遠程服務器了.
VisualVM 通過 jstatd 連接的方式能夠獲取的信息比較有限. 如果想獲取更完整的 Java 應用信息, 可以通過 jmx 的方式連接服務器上的 Java 進程. 需要在啟動 Java 應用的時候, 指定以下和 jmx 相關的參數:
-Djava.rmi.server.hostname=10.11.2.139 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=9090
java.rmi.server.hostname 參數指定ip或者host, com.sun.management.jmxremote.port 參數指定 jmx 監聽的端口.
總結
以上是生活随笔為你收集整理的java获取服务器状态_获取远程服务器上 Java 进程的运行状态的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java实现网站错别字搜索对的结果_Ja
- 下一篇: java poi 解析excel_Jav