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

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

Links booklink

Contact Us: admin [ a t ] ucptt.com