WAS服务器(windows2003)cpu高?

cpu.png操作系统:windows2003 was设置:java初始堆大小512,最大堆大小1536发生频率:每天不定时发生一次,重启后正常初步判断是业务某些线程并发消耗内存解决方案:在服务器性能有限的情况下,进行线程控制和最大并发之类的控制或者采用列队处理现在的问题是,如何监控到消耗内存的线...显示全部

cpu.png

cpu.png

操作系统:windows2003
was设置:java初始堆大小512,最大堆大小1536
发生频率:每天不定时发生一次,重启后正常
初步判断是业务某些线程并发消耗内存
解决方案:在服务器性能有限的情况下,进行线程控制和最大并发之类的控制或者采用列队处理
现在的问题是,如何监控到消耗内存的线程,从而定位到时拿个业务模块问题。

收起
参与19

查看其它 3 个回答dogboy的回答

dogboydogboy系统运维工程师a

1、打开GC日志,看看CPU高的时间段,GC是否频繁
2、如果频繁基本可以定位是GC导致的,可能的原因是存在JVM泄露、JVM申请频繁、JVM设置偏小等,需要具体看
3、如果不频繁,GC正常,则应该是应用线程占用的CPU高。可以使用微软的 Process Explore工具,在cpu高的时候生成几个javacore,并记录下 Process Explore上占用CPU高的线程号,两个的时间尽量保持一致
4、根据线程号和javacore,找到占用cpu高的线程堆栈,可能需要多收集几次,有时对“同时”的要求比较高

银行 · 2017-12-11
浏览3765
王磊磊 邀答

回答者

dogboy
系统运维工程师a

dogboy 最近回答过的问题

回答状态

  • 发布时间:2017-12-11
  • 关注会员:5 人
  • 回答浏览:3765
  • X社区推广