`

linux下查找 java web 应用 cpu占用过高的方法

 
阅读更多

java性能调优里有cpu消耗分析,现在我把cpu使用过高的分析过程记录下来(一般分us过高,或者sy过高,本章中以us过高为例)

1、linux下使用top或者pidstat命令查看进程消耗情况,下图使用top命令

说明:

us使用过高,也叫用户空间占用cpu过高。进程为:31808

2、接下来我们查找占用cpu较高的线程。按H键可以切换显示进程或者线程,然后按回车,如下图

说明:

可以看到有两个线程较高,31849和31850

 

3、我们先查找31849线程过高的代码,先把它转化为16进制,可以使用printf %x xxx,如下图,转化后为7c69

 

 

4、最后使用jstack命令定位代码(设置好jdk的环境变量)。其中 -A 4 是查找所在行的后4行,7c69为16进制线程pid。


或者找到java的bin目录执行:./jstack -l 18121 |grep -A 4 46eb 

jstack [-l] <pid>

        (to connect to running process)

    jstack -F [-m] [-l] <pid>

        (to connect to a hung process)

    jstack [-m] [-l] <executable> <core>

        (to connect to a core file)

    jstack [-m] [-l] [server_id@]<remote server IP or hostname>

 

        (to connect to a remote debug server)

 

最后,我们可以定位到ImportResThread的run方法。

下面为我测试用的线程类


 

原因:执行线程没有任何挂起动作,且一直执行,导致CPU 没有机会去调度执行其他的线程。导致us过高。

 

ps:sy过高的原因一般为线程数过过,竞争激烈,上下文切换频繁。

 

分享到:
评论

相关推荐

    linux服务器应用卡死性能问题排查

    如果发现某个进程CPU使用率异常高,我们需要进一步深入调查。 在`top`命令中,按下`Shift+h`可以切换到线程模式,这样可以看到每个进程中线程的详细信息。找出CPU占用率高的线程后,记录下其线程ID。线程ID是定位...

    linux 获取cpu shell

    - **CPU使用率**: 表示CPU正在被占用的程度。 - **/proc/stat**: 是一个特殊的文件,用于报告系统的状态,其中包括了CPU的使用情况。 - **Jiffies**: Linux内核中用来表示时间的一种单位。 - **Tomcat**: 是一个开放...

    Linux-taskmanager.zip_Java操作系统_操作系统

    在Linux环境中,原生的任务管理器如“top”或“htop”提供了实时的系统状态视图,包括CPU利用率、内存使用情况、进程信息等。Java版的任务管理器可能会模拟这些功能,通过读取/proc文件系统来获取系统和进程的信息。...

    java程序员应学习的Linux命令.pdf

    f`一起用于实时日志监控)、`type`(查找命令路径)、`wc`(统计行数)、`grep`(在文件中搜索特定内容)、`find`(查找文件)、`date`(查看日期)、`crontab`(设置定时任务)、`df`(查看磁盘空间)、`ps`(查看...

    实用技巧之用LoadRunner监控Linux方法

    - 设置监控指标,如CPU使用率、内存使用情况、磁盘I/O等。 - **执行监控**: - 运行测试场景,LoadRunner将自动收集监控数据。 - 分析结果,查找潜在的性能问题。 #### 三、总结 通过上述步骤,我们可以有效地...

    Linux 学习笔记

    - **安装配置 Tomcat**:Tomcat 是一个开源的 Java 应用服务器,用于部署 Java Web 应用。在 Linux 上安装 Tomcat 可以通过下载官方提供的二进制包并解压到指定目录,然后设置环境变量和启动脚本来实现。配置包括...

    上海Linux运维工程师-面试题-个人总结).pdf

    6. **CPU占用过高问题**:针对w3wp进程CPU占用100%的情况,通常通过性能监视器、IIS日志分析、内存 dump 分析等手段定位问题网站。 7. **沪江理解**:沪江是一家互联网教育平台,理解其业务模式、用户群体和对技术...

    上海Linux运维工程师-面试题-个人总结).docx

    针对w3wp进程CPU占用过高,可以通过查看IIS应用程序池、性能监控、日志分析等手段定位问题Web站点,然后进一步检查代码效率、资源泄漏或其他可能导致高CPU占用的原因。 【沪江理解】 沪江是一家知名的在线教育平台...

    jetty指导书

    Jetty支持实时监控服务器的状态,如CPU使用率、内存占用等。 **10.4 关闭服务器** 可以通过特定的命令或接口关闭Jetty服务。 **10.5 JMX管理** Jetty支持Java Management Extensions (JMX),可以通过JMX接口管理...

    Jetty权威指南.pdf

    Jetty还支持实时监控服务器的状态,如CPU利用率、内存使用情况等,这对于性能调优非常重要。 **10.4 关闭服务器** 在某些情况下,可能需要优雅地关闭Jetty服务器。可以通过调用`Server.stop()`方法来实现。 **...

    最热门的Java 网络与操作系统面试题汇总

    2. **零拷贝**:零拷贝是指在数据传输过程中避免了数据在内核空间和用户空间之间的多次复制,如Java NIO的FileChannel.transferTo()和transferFrom()方法,减少了CPU的负载和内存带宽的使用。 3. **TCP Header**:...

    Linux技术积累Linux技术积累Linux技术积累

    - `top -cs` 显示系统中各个进程的状态,包括CPU使用率等信息。 - `sar` 用于收集、报告、保存Linux操作系统的性能数据。 - `df -v` 显示磁盘空间的使用情况。 - `du` 用于估算文件系统的磁盘使用情况。 - `vmstat` ...

    redis基础知识

    例如,监控 Redis 的 CPU 使用率、内存占用、网络流量;定期检查和调整 Redis 的配置,以适应业务增长;设置合理的最大连接数,防止资源耗尽;以及设置合理的缓存策略,避免数据过多导致内存溢出。 7. **使用场景**...

    jmeter性能监控插件_免费下载0积分下载.zip

    2. **ServerAgent.jar**:这是JMeter性能监控插件的服务器代理,负责收集被测系统(如服务器)的性能数据,如CPU使用率、内存占用、磁盘I/O等。ServerAgent可以部署在目标服务器上,与JMeter客户端通信,将收集到的...

    新版Android开发教程.rar

    � 采用了对有限内存、电池和 CPU 优化过的虚拟机 Dalvik , Android 的运行速度比想象的要快很多。 � 运营商(中国移动等)的大力支持,产业链条的热捧。 � 良好的盈利模式( 3/7 开),产业链条的各方:运营商、...

    Wls-weblogic管理监控.docx

    - CPU使用:检查CPU是否长时间高负荷运行,即使在低负载情况下,持续的高CPU使用可能是程序执行效率低下或者存在资源争抢问题。 - 内存监控:观察内存占用情况,过高的内存使用可能导致系统性能下降,甚至出现内存...

    Nacos安装指南.zip

    Nacos提供了丰富的监控指标,如内存、CPU使用率等,便于运维人员监控系统状态。同时,日志记录可以帮助排查问题。 总的来说,Nacos作为一款强大的服务治理工具,能够简化微服务的管理和维护工作。通过以上步骤,你...

    2019移动互联A卷林丰波.docx

    - **性能监测**:定期检查应用的 CPU 使用率、内存占用情况等。 #### 内网通信问题及解决方案 - **问题**:不同内网之间无法直接通信是因为存在网络隔离。通常情况下,每个内网都有自己的私有 IP 地址范围,这些...

    openfire部署学习资料

    2. 性能监控:使用监控工具跟踪服务器性能,如CPU使用率、内存占用、网络流量等,以便优化配置。 以上只是Openfire部署学习的基本内容,实际操作中可能涉及更多的细节,如数据库的优化、服务器的硬件配置、网络环境...

Global site tag (gtag.js) - Google Analytics