java 判断进程状态_获取远程服务器上 Java 进程的运行状态
為了安全考慮, 有些服務(wù)器會被限制登錄. 本文介紹如何獲取遠(yuǎn)程服務(wù)器上 Java 進(jìn)程的運行狀態(tài).
啟動 jstatd 服務(wù)
在服務(wù)器端啟動 jstatd 服務(wù)后, 遠(yuǎn)程的機器可以通過 rmi 協(xié)議獲取服務(wù)器上 Java 程序的運行狀態(tài).
在服務(wù)器上創(chuàng)建 jstatd 的授權(quán)文件, 假設(shè)文件路徑為/etc/jstatd.all.policy, 內(nèi)容如下:
grant codebase "file:/usr/local/java/lib/tools.jar" {
permission java.security.AllPermission;
};
如果你的JAVA_HOME目錄不是/usr/local/java的話, 請改為正確的值.
接下來通過以下命令啟動 jstatd 服務(wù):
jstatd -J-Djava.security.policy=/etc/jstatd.all.policy -p 12345
需要注意的地方有:
授權(quán)文件的路徑需要改成你自己的, 最好使用絕對路徑.
-p參數(shù)指定 jstatd 服務(wù)監(jiān)聽的端口. 如果不指定的話, 默認(rèn)的端口為 1009. 不過從我自己的實踐來看, 最好還是設(shè)定一個比1024大的端口號.
遠(yuǎn)程使用jps, jstat命令
在服務(wù)器上啟動 jstatd 服務(wù)之后, 就可以在自己的機器上查看服務(wù)器上運行的 Java 進(jìn)程了. 假設(shè)服務(wù)器的IP為 192.168.2.37, jstatd 服務(wù)監(jiān)聽的端口號為 12345.
首先通過 jps 命令獲取服務(wù)器上運行的 Java 進(jìn)程列表:
jps -l rmi://192.168.2.37:12345
拿到 Java 進(jìn)程的 pid 列表之后, 可以通過 jstat 命令獲取某個進(jìn)程的 GC 信息:
jstat -gcutil rmi://39939@192.168.2.37:12345 1000 1000
其中 39939 表示 Java 進(jìn)程的pid.
遠(yuǎn)程使用 VisualVM 監(jiān)控 Java 應(yīng)用
通過VisualVM, 可以在圖形面板上看到很多 Java 應(yīng)用的信息, 相當(dāng)于多個命令(jps, jstat, jstack, jmap, jinfo)的集合.
VisualVM 是一個圖形應(yīng)用, 只能運行在本機, 然后通過遠(yuǎn)程連接, 獲取服務(wù)器上的 Java 應(yīng)用的信息.
通過 $JAVA_HOME/bin/jvisualvm 命令啟動 VisualVM, 點擊下圖的紅框部分, 輸入要連接服務(wù)器的IP地址:
然后右鍵點擊服務(wù)器地址, 可以看到能夠通過2種方式連接服務(wù)器, 分別是 jmx 和 jstatd.
按照上述的步驟在服務(wù)器上啟動 jstatd 服務(wù)后, 就能夠以 jstatd 的形式連接到遠(yuǎn)程服務(wù)器了.
VisualVM 通過 jstatd 連接的方式能夠獲取的信息比較有限. 如果想獲取更完整的 Java 應(yīng)用信息, 可以通過 jmx 的方式連接服務(wù)器上的 Java 進(jìn)程. 需要在啟動 Java 應(yīng)用的時候, 指定以下和 jmx 相關(guān)的參數(shù):
-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參數(shù)指定ip或者h(yuǎn)ost, com.sun.management.jmxremote.port參數(shù)指定 jmx 監(jiān)聽的端口.
總結(jié)
以上是生活随笔為你收集整理的java 判断进程状态_获取远程服务器上 Java 进程的运行状态的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 16家支付机构被拉黑名单,这些POS机千
- 下一篇: java多线程 sycophantic_