这几天系统老是在二个时间点变慢,实在是郁闷阿,正式运行环境,没有办法进行调试,只能进行跟踪了,找到可以查看线程的方式。
系统运行在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上移植了。
分享到:
- 2007-12-04 12:03
- 浏览 1257
- 评论(0)
- 论坛回复 / 浏览 (0 / 2591)
- 查看更多
相关推荐
### Java虚拟机性能监控 #### 一、引言 在当今快速发展的信息技术领域,Java作为最流行的编程语言之一,其虚拟机(Java Virtual Machine, JVM)的性能优化和监控成为了确保应用程序高效稳定运行的关键因素。Java...
4. **线程监控**:线程是并发执行的基本单位。jvisualvm可以列出所有线程,包括它们的状态(如运行、阻塞、等待等),帮助找出死锁、线程过多或者线程阻塞的问题。 5. **类加载器监控**:类加载器负责加载类到JVM中...
6. **线程监控**: - **线程数量**:实时显示活动线程和守护线程数,以及线程状态的变化。 - **线程状态表示**:用四种颜色区分线程的不同状态。 7. **虚拟机执行堆栈**: - **jstack命令**:定期获取并保存Java...
在Java编程环境中,了解JVM(Java虚拟机)中所有线程的活动状态对于调试多线程程序至关重要。本文将详细讲解如何查看JVM中的线程活动情况,并提供相关示例代码。 首先,Java提供了`java.lang.management....
Jvmm是一个同时支持操作系统监控和Java虚拟机监控的工具,提供有丰富的监控功能:OS监控(内存状态、CPU负载、磁盘IO吞吐率、磁盘健康状态、网卡IO等)、JVM监控(内存、线程、GC、类加载器等),还提供生成火焰图、...
支持Java虚拟机监控:GC信息、内存使用情况、内存池信息、类加载器、线程堆栈 支持生成火焰图(采样事件包括CPU、内存分配、线程栈、Java方法调用栈等) 支持Java代码反编译生成 支持Java代码热更新(可指定...
VisualVM是一款强大的Java虚拟机(JVM)监控和性能分析工具,由Oracle公司开发并提供。它集成了多种功能,包括内存分析、线程检查、CPU性能监视、类加载器和JMX bean的查看等,为Java开发者提供了深入洞察应用程序...
为了确定JVM在特定环境下的最大线程数,通常需要进行实际的性能测试,监控CPU、内存使用情况以及线程的状态,从而找到一个既能满足应用需求又不会导致系统不稳定或资源耗尽的线程数阈值。此外,优化线程池的使用,...
在IT行业中,虚拟机监控是优化和调试Java应用程序的关键环节。本文将深入探讨标题为"虚拟机监控工具详请.rar"的压缩包中所包含的知识点,主要关注Java虚拟机(JVM)的监控工具。这些工具对于理解应用程序的性能、...
jconsole和jvisualvm是Java提供的图形化监控工具,可以监控虚拟机的运行状态、内存使用、线程运行情况等。它们为非命令行用户提供了直观的操作界面,可以方便地进行各种监控和诊断操作。 以上这些JVM命令工具是Java...
7. **异常处理与线程**:JVM支持多线程,每个线程有自己的虚拟机栈和程序计数器。异常处理机制通过try-catch-finally语句块来捕获和处理程序中的异常。 8. **编译与即时编译(JIT,Just-In-Time)**:JVM有两种方式...
第8章介绍了Java虚拟机对多线程,尤其是锁的支持。第9~~10章介绍了虚拟机的核心——Class文件结构,以及虚拟机中类的装载系统。第11章介绍了虚拟机的执行系统和字节码,并给出了通过ASM框架进行字节码注入的案例。
第8章介绍了Java虚拟机对多线程,尤其是对锁的支持。第9~10章介绍了Java虚拟机的核心——Class文件结构,以及Java虚拟机中类的装载系统。第11章介绍了Java虚拟机的执行系统和字节码,并给出了通过ASM框架进行字节码...
第8章介绍了Java虚拟机对多线程,尤其是对锁的支持。第9~10章介绍了Java虚拟机的核心——Class文件结构,以及Java虚拟机中类的装载系统。第11章介绍了Java虚拟机的执行系统和字节码,并给出了通过ASM框架进行字节码...
在IT领域,同步器是一种用于协调并发操作的机制,它确保了在多线程或分布式系统中的数据一致性。在虚拟机环境下,同步器的作用尤为关键,因为每个虚拟机可能运行着不同的应用程序,而这些程序可能会对共享资源进行...
总结来说,恢复OpenStack虚拟机的关键步骤包括:访问备份系统、选择恢复任务、设置恢复参数、选择恢复方式、配置传输策略以及提交和监控恢复任务。在整个过程中,备份软件的角色是提供自动化和灵活的恢复选项,帮助...
由于监控服务需要对被监控对象发送请求并处理数据,因此应当合理配置监控频率和线程数量,避免对被监控对象造成过大的负载,也避免给监控服务器自身造成不必要的负担。同时,确保监控数据的安全传输,避免监控过程中...
2. 使用Process Monitor监控虚拟机状态:Process Monitor是Sysinternals提供的一款强大的系统监控工具,可以用来监控系统中的所有进程和线程,包括虚拟机的运行状态。通过Process Monitor,我们可以查看虚拟机在运行...
第8章介绍了Java虚拟机对多线程,尤其是锁的支持。第9~10章介绍了虚拟机的核心——Class文件结构,以及虚拟机中类的装载系统。第11章介绍了虚拟机的执行系统和字节码,并给出了通过ASM框架进行字节码注入的案例。
这些工具可以实时监控JVM的内存状态、CPU使用率、线程情况,帮助定位性能瓶颈。 总的来说,深入理解Java虚拟机对于开发高性能、稳定的Java应用至关重要。通过学习JVM性能调优,我们可以优化应用程序的资源利用,...