看板 java 關於我們 聯絡資訊
我們公司是用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
del680202:jstack jmap prstat etc.. 04/04 16:12
PsMonkey:我覺得應該先補行為 log,依此試圖 reproduce 然後才監看 04/04 16:31
PsMonkey:這樣才不用考慮你的 3(難不成你想在 online 的機器上... 04/04 16:32
mozzan:謝謝回答!雖然是online,但是是公司內部使用的,想說這樣才 04/04 16:49
mozzan:能觀察真正使用者使用的狀況,否則測試機也很難真正反應狀 04/04 16:51
qrtt1:沒有概念你們的用法對於 1.3g 是合理或不合理。 04/04 22:01
mozzan:是過高,因為server已經有狀況了 04/04 22:43
qrtt1:這樣還是沒說明這用量合不合理,單純聽起來只是 server 弱qq 04/04 22:55
mozzan:當然也是server弱,但是因為這server就是出貨產品,所以 04/05 00:22
PsMonkey:說不定就是需要 1.3G [茶] 04/05 00:24
mozzan:硬體方面不可能動,另外我是不知道以前用量大概是到多少 04/05 00:24
mozzan:其實我的重點也是想觀察資源的消耗 04/05 00:27
hate9527:很難說合理不合理 我家的oracle javaw常常吃到2g呀 04/06 13:13
del680202:觀察Old generation的使用量,如果full GC後是成長 04/06 19:58
del680202:那大概就要注意了 04/06 19:59
SansWord:我們有用 dynatrace 04/08 14:53
mozzan:好像用工具無法得知各別Thread使用的記憶體,因為Heap 04/08 20:42
mozzan:是共用的,但visualVm能觀察本機的process的每個thread 04/08 20:46
mozzan:allocate heap size 04/08 20:54
del680202:如果沒有要很即時的話...jmap可以把heap給dump出來 04/08 23:30
del680202:搭配一些Profiling工具可以看thread當時的記憶體使用 04/08 23:31
del680202:包含thread使用了那些object、object的value等資訊 04/08 23:33
del680202:之前曾經配過yourkit去找memory leak跟deadlock問題 04/08 23:36
loser5566:JavaMelody: 04/09 17:04
kiwatami:我覺得可以先從程式檢查是不是該關閉的都有確實關好 04/12 00:12