WAS服务器(windows2003)cpu高?

cpu.png

cpu.png

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

3回答

wodese7enwodese7en  其它 , 其他
cnsdlywei王磊磊liujiacai赞同了此回答
使用wsadmin脚本抓一下javacore,查看是否有blocked/deadlock/waiting on condition状态的线程,如果有,可以分析一下相关线程的堆栈信息。同时查看一下stack depth直校大的线程,就可以抓取出对应的内容并优化。...显示全部

使用wsadmin脚本抓一下javacore,查看是否有blocked/deadlock/waiting on condition状态的线程,如果有,可以分析一下相关线程的堆栈信息。同时查看一下stack depth直校大的线程,就可以抓取出对应的内容并优化。

收起
 2017-12-06
浏览1200
王磊磊 邀答
dogboydogboy  系统运维工程师 , ICBC
苏十一cnsdlywei王磊磊赞同了此回答
1、打开GC日志,看看CPU高的时间段,GC是否频繁2、如果频繁基本可以定位是GC导致的,可能的原因是存在JVM泄露、JVM申请频繁、JVM设置偏小等,需要具体看3、如果不频繁,GC正常,则应该是应用线程占用的CPU高。可以使用微软的 Process Explore工具,在cpu高的时候生成几个javacore,并记...显示全部

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
浏览1438
王磊磊 邀答
bobo2003998bobo2003998  其它 , Mory
cnsdlywei王磊磊赞同了此回答
看样子像是gc特别高的样子。能不能把最大最小再调高一下,64位的机器可以再加一倍试试显示全部

看样子像是gc特别高的样子。能不能把最大最小再调高一下,64位的机器可以再加一倍试试

收起
 2017-12-07
浏览1023
王磊磊 邀答

提问者

liujiacai系统工程师, 广州大厦

问题状态

  • 发布时间:2017-12-05
  • 关注会员:4 人
  • 问题浏览:2041
  • 最近回答:2017-12-11
  • 关于TWT  使用指南  社区专家合作  厂商入驻社区  企业招聘  投诉建议  版权与免责声明  联系我们
    © 2019  talkwithtrend — talk with trend,talk with technologist 京ICP备09031017号-30