查看进程的线程资源使用情况:15047为进程PID
ps -Lp 15047 cu
top -H -p 15047
1. 首先排查哪些进程cpu占用率高。 通过命令 ps ux
[]
$ps ux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
admin 1502 0.0 0.0 51172 1032 ? S 11:04 0:00 sshd: admin@pts/1
admin 1503 0.0 0.0 68136 1512 pts/1 Ss 11:04 0:00 -bash
admin 1555 0.0 0.0 96640 3356 pts/1 S+ 11:04 0:00 vim jstack15047.12.2
admin 1993 0.0 0.0 51172 1032 ? S 11:06 0:00 sshd: admin@pts/2
admin 1994 0.0 0.0 68136 1492 pts/2 Ss 11:06 0:00 -bash
admin 2038 0.0 0.0 65576 912 pts/2 R+ 11:06 0:00 ps ux
admin 10191 0.2 0.4 670904 23880 ? Sl 09:31 0:13 /usr/alibaba/httpd/bin/httpd -d /home/admin/run/deploy
admin 10756 0.2 0.4 670476 23092 ? Sl 09:32 0:12 /usr/alibaba/httpd/bin/httpd -d /home/admin/run/deploy
admin 14467 0.2 0.4 671700 24436 ? Sl 09:47 0:10 /usr/alibaba/httpd/bin/httpd -d /home/admin/run/deploy
admin 15037 0.0 0.0 65908 1168 ? S Nov30 0:00 /bin/sh
/usr/alibaba/jboss/bin/run.sh
-Djboss.server.home.dir=/home/admin/run/deploy/../.myjboss
-Djboss.server.home.url=file:/home/admi
admin 15047 25.4 42.9 2915448 2252040 ? Sl
Nov30 312:31 /usr/alibaba/java/bin/java -Dprogram.name=run.sh -server
-Xmx2g -Xms2g -Xmn256m -XX:PermSize=196m -Xss256k -XX:+DisableExplicitGC
-XX:+U
admin 15834 0.0 0.0 3840 472 ? S Nov30 0:00
/usr/alibaba/cronolog/sbin/cronolog
/home/admin/out/logs/443-error_log.%w
admin 15835 0.0 0.0 3840 480 ? S Nov30 0:00
/usr/alibaba/cronolog/sbin/cronolog
/home/admin/out/logs/cookie_logs/%w/cookie_log
admin 15836 0.0 0.0 58900 612 ? S Nov30 0:00 /usr/bin/logger -p local2.info
admin 15837 0.0 0.0 3840 476 ? S Nov30 0:07
/usr/alibaba/cronolog/sbin/cronolog
/home/admin/out/logs/jk_logs/%w/mod_jk.log
admin 16316 0.2 0.4 669448 21740 ? Sl 09:53 0:10 /usr/alibaba/httpd/bin/httpd -d /home/admin/run/deploy
admin 27702 0.0 0.0 51320 1060 ? S 10:39 0:00 sshd: admin@pts/0
admin 27703 0.0 0.0 68136 1524 pts/0 Ss+ 10:39 0:00 -bash
2. 查看对应java进程的每个线程的CPU占用率。通过命令:ps -Lp 15047 cu
[admin@us-escrow-web4.hst.scl.en.alidc.net ~]
$ps -Lp 15047 cu
USER PID LWP %CPU NLWP %MEM VSZ RSS TTY STAT START TIME COMMAND
。。。。。。
admin 15047 25491 70.8 285 42.9 2915448 2252032 ? Rl 10:29 22:35 java
admin 15047 25495 71.0 285 42.9 2915448 2252032 ? Rl 10:29 22:34 java
admin 15047 25499 0.0 285 42.9 2915448 2252032 ? Sl 10:29 0:00 java
admin 15047 25500 0.0 285 42.9 2915448 2252032 ? Sl 10:29 0:00 java
admin 15047 25517 0.0 285 42.9 2915448 2252032 ? Sl 10:30 0:00 java
admin 15047 25521 0.0 285 42.9 2915448 2252032 ? Sl 10:30 0:00 java
admin 15047 25540 72.4 285 42.9 2915448 2252032 ? Rl 10:30 22:31 java
admin 15047 25541 0.0 285 42.9 2915448 2252032 ? Sl 10:30 0:00 java
admin 15047 25542 0.0 285 42.9 2915448 2252032 ? Sl 10:30 0:00 java
admin 15047 25741 70.7 285 42.9 2915448 2252032 ? Rl 10:31 21:33 java
admin 15047 25766 0.0 285 42.9 2915448 2252032 ? Sl 10:31 0:00 java
admin 15047 26022 0.0 285 42.9 2915448 2252032 ? Sl 10:31 0:00 java
admin 15047 26032 69.6 285 42.9 2915448 2252032 ? Rl 10:32 20:38 java
3. 追踪线程内部,查看load过高原因。通过命令:jstack 15047。
以线程25495为例,现将25495转换成16进制6397。 再通过多次监控jstack日志,排查线程25495的运行轨迹。
"ActiveMQ Session Task" prio=10 tid=0x000000004a598000 nid=0x6397
runnable [0x0000000044948000]
java.lang.Thread.State: RUNNABLE
at Ice.ConnectionI.sendRequest(ConnectionI.java:519)
- locked <0x00002aaac2877ff8> (a Ice.ConnectionI)
at IceInternal.Outgoing.invoke(Outgoing.java:72)
at AliIMInterface._WWMessageInterfaceDelM.SendNotifyMessage(_WWMessageInterfaceDelM.java:36)
at AliIMInterface.WWMessageInterfacePrxHelper.SendNotifyMessage(WWMessageInterfacePrxHelper.java:40)
at AliIMInterface.WWMessageInterfacePrxHelper.SendNotifyMessage(WWMessageInterfacePrxHelper.java:18)
"ActiveMQ Session Task" prio=10 tid=0x000000004a598000 nid=0x6397
runnable [0x0000000044948000]
java.lang.Thread.State: RUNNABLE
at IceInternal.Outgoing.invoke(Outgoing.java:72)
at AliIMInterface._WWMessageInterfaceDelM.SendNotifyMessage(_WWMessageInterfaceDelM.java:36)
at AliIMInterface.WWMessageInterfacePrxHelper.SendNotifyMessage(WWMessageInterfacePrxHelper.java:40)
at AliIMInterface.WWMessageInterfacePrxHelper.SendNotifyMessage(WWMessageInterfacePrxHelper.java:18)
"ActiveMQ Session Task" prio=10 tid=0x000000004a598000 nid=0x6397
runnable [0x0000000044947000]
java.lang.Thread.State: RUNNABLE
at java.lang.Throwable.fillInStackTrace(Native Method)
- locked <0x00002aaab53435e8> (a IceInternal.LocalExceptionWrapper)
at java.lang.Throwable.<init>(Throwable.java:181)
at java.lang.Exception.<init>(Exception.java:29)
at IceInternal.LocalExceptionWrapper.<init>(LocalExceptionWrapper.java:16)
at Ice.ConnectionI.sendRequest(ConnectionI.java:530)
- locked <0x00002aaac2877ff8> (a Ice.ConnectionI)
at IceInternal.Outgoing.invoke(Outgoing.java:72)
4. 通过jstack查看代码运行轨迹,结合已有源码,一般可以分析出死循环的地方。
分享到:
相关推荐
Apache Flink 和 Apache Iceberg 是两个在大数据领域中解决这些问题的重要工具。本文将深入探讨这两个技术如何解决数据入湖所面临的核心挑战。 **数据入湖的核心挑战** 1. **数据传输中断与一致性**:程序错误或...
Zeroc ICE是一个开源的中间件平台,它支持C++、Java、Python、.NET等语言的分布式对象通信。ICE全称Internet Communications Engine,即互联网通信引擎,是一种用于开发分布式计算应用的强大工具。本文档主要围绕ICE...
此外,它还可能包含特定的解决常见问题的章节,以帮助开发者在遇到困难时快速找到解决方案。 在本资料包中,"ICE"可能是ICE教程和手册的合集,可能包括了各种格式的文件,如PDF文档、源代码示例、甚至是视频教程。...
ZeroC公司提供了丰富的文档、教程和论坛,以帮助开发者解决在使用Ice过程中遇到的问题。 ### 冰山一角:Ice概述 #### 2.1 章节概览 第二章提供了Ice框架的全面概述,涵盖了其架构、服务、架构模式和设计原则。这...
ice.m中可能包含这些辅助函数,确保增强过程不会引入新的问题。 5. **可视化与评估**:源码可能还包含了显示处理前后图像的代码,以便于用户直观比较效果。同时,可能会有评估函数来量化对比度增强的效果,如计算...
《ICE for Windows安装包详解及应用》 ICE(Integration and Communication Engine)是一种高性能、轻量级的中间件...通过深入学习和实践,开发者可以充分利用ICE的强大功能,解决复杂的应用场景中的通信和集成问题。
在Linux操作系统中,安装ICE(Integration and Communication Environment)包是一个重要的任务,特别是在开发分布式系统或者进行跨平台通信时。ICE是一种高性能、灵活且易于使用的中间件,它允许应用程序通过网络...
马维达可能会分享一些使用ICE解决复杂问题的实战经验,展示其在应对挑战性任务时的出色表现。 总的来说,这些文章涵盖了ICE的各个方面,从基础到高级,从理论到实践,为初学者提供了全面的学习资源,同时也为有经验...
FAQ角汇集了关于Ice框架常见问题的回答,旨在解答开发者在使用过程中遇到的各种疑问。 1. **问题分类** - **基础设置**:涉及安装、配置等方面的问题。 - **开发技巧**:分享提高开发效率的小技巧和经验。 - **...
最后一部分是常见问题解答,这里提供了一些关于Ice和IceStorm的常见问题及其解答。 **主要内容概述:** 这部分汇总了来自社区的一系列问题,包括但不限于Ice和IceStorm的安装配置、基本用法、故障排查等方面。 **...
然而想要解决这样的错误,一般只需要把在无法编译成.o文件的.cpp文件中和ice文件相关的头文件放在该.cpp文件的起始行即可。也就是说,根据提示,把.cpp文件中最早提示导致出错的.h文件放在起始行。 ICE的常见...
ICE(Internet Communication Engine)框架是一种跨平台的中间件,它提供了分布式系统开发所需的各种服务,如对象间通信、数据序列化、远程调用等。在C++编程环境中,ICE为开发者提供了一套强大的工具和库,使得构建...
5. **调试工具**: 提供了强大的调试工具,帮助开发者定位和解决问题。 6. **性能优化**: 通过高效的网络协议和数据编码,ICE在性能上表现出色。 **ICE开发基础** 学习ICE中间件,首先要理解其基本架构和组件,...
### 分布式编程与ICE 3.3.1:关键知识点概述 #### 一、ICE 3.3.1 概览 - **版本信息**:文档为ICE 3.3.1版本,...通过对该版本的深入了解,可以帮助开发者更好地利用ICE的强大功能,解决实际项目中的复杂通信问题。
在Android开发中,ICE(Internet Communication Engine)服务是一种用于设备间通信的技术,它允许设备通过互联网进行实时数据交换。ICE服务通常被用在分布式系统、物联网(IoT)项目或者需要远程控制和监控的应用场景...
阅读这些资料,你可以从基础到高级全面了解Ice的各个方面,包括API使用、最佳实践和常见问题解决方案。 总的来说,"Ice经典入门和实例"是一套完整的学习资料,涵盖了Ice的基本概念、核心功能、高级特性和实战应用,...
4. **ICEChat.sln**:这是一个Visual Studio解决方案文件,包含了整个项目的组织结构和依赖关系。开发者可以通过打开这个文件在VS2013中加载和管理项目。 5. **ICEChatClient**:这个可能是客户端应用程序的源代码...
Ice-3.4.2安装包是Zeroc公司提供的最新版本的Ice中间件,它是一种高性能、跨平台的通信框架,专为构建分布式应用程序而设计。Ice支持多种编程语言,包括C++、Java、Python、C#等,使得开发者可以方便地在不同语言...
ICE提供了一种中间件解决方案,支持C++、Java、Python等多种语言,并且通过其“ Slice”接口定义语言,实现跨语言的序列化和通信。ICE 3.4.1是其稳定的一个版本,包含了大量的优化和改进,为开发者提供了更高效、...
ICE(Integration and Connectivity Environment)框架是一种面向服务架构(SOA,Service-Oriented Architecture)的解决方案,主要用于构建可扩展、高性能、高可用性的分布式系统。本教程将深入讲解ICE框架的核心...