Java服务CPU占用高问题定位方法】的更多相关文章

1. 概述 提供一种简单的方法来定位CPU高的问题. 找到CPU高的进程,比如232543: 执行top -H -p pid,找到占用CPU最高的线程号,比如232544,转换成16进制38c60: 执行jstack 232543 > 232543.log用来dump出目前代码栈: 从232543.log中根据线程号38c60查找其中的线程相应的代码栈,则可快速定位相应的业务代码: 2. 步骤 2.0 模拟CPU占用的例子 public class Cpu { public static voi…
最近线上机器偶尔有台cpu达到100%,还居高不下.同样负载的其他机器却正常,我想肯定是代码哪里有问题了 首先我们top看下 可定位到对应占用高的PID 然后=>ps -mp PID -o THREAD,tid,time | sort -rn 就可定位到对应TID. 然后=>printf "%x\n" TID 把TID转成16进制格式 然后=>jstack pid |grep TID -A 30 (这里TID是转16进制后的) 接下来就可看到线程堆栈数据了 我们这里用…
一.发现问题的系统检查: 一个管理平台门户网页进统计页面提示请求超时,随进服务器操作系统检查load average超过4负载很大,PID为7163的进程占用到了800%多. 二.定位故障 根据这种故障的一般处理思路,先找出问题进程内CPU占用率高的线程,再通过线程栈信息找出该线程当时在运行的问题代码段,操作如下: 2.1.根据思路查看高占用的"进程中"占用高的"线程",追踪发现7163的进程中16298的线程占用较高,使用命令: top -Hbp 7163 | a…
通过以前对mysql的操作经验,先将mysql的配置问题排除了,查看msyql是否运行正常,通过查看mysql data目录里面的*.err文件(将扩展名改为.txt)记事本查看即可.如果过大不建议用记事本了,容易死掉,可以用editplus等工具 简单的分为下面几个步骤来解决这个问题: 1.mysql运行正常,也有可能是同步设置问题导致 2.如果mysql运行正常,那就是php的一些sql语句导致问题发现,用root用户进入mysql管理mysql -u root -p输入密码mysql:sh…
一.思路 分两步,主要是找出占用cpu高的进程,再找出该进程内到底是哪个线程占用cpu高. 二.找出占用cpu高的进程 参考: https://blog.csdn.net/hfhwfw/article/details/37930013 https://www.cnblogs.com/wind-june/p/10212609.html https://blog.csdn.net/zhangtaoee/article/details/79782266…
linux终端下用 top命令看到cpu占用超过100%.之所以超过100%.说明cpu是多核.默认top显示的是cpu加起来的使用率,运行top后按大键盘1看看,可以显示每个cpu的使用率,top里显示的是把所有使用率加起来.如果是4核cpu占用率最高可达400%. java进程占用CPU过高常见的两种情况及分析定位 https://blog.csdn.net/dingjianmin/article/details/85705812 在linux中的定位方法4.1.找到CPU占用高的进程号 如…
下面通过模拟实例分析排查Java应用程序CPU和内存占用过高的过程.如果是Java面试,这2个问题在面试过程中出现的概率很高,所以我打算在这里好好总结一下. 1.Java CPU过高的问题排查 举个例子,如下: package com.classloading; public class Test { static class MyThread extends Thread { public void run() { // 死循环,消耗CPU int i = 0; while (true) {…
程序CPU占用高的可能原因: 1.存在死循环: 为什么死循环会导致CPU占用高呢?      虽然分时操作系统是采用时间片的机制对CPU的时间进行管理的,也就是说到了一定时间它会自动从一个进程切换到下一个进程.但是,当进入别的进程后,若该进程告诉系统它现在不需要做什么,不需要那么多的时间,这个时候,系统就会切换到下一个进程,当切换到死循环所在进程后,由于它一直在循环,永远告诉系统它有事情做(实质仅在死循环,没做任何事),那么系统就尽可能的将其他进程省下了的时间让它做死循环了,CPU占用不高才怪咧…
高手是怎么使用jstack精确找到异常代码的(java程序CPU利用率高的情况) 请jstack神器来帮忙 本文介绍Linux环境下使用jstack定位问题的秘笈1.[top命令]找到CPU利用率持续比较高的进程,获取[进程号],此处PID为 1289112891 2.[ps p 12891 -L -o pcpu,pid,tid,time,tname,cmd 命令]找到上述进程中,CPU利用率比较高的[线程号TID](十进制数),此处为 12946ps p 12891 -L -o pcpu,pi…
问题描述:       生产环境下的某台tomcat7服务器,在刚发布时的时候一切都很正常,在运行一段时间后就出现CPU占用很高的问题,基本上是负载一天比一天高. 解决过程: 1.根据top命令,发现PID为2633的Java进程占用CPU高达300%,出现故障.    2.找到该进程后,如何定位具体线程或代码呢,首先显示线程列表,并按照CPU占用高的线程排序:      [root@localhost logs]# ps -mp 2633 -o THREAD,tid,time | sort -…