作者mozzan (mozzan)
看板java
标题[问题] 观察JAVA耗费资源的方法?
时间Fri Apr 4 15:54:42 2014
我们公司是用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://webptt.com/cn.aspx?n=bbs/java/M.1396598086.A.E49.html
1F:推 del680202:jstack jmap prstat etc.. 04/04 16:12
2F:推 PsMonkey:我觉得应该先补行为 log,依此试图 reproduce 然後才监看 04/04 16:31
3F:→ PsMonkey:这样才不用考虑你的 3(难不成你想在 online 的机器上... 04/04 16:32
4F:→ mozzan:谢谢回答!虽然是online,但是是公司内部使用的,想说这样才 04/04 16:49
5F:→ mozzan:能观察真正使用者使用的状况,否则测试机也很难真正反应状 04/04 16:51
6F:推 qrtt1:没有概念你们的用法对於 1.3g 是合理或不合理。 04/04 22:01
7F:→ mozzan:是过高,因为server已经有状况了 04/04 22:43
8F:→ qrtt1:这样还是没说明这用量合不合理,单纯听起来只是 server 弱qq 04/04 22:55
9F:→ mozzan:当然也是server弱,但是因为这server就是出货产品,所以 04/05 00:22
10F:→ PsMonkey:说不定就是需要 1.3G [茶] 04/05 00:24
11F:→ mozzan:硬体方面不可能动,另外我是不知道以前用量大概是到多少 04/05 00:24
12F:→ mozzan:其实我的重点也是想观察资源的消耗 04/05 00:27
13F:推 hate9527:很难说合理不合理 我家的oracle javaw常常吃到2g呀 04/06 13:13
14F:推 del680202:观察Old generation的使用量,如果full GC後是成长 04/06 19:58
15F:→ del680202:那大概就要注意了 04/06 19:59
16F:推 SansWord:我们有用 dynatrace 04/08 14:53
17F:→ mozzan:好像用工具无法得知各别Thread使用的记忆体,因为Heap 04/08 20:42
18F:→ mozzan:是共用的,但visualVm能观察本机的process的每个thread 04/08 20:46
19F:→ mozzan:allocate heap size 04/08 20:54
20F:推 del680202:如果没有要很即时的话...jmap可以把heap给dump出来 04/08 23:30
21F:→ del680202:搭配一些Profiling工具可以看thread当时的记忆体使用 04/08 23:31
22F:→ del680202:包含thread使用了那些object、object的value等资讯 04/08 23:33
23F:→ del680202:之前曾经配过yourkit去找memory leak跟deadlock问题 04/08 23:36
24F:推 loser5566:JavaMelody: 04/09 17:04
25F:推 kiwatami:我觉得可以先从程式检查是不是该关闭的都有确实关好 04/12 00:12