posts - 28, comments - 37, trackbacks - 0, articles - 0

          導航

          <2011年11月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          常用鏈接

          留言簿(1)

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          jps無法顯示jvm進程

          Posted on 2011-11-14 16:15 俞靈 閱讀(5954) 評論(0)  編輯  收藏

          本文轉自

          http://trinea.iteye.com/blog/1196400

           

          1、jps的作用

          jps類似linux的ps命令,不同的是ps是用來顯示進程,而jps只顯示java進程,準確的說是當前用戶已啟動的部分java進程信息,信息包括進程號和簡短的進程command。

           

          2、某個java進程已經啟動,用jps卻顯示不了該進程進程號

          這個問題已經碰到過兩次了,所以在這里總結下。

          現象:

          用ps -ef|grep java能看到啟動的java進程,但是用jps查看卻不存在該進程的id。待會兒解釋過之后就能知道在該情況下,jconsole、jvisualvm可能無法監(jiān)控該進程,其他java自帶工具也可能無法使用

           

          分析:

          java程序啟動后,默認(請注意是默認)會在/tmp/hsperfdata_userName目錄下以該進程的id為文件名新建文件,并在該文件中存儲jvm運行的相關信息,其中的userName為當前的用戶名,/tmp/hsperfdata_userName目錄會存放該用戶所有已經啟動的java進程信息。對于windows機器/tmp用Windows存放臨時文件目錄代替。

           

          而jps、jconsole、jvisualvm等工具的數據來源就是這個文件(/tmp/hsperfdata_userName/pid)。所以當該文件不存在或是無法讀取時就會出現jps無法查看該進程號,jconsole無法監(jiān)控等問題

           

          原因:

          (1)、磁盤讀寫、目錄權限問題

          若該用戶沒有權限寫/tmp目錄或是磁盤已滿,則無法創(chuàng)建/tmp/hsperfdata_userName/pid文件。或該文件已經生成,但用戶沒有讀權限

           

          (2)、臨時文件丟失,被刪除或是定期清理

          對于linux機器,一般都會存在定時任務對臨時文件夾進行清理,導致/tmp目錄被清空。這也是我第一次碰到該現象的原因

          這個導致的現象可能會是這樣,用jconsole監(jiān)控進程,發(fā)現在某一時段后進程仍然存在,但是卻沒有監(jiān)控信息了。

           

          (3)、java進程信息文件存儲地址被設置,不在/tmp目錄下

          上面我們在介紹時說默認會在/tmp/hsperfdata_userName目錄保存進程信息,但由于以上1、2所述原因,可能導致該文件無法生成或是丟失,所以java啟動時提供了參數,可以對這個文件的位置進行設置,而jps、jconsole都只會從/tmp目錄讀取,而無法從設置后的目錄讀物信息,

                   這個問題只會在jdk 6u23和6u24上出現,在6u23和6u24上,進程信息會保存在-Djava.io.tmpdir下, 因此如果它被設置為非/tmp目錄則會導致 jps,jconsole等無法讀取的現象, 但在其他版本的jdk上,即使設置-Djava.io.tmpdir為非/tmp,  也會在/tmp/hsperfdata_userName下保存java進程信息.因此可以說這是6u23和6u24的bug,

                   以下是jdk對該bug的描述地址:

          bug描述:
          http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7021676
          bug的修復描述:
          http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7009828
          bug修改代碼:
          http://hg.openjdk.java.net/jdk7/hotspot/hotspot/rev/34d64ad817f4

           

           

          關于設置該文件位置的參數為-Djava.io.tmpdir


          只有注冊用戶登錄后才能發(fā)表評論。


          網站導航:
           
          主站蜘蛛池模板: 满洲里市| 缙云县| 通江县| 石阡县| 襄樊市| 北海市| 宁津县| 临朐县| 清镇市| 梅州市| 郴州市| 望城县| 明溪县| 沛县| 营口市| 左云县| 图片| 合江县| 平顶山市| 海林市| 贵南县| 冷水江市| 玉环县| 淳化县| 赤峰市| 岑溪市| 外汇| 仙居县| 鹤山市| 乌恰县| 嵊泗县| 新兴县| 台南县| 饶河县| 丰都县| 泸水县| 广河县| 承德市| 丰台区| 策勒县| 道真|