生产环境CPU过高问题定位

问题描述:
       生产环境下的某台tomcat7服务器,在刚发布时的时候一切都很正常,在运行一段时间后就出现CPU占用很高的问题,基本上是负载一天比一天高。

解决过程:

1、根据top命令,发现PID为2633的Java进程占用CPU高达300%,出现故障。
    2、找到该进程后,如何定位具体线程或代码呢,首先显示线程列表,并按照CPU占用高的线程排序:
      [[email protected] logs]# ps -mp 2633 -o THREAD,tid,time | sort -rn

显示结果如下:
       USER     %CPU PRI SCNT WCHAN  USER SYSTEM   TID     TIME
       root     10.5  19    - -         -      -  3626 00:12:48
       root     10.1  19    - -         -      -  3593 00:12:16

3、将需要的线程ID转换为16进制格式

[[email protected] logs]# printf "%x\n" 3626
       e18

4、打印线程的堆栈信息

[[email protected] logs]# jstack 2633 |grep e18 -A 30

原文地址:https://www.cnblogs.com/moonandstar08/p/8476379.html

时间: 2024-10-10 01:02:25

生产环境CPU过高问题定位的相关文章

构建生产环境可用的高可用kubernetes集群

kubernetes集群三步安装 构建生产环境可用的高可用kubernetes集群 | sealos项目地址 特性 [x] 支持任意节点的etcd集群自动构建,且etcd集群使用安全证书,通过static pod方式启动,这样可以通过监控pod来监控etcd集群健康状态 [x] 支持多master节点,允许任意一台master宕机集群功能不受影响 [x] calico使用etcd集群,配置安全证书,网络管控数据无单点故障 [x] 包含dashboard, heapster coreDNS add

K8S生产环境中实践高可靠的配置和技巧都有哪些?

K8S环境中实践高可靠的配置和技巧都有哪些? 磁盘类型及大小 磁盘类型: 推荐使用ssd 磁盘 对于worker节点,创建集群时推荐使用挂载数据盘.这个盘是专门给/var/lib/docker 存放本地镜像.可以避免后续因镜像太多而造成磁盘根目录容量不够的情况.在运行一段时间后,本地会存在很多无用的镜像.比较快捷的方式就是,先下线这台机器,重新构建这个磁盘,然后再上线. 磁盘大小: kubernetes节点需要的磁盘空间也不小,Docker镜像.系统日志.应用日志都保存在磁盘上.创建kubern

Rancher 2.x 生产环境HA(高可用)部署

Rancher官方中文文档:https://www.rancher.cn/docs/rancher/v2.x/cn/overview/ 本次实验,为Ranche七层负载均衡Helm HA部署 一.环境准备 1.服务器配置 服务器使用腾讯云的虚拟机具体配置如下: 主机名称 系统版本 内网ip 公网ip 配 置 master1 CentOS 7.6 172.27.100.101 xxx 4C 16G master2 CentOS 7.6 172.27.100.101 xxx 4C 16G maste

生产环境的redis高可用集群搭建

这里只是总结一下安装步骤 如果要了解redis集群高可用的原理,推荐仔细看一遍配置文件示例http://download.redis.io/redis-stable/redis.conf,源码包里也有,里面的注释都是干货,看完会非常有帮助. 1.安装 wget http://download.redis.io/releases/redis-2.8.18.tar.gz tar xf redis-2.8.18.tar.gz cd redis-2.8.18.tar.gz make mkdir /usr

生产环境下mycat高可用方案mycat+keepalive(1)

#主master配置如下 cat  /etc/keepalived/keepalived.conf global_defs { notification_email { [email protected] } #notification_email_from [email protected] #smtp_server 10.168.0.48 #smtp_connect_timeout 10 router_id nginx } vrrp_script chk_haproxy { script "

生产环境swarm集群规划和管理

swarm集群角色 swarm集群中有两种角色,manager node和 worker ndoe. manager的功能: 维护集群状态 任务调度 为swarm集群提供HTTP API 可以创建只有一个manager节点的swarm集群,但是swarm集群中如果一个manager节点都没有,则不能拥有worker节点.默认情况下,所有manage都是worker worker node的功能: Worker节点也是Docker Engine的实例,其唯一目的是执行容器.工作节点不参与Raft分

rabbitmq 生产环境配置

目录 一 rabbitmq 生产部署 1.1 rabbitmq.conf 1.2 advanced.config 1.3 rabbitmq-env.conf 1.4 在生产环境中不适用的策略. 一 rabbitmq 生产部署 RabbitMQ 常用的三种自定义服务器的通用方法: 配置文件 rabbitmq.conf 环境变量文件 rabbitmq-env.conf 补充配置文件 advanced.config rabbitmq.conf和rabbitmq-env.conf的位置 在二进制安装中路

生产环境下JAVA进程高CPU占用故障排查

问题描述:生产环境下的某台tomcat7服务器,在刚发布时的时候一切都很正常,在运行一段时间后就出现CPU占用很高的问题,基本上是负载一天比一天高. 问题分析:1,程序属于CPU密集型,和开发沟通过,排除此类情况.2,程序代码有问题,出现死循环,可能性极大. 问题解决:1,开发那边无法排查代码某个模块有问题,从日志上也无法分析得出.2,记得原来通过strace跟踪的方法解决了一台PHP服务器CPU占用高的问题,但是通过这种方法无效,经过google搜索,发现可以通过下面的方法进行解决,那就尝试下

[转]生产环境中程序占用cpu过高的程序的排查办法

一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环.以我们最近出现的一个实际故障为例,介绍怎么定位和解决这类问题. 根据top命令,发现PID为28555的Java进程占用CPU高达200%,出现故障. 通过ps aux | grep PID命令,可以进一步确定是tomcat进程出现了问题.但是,怎么定位到具体线程或者代码呢? 首先显示线程列表: ps -mp pid -o THREAD,tid,time 找到了耗时最高的线程28802,占用CPU时间快两个小时了!