日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Jstatd命令(Java Statistics Monitoring Daemon)

發布時間:2025/3/15 java 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Jstatd命令(Java Statistics Monitoring Daemon) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

JDK內置工具使用

一、javah命令(C?Header?and?Stub?File?Generator)

二、jps命令(Java?Virtual?Machine?Process?Status?Tool)

三、jstack命令(Java?Stack?Trace)

四、jstat命令(Java?Virtual?Machine?Statistics?Monitoring?Tool)

五、jmap命令(Java?Memory?Map)

六、jinfo命令(Java?Configuration?Info)

七、jconsole命令(Java?Monitoring?and?Management?Console)

八、jvisualvm命令(Java?Virtual?Machine?Monitoring,?Troubleshooting,?and?Profiling?Tool)

九、jhat命令(Java?Heap?Analyse?Tool)

十、Jdb命令(The?Java?Debugger)

十一、Jstatd命令(Java Statistics Monitoring Daemon)

?

1、介紹

??? jstatd是一個基于RMI(Remove?Method?Invocation)的服務程序,它用于監控基于HotSpot的JVM中資源的創建及銷毀,并且提供了一個遠程接口允許遠程的監控工具連接到本地的JVM執行命令。

??? jstatd是基于RMI的,所以在運行jstatd的服務器上必須存在RMI注冊中心,如果沒有通過選項"-p?port"指定要連接的端口,jstatd會嘗試連接RMI注冊中心的默認端口。后面會談到如何連接到一個默認的RMI內部注冊中心,如何禁止默認的RMI內部注冊中心的創建,以及如何啟動一個外部注冊中心。

?

2、參數選項

??? jstatd命令支持如下的選項:

??? -nr?如果RMI注冊中心沒有找到,不會創建一個內部的RMI注冊中心。

??? -p?port?RMI注冊中心的端口號,默認為1099。

??? -n?rminame?默認為JStatRemoteHost;如果同一臺主機上同時運行了多個jstatd服務,rminame可以用于唯一確定一個jstatd服務;這里需要注意一下,如果開啟了這個選項,那么監控客戶端遠程連接時,必須同時指定hostid及vmid,才可以唯一確定要連接的服務,這個可以參看jps章節中列出遠程服務器上Java進程的示例。

??? -J?用于傳遞jvm選項到由javac調用的java加載器中,例如,“-J-Xms48m”將把啟動內存設置為48M,使用-J選項可以非常方便的向基于Java的開發的底層虛擬機應用程序傳遞參數。

?

3、安全性

??? jstatd服務只能監視具有適當的本地訪問權限的JVM,因此jstatd進程與被監控的JVM必須運行在相同的用戶權限中。但是有一些特殊的用戶權限,如基于UNIX(TM)為系統的root用戶,它有權限訪問系統中所有JVM的資源,如果jstatd進程運行在這種權限中,那么它可以監視系統中的所有JVM,但是這也帶來了額外的安全問題。

??? jstatd服務不會對客戶端進行任何的驗證,因此運行了jstatd服務的JVMs,網絡上的任何用戶的都具有訪問權限,這種暴露不是我們所希望的,因此在啟動jstatd之前本地安全策略必須要加以考慮,特別是在生產環境中或者是在不安全的網絡環境中。

??? 如果沒有其他安全管理器被安裝,jstatd服務將會安裝一個RMISecurityPolicy的實例,因此需要在一個安全策略文件中指定,該策略文件必須符合的默認策略實施的策略文件語法。

??? 下面的這個示例策略將允許jstatd服務具有JVM全部的訪問權限:????

[plain] view plain copy

  • grant?codebase?"file:${java.home}/../lib/tools.jar"?{??
  • ???permission?java.security.AllPermission;??
  • };??
  • ??? 注:此處策略中的java.home,和JAVA_HOME不是一個概念,童鞋們不要搞錯了,此處的java.home指的是JRE的路徑,這個是Java的系統屬性,不需要手工指定,通常是這個jdk下面的jre路徑,即可以認為${java.home}${JAVA_HOME}/jre是等價,如果想查看這個變量的值,可以任意找一個運行著的Java應用,找到它的PID,然后通過如下jinfo命令查看就可以查看到java.home的值:

    [plain] view plain copy

  • jinfo?${PID}|grep?java.home??
  • ?

    ??? 也可以在Java代碼中通過如下方式獲取到:

    [plain] view plain copy

  • System.out.println(System.getProperty("java.home"))??
  • ??? 將上面的策略內容拷貝一個文件中,文件名可以隨意取,為了形象我們將文件名命名為jstatd.all.policy,文件存放的路徑也可以隨意,只有你當前登陸的用戶具有訪問權限就可以,然后執行以下命令就可以啟動jstatd服務:

    [plain] view plain copy

  • jstatd?-J-Djava.security.policy=jstatd.all.policy??
  • ??? 如果是在具有安全限制的環境中,jstatd的策略安全一定要設置得當,并且只允許受信任的服務器或者網絡訪問,以免遭受網絡攻擊,如果存在安全隱患,最好不要啟動jstatd服務,就在本地使用jstat及jps等工具對JVM進行監控了。

    ?

    4、示例

    4.1、使用內部RMI注冊中心

    ??? 下面這個示例演示了通過內部RMI注冊中心啟動jstatd,這個示例假設沒有其它的服務綁定到默認的RMI注冊中心端口(默認端口是1099)。

    [plain] view plain copy

  • jstatd?-J-Djava.security.policy=jstatd.all.policy??
  • ??? 注:如果基于默認端口1099的RMI注冊中心原來沒有被啟動過,那么上面運行的命令首先會啟動端口為1099的RMI注冊中心,然后再啟動jstatd服務,此時即使jstatd停止了,RMI注冊中心也不會停止;如果是再次執行上面的命令,就不會再次啟動RMI注冊中心,jstatd會直接注冊到注冊中心。

    ?

    4.2、使用外部的RMI注冊中心

    ??? 這個示例演示了使用一個外部的RMI注冊中心來啟動jstatd,如果默認的內部注冊中心已經被啟動了,下面的這個示例就會拋出“端口1099已經被占用”的異常,因為它嘗試在1099端口啟動外部RMI注冊中心:

    [plain] view plain copy

  • rmiregistry&jstatd?-J-Djava.security.policy=all.policy??
  • ??? 這個示例演示了使用一個外部的RMI注冊中心來啟動jstatd,此注冊中心的端口為2020:

    [plain] view plain copy

  • rmiregistry?2020&jstatd?-J-Djava.security.policy=all.policy?-p?2020??
  • ??? 這個示例演示了使用一個外部的RMI注冊中心來啟動jstatd,此注冊中心的端口為2020,并且綁定到RMI注冊中心的名為AlternateJstatdServerName

    [plain] view plain copy

  • rmiregistry?2020&jstatd?-J-Djava.security.policy=all.policy?-p?2020?-n?AlternateJstatdServerName??
  • ??? 注:這個端口為2020的RMI注冊中心,我們會在jps章節中使用到。

    ?

    4.3、禁止內部RMI注冊中心的創建

    ??? 這個示例演示了jstatd在啟動的時候,如果沒有找到默認的RMI注冊中心,也不會創建默認的注冊中心。這個示例中如果沒有RMI注冊中心在運行,此示例就會報錯,如果存在就會正常運行:???

    [plain] view plain copy

  • jstatd?-J-Djava.security.policy=all.policy?-nr??
  • ?

    ?

    4.4、開啟RMI日記記錄

    ??? 這個示例演示的是jstatd運行在開啟了日志記錄功能的RMI注冊中,這個對于問題查找或監控服務狀態非常有用:

    [plain] view plain copy

  • jstatd?-J-Djava.security.policy=all.policy?-J-Djava.rmi.server.logCalls=true??
  • 轉載于:https://my.oschina.net/zorigin/blog/758412

    總結

    以上是生活随笔為你收集整理的Jstatd命令(Java Statistics Monitoring Daemon)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。