[問題] 觀察JAVA耗費資源的方法?

看板java作者 (mozzan)時間11年前 (2014/04/04 15:54), 編輯推噓9(9016)
留言25則, 8人參與, 最新討論串1/2 (看更多)
我們公司是用Java開發webmail,server端使用類似Tomcat作法 昨天我們公司的webmail server主機loading突然變大 檢查一下發現Java的部分,記憶體使用量衝到了1.3G。 雖然我是開發webmail的,但對這種系統性能調校完全初心, 後來有看到可以使用jconsole去遠端監看資源耗費的情況, 但還是不知道該如何著手和觀察, 故有以下幾個問題想請教: 1. 我該如何知道或觀察目前所有連線(thread)的記憶體使用、cpu使用、物件資源 甚至程式執行的狀況。 2. 當系統負載過高時(指java耗費過多資源),是否有緊急處理的機制? 因為像是昨天 負載變高導致寄信出現狀況,當然這和寫法有關。 3. jconsole的方法會讓server去listen某個port,想請問這樣會不會導致server負載過大 一般會長期開著嗎? 另外最近也在找這方面的書,有看到一本 直達Java虛擬機器 好像不錯 不知道有沒有這方面資料能分享呢? 不管是基礎或工具都OK 感謝大大閱讀文章 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.168.91.176 ※ 文章網址: http://www.ptt.cc/bbs/java/M.1396598086.A.E49.html

04/04 16:12, , 1F
jstack jmap prstat etc..
04/04 16:12, 1F

04/04 16:31, , 2F
我覺得應該先補行為 log,依此試圖 reproduce 然後才監看
04/04 16:31, 2F

04/04 16:32, , 3F
這樣才不用考慮你的 3(難不成你想在 online 的機器上...
04/04 16:32, 3F

04/04 16:49, , 4F
謝謝回答!雖然是online,但是是公司內部使用的,想說這樣才
04/04 16:49, 4F

04/04 16:51, , 5F
能觀察真正使用者使用的狀況,否則測試機也很難真正反應狀
04/04 16:51, 5F

04/04 22:01, , 6F
沒有概念你們的用法對於 1.3g 是合理或不合理。
04/04 22:01, 6F

04/04 22:43, , 7F
是過高,因為server已經有狀況了
04/04 22:43, 7F

04/04 22:55, , 8F
這樣還是沒說明這用量合不合理,單純聽起來只是 server 弱qq
04/04 22:55, 8F

04/05 00:22, , 9F
當然也是server弱,但是因為這server就是出貨產品,所以
04/05 00:22, 9F

04/05 00:24, , 10F
說不定就是需要 1.3G [茶]
04/05 00:24, 10F

04/05 00:24, , 11F
硬體方面不可能動,另外我是不知道以前用量大概是到多少
04/05 00:24, 11F

04/05 00:27, , 12F
其實我的重點也是想觀察資源的消耗
04/05 00:27, 12F

04/06 13:13, , 13F
很難說合理不合理 我家的oracle javaw常常吃到2g呀
04/06 13:13, 13F

04/06 19:58, , 14F
觀察Old generation的使用量,如果full GC後是成長
04/06 19:58, 14F

04/06 19:59, , 15F
那大概就要注意了
04/06 19:59, 15F

04/08 14:53, , 16F
我們有用 dynatrace
04/08 14:53, 16F

04/08 20:42, , 17F
好像用工具無法得知各別Thread使用的記憶體,因為Heap
04/08 20:42, 17F

04/08 20:46, , 18F
是共用的,但visualVm能觀察本機的process的每個thread
04/08 20:46, 18F

04/08 20:54, , 19F
allocate heap size
04/08 20:54, 19F

04/08 23:30, , 20F
如果沒有要很即時的話...jmap可以把heap給dump出來
04/08 23:30, 20F

04/08 23:31, , 21F
搭配一些Profiling工具可以看thread當時的記憶體使用
04/08 23:31, 21F

04/08 23:33, , 22F
包含thread使用了那些object、object的value等資訊
04/08 23:33, 22F

04/08 23:36, , 23F
之前曾經配過yourkit去找memory leak跟deadlock問題
04/08 23:36, 23F

04/09 17:04, , 24F
JavaMelody:
04/09 17:04, 24F

04/12 00:12, , 25F
我覺得可以先從程式檢查是不是該關閉的都有確實關好
04/12 00:12, 25F
文章代碼(AID): #1JFcL6v9 (java)
文章代碼(AID): #1JFcL6v9 (java)