虚拟机线程监控

这几天系统老是在二个时间点变慢,实在是郁闷阿,正式运行环境,没有办法进行调试,只能进行跟踪了,找到可以查看线程的方式。

系统运行在unix上运行如下命令进行
1、首先查询进程信息,由于通过unix,通过unix命令
prstat -L -p $1 1 1 >> monitor.log
将进程信息输入到日志文件中,可以查看到进程占用cpu较高的进程
PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/LWPID
23112 root 2373M 2295M cpu10 0 10 7:24.27 12% java/5
2、通过查询发现java/5占用cpu到了12%,说明是此线程又问题,然后查询他对应的线程号,继续查询日志文件,查询到如下信息
----------------- lwp# 5 / thread# 4 --------------------
fe2276b0 __1cPContiguousSpaceWprepare_for_compaction6MpnMCompactPoint__v_ (91808f68, e9400000, 200, 0, f9800000, 6) + 190
fe232da8 __1cKGenerationWprepare_for_compaction6MpnMCompactPoint__v_ (ab5e8, f97816f4, e9692170, a9ad4, fe60b808, 138a8) + 30
fe263a5c __1cQGenCollectedHeapWprepare_for_compaction6M_v_ (a9b80, fe566c11, 0, 1, 34738, 3c00) + 3c
fe264804 __1cMGenMarkSweepTinvoke_at_safepoint6FipnSReferenceProcessor_i_v_ (fe610a60, 7f0fff80, 0, 4c00, 5c00, 5cc8) + 2b8
fe265eb8 __1cbCOneContigSpaceCardGenerationHcollect6MiiIii_v_ (ab5e8, 1, 0, 2a, 0, 0) + 38
fe233a18 __1cQGenCollectedHeapNdo_collection6MiiIiiiri_v_ (2a, fe5ac000, 0, fe566513, 0, fe5ebbbc) + 574
fe23c5c8 __1cbCTwoGenerationCollectorPolicyZsatisfy_failed_allocation6MIiiri_pnIHeapWord__ (a9b80, 6, fe5ebbbc, 0, 5cfff54c, ffffff8c) + 1ec
fe23c270 __1cbAVM_GenCollectForAllocationEdoit6M_v_ (5cfff530, fe0eba0c, 394, fe5ac000, b3f30, fe5f88b8) + 8c
fe2301e0 __1cMVM_OperationIevaluate6M_v_ (5cfff530, 4800, fe5ac000, 37138, 4de4f4, fe1e3e90) + 8c
fe22fc00 __1cIVMThreadSevaluate_operation6MpnMVM_Operation__v_ (f6128, 5cfff530, 5400, 5674, 5400, 0) + 84
fe2f4840 __1cIVMThreadEloop6M_v_ (4c00, 4800, 487c, 4800, 4800, 3c00) + 3e8
fe2f433c __1cIVMThreadDrun6M_v_ (f6128, 5, 40, 0, 4, ff38c000) + 8c
fe4b9d28 java_start (f6128, ff38d658, 1, 1, ff38c000, 0) + 134
ff37b01c _thread_start (f6128, 0, 0, 0, 0, 0) + 40
表示这个线程号是4,然后需要继续查询虚拟机的信息。
3、向虚拟机发送命令,通过kill -3 <java进程号>,将jvm状态的镜像发送到日志文件中,然后输出日志,查询nid=0x<2中查询处的线程号转换成16进制>,然后查询这个线程的信息。注意:sun,bea的jvm支持此命令,IBM的jvm,采用其他命令,需要注意,由于我采用的是sun的jvm,没有研究。

完全自己查询这些信息比较复杂,可以通过工具进行整理,我下载到了IBM的工具jca,可以直接分析3种产生的文件,查询当前jvm运行的线程信息。


经过分析发现tomcat的线程数运行了107个,基本上系统不运行了,看来tomcat的处理并发能力还是有问题,考虑向weblogic上移植了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值