[问题] 观察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