首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

CPU占用过高排查

一.简介 最近一段时间 某台服务器上的一个应用总是隔一段时间就自己挂掉 用top看了看 从重新部署应用开始没有多长时间CPU占用上升得很快 排查步骤 1.使用top 定位到占用CPU高的进程PID top...2.通过ps aux | grep PID命令 获取线程信息,并找到占用CPU高的线程 ps -mp pid -o THREAD,tid,time | sort -rn 3.将需要的线程ID转换为16...printf "%x\n" tid 4.打印线程的堆栈信息 到了这一步具体看堆栈的日志来定位问题了 jstack pid |grep tid -A 30 二.例子 1.top 可以看出PID 733进程 的占用...CPU 172% 2.查找进程733下的线程 可以看到TID 线程775占用了96%且持有了很长时间 其实到这一步基本上能猜测到应该是 肯定是那段代码发生了死循环 ps -mp 733 -o THREAD

3.9K30

cpu占用过高排查

简介 最近一段时间 某台服务器上的一个应用总是隔一段时间就自己挂掉 用top看了看 从重新部署应用开始没有多长时间CPU占用上升得很快 排查步骤 # 1.使用top 定位到占用CPU高的进程PID...top # 2.通过ps aux | grep PID命令 获取线程信息,并找到占用CPU高的线程 ps -mp pid -o THREAD,tid,time | sort -rn # 3.将需要的线程...printf "%x\n" tid # 4.打印线程的堆栈信息 到了这一步具体看堆栈的日志来定位问题了 jstack pid |grep tid -A 30 案例 1.top可以看到PID733进程的占用...显然是 SmsQueueServiceImpl 中的produceMissSms 和 consumeMissSms 方法有问题 最后注释掉那段循环代码,cpu占用就正常了,也有可能是因为频繁GC导致CPU...占用过高

2.4K51
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    如何排查Go 程序 CPU 占用过高问题

    占用情况的采样信息 浏览器打开会下载文件 threadcreate 系统线程创建情况的采样信息 可以用浏览器打开,但可读性不高 trace 程序运行跟踪信息 浏览器打开会下载文件,本文不涉及 代码说明...= nil { log.Fatal(err) } os.Exit(0) }() // 略 } 排查 CPU 占用过高问题 可以通过活动监视器查看下 practice 程序的占用。...可以使用 go tool pprof http://localhost:6060/debug/pprof/profile 进行排查。...在这里插入图片描述 输入 top 命令, 查看 CPU 占用较高的调用: 在这里插入图片描述 可以看到 CPU 占用过高的是 github.com/wolfogre/go-pprof-practice...(*Tiger).Eat 输入 list Eat,查看问题具体在代码的哪一个位置: 可以看到的是其中一百亿次空循环占用了大量 CPU 时间,因此就定位到了问题。

    5.2K30

    一次CPU占用过高问题排查

    一次CPU占用过高问题排查 一、背景 事情是这样的:我们有一个应用跑了一段时间,一直没有报错,然后这两天突然告警起来了: Metric: pod:cpu:pod_usage_limit_rate all...这里,记录下排查问题的过程。 如果大家正在寻找一个java的学习环境,或者在开发中遇到困难,可以加入我们的java学习圈,点击即可加入,共同学习,节约学习时间,减少很多在学习中遇到的难题。...过高?...2.5 分析占用线程 分析占用线程,需要使用top命令: top -H -p 30 查看进程id为30的线程信息,结果是无序的,按键大写P,可以根据cpu占用率排序。...blocked的线程不会消耗cpu,但频繁的频繁切换线程上下文会导致cpu过高。线程被频繁唤醒,而又由于抢占锁失败频繁地被挂起. 因此也会带来大量的上下文切换, 消耗系统的cpu资源。

    42820

    CPU占用过高排查实战 原来这么简单

    2、top命令,实时显示进程CPU百分比和内存使用情况:可以发现进程7498 占用CPU比较高 ? 等待一段时间:发现CPU使用率在逐渐增加 ? jinfo:显示JVM参数设置信息 ?...一段时间后 CPU占比很高了 ? top -p 7498:单独显示7498进程占比CPU ? 在监控界面输入H,获取当前进程下的所有线程信息 ?...现在我们定位为是内存问题,CPU100%只是它的体现 jmap -histo 7498 | head -20:显示堆空间对应7498进程对应对象占用大小 ? 问题总结(找到问题) ?...总结 在JVM出现性能问题的时候(表现上是CPU100%,内存一直占用) 1、出现CPU100%,要从两个角度出发,一个有可能是业务线程疯狂运行,比如说死循环,还有就是GC线程在疯狂的回收,因为在JVM...中垃圾回收器主流也是多线程的,所以很容易导致CPU100%; 2、在遇到内存溢出的问题的时候,一般情况下我们要查看系统哪些对象占用比较多,在实际业务代码中,找到对应的对象,分析对应的类,找到为啥这些对象不能回收的原因

    1.3K20

    cpu使用率过高和jvm old占用过高排查过程

    今天断断续续的收到管理平台的异常报警,cpu占用过高和jvm old占用过高,这个时候赶紧去排查原因,下面记录了我的排查过程,可能里面还有不正确的地方,欢迎各位大佬指正,也欢迎大家关于类似的案例一起交流...,下面就看我关于这次排查的过程把 报警 cpu使用率过高报警,接近100% 后续又来了jvm old过高报警 排查过程 首先打开监控平台看报警节点的cpu使用情况 ?...登录服务器找到占用 cpu过高线程堆栈信息 ①通过 top 命令找到占用cpu最高的 pid[进程id] ?...处理过程 找到相关的任务重新启动,并找任务停止的原因,修复,并把丢失的索引创建并修复数据 在异常日志打印那最好加入流控【用Guava.RateLimiter控制】 小结 cpu占用过高排查思路 top...-A 30 查看堆栈信息定位 jvm old区占用过高排查思路 top查看占用cpu高的进程 jstat -gcutil pid 时间间隔 查看gc状况 jmap -dump:format=b,file

    2.5K20

    记一次 MongoDB 占用 CPU 过高问题的排查

    引言 今天查看监控无意间突然发现自己的服务器上,CPU 占用率飙升到 100%,load 升到 10 以上,登录的响应已经达到半分钟 马上运行 top,发现主要是 mongodb 占用了大量的 CPU,...system.profile 集合 2 -- 针对所有请求开启 profiling,将所有请求的执行都记录到 system.profile 集合 通过命令开启 推荐在生产环境中设置为 1,开启慢请求日志,方便问题的暴露和排查...如果该值过大,要考虑建立新的索引或优化查询了 慢请求分析 -- 大量数据排序 当查询请求里包含排序的时候,如果排序无法通过索引满足,MongoDB 会在内存中对结果进行排序 大家都知道,排序是非常消耗 CPU... 的一项操作,最好在需要排序的字段上建立索引 system.profile 中的 SORT 关键字反映了查询需要排序 服务能力评估 有时 CPU 消耗过高仅仅是单纯的因为服务器达到了上限 如果上面的措施都无法让... CPU 占用率下降到合理的指标内,就要考虑扩容、升级来提升服务能力的上限 但切忌将这个方法作为首要考虑的解决方案,合理的设置索引,建立资源预警,而不是盲目提升配置或在业务已经达到上限时再考虑优化 参考资料

    6.2K32

    记一次 MongoDB 占用 CPU 过高问题的排查

    引言 今天查看监控无意间突然发现自己的服务器上,CPU 占用率飙升到 100%,load 升到 10 以上,登录的响应已经达到半分钟。...执行 top 发现主要是 mongodb 占用了大量的 CPU,这是为什么呢?又该如何解决呢? 2....通过命令开启 推荐在生产环境中设置为 1,开启慢请求日志,方便问题的暴露和排查,可以通过下面命令设置 profiling 级别: db.setProfilingLevel(1, { slowms: 20...慢请求分析 — 全表扫描 COLLSCAN 如果在日志中看到关键字 COLLSCAN,说明该查询在进行全表扫描,通常这就是 CPU 异常飙高的主要原因。 4.1....服务能力评估 有时 CPU 消耗过高仅仅是单纯的因为服务器达到了上限。 如果上面的措施都无法让 CPU 占用率下降到合理的指标内,就要考虑扩容、升级来提升服务能力的上限。

    2.2K10

    ​高频面试题:Java程序占用 CPU 过高怎么排查

    当我们真碰到这个问题的时候应该怎么排查呢? 模拟一个高 CPU 场景 先用一段程序创建几个线程,将其中一个线程设置成高 CPU 使用率的。...排查步骤 第一步,使用 top 找到占用 CPU 最高的 Java 进程 在真实环境中,首先要确认是不是 Java 程序造成的,如果有系统监控工具,可能会直接在预警信息里告诉你是有哪个进程造成的,但也有可能不知道...如果是在面试场景中,这个问题可能不需要确认,毕竟 Java 面试,面试官可能直接就告诉你是 Java 占用CPU 过高。...使用 top命令发现占用 CPU 99.7% 的线程是 Java 进程,进程 PID 为 13731。...可以看到占用 CPU 最高的那个线程 PID 为 13756。

    1.3K30

    Mysql占用过高CPU时的优化手段

    Mysql占用CPU过高的时候,该从哪些方面下手进行优化?...占用CPU过高,可以做如下考虑: 1)一般来讲,排除高并发的因素,还是要找到导致你CPU过高的哪几条在执行的SQL,show processlist语句,查找负荷最重的SQL语句,优化该SQL,比如适当建立某字段的索引...; 2)打开慢查询日志,将那些执行时间过长且占用资源过多的SQL拿来进行explain分析,导致CPU过高,多数是GroupBy、OrderBy排序问题所导致,然后慢慢进行优化改进。...登陆服务器,发现机器负载有点高,并且mysql占用了很高的CPU资源,如下图: image.png MySQL负载居高不下,如果打开了慢查询日志功能,最好的办法就是针对慢查询日志里执行慢的sql语句进行优化...,如果sql语句用了大量的group by等语句,union联合查询等肯定会将mysql占用率提高。

    4.7K120

    MySQL占用CPU过高 查找原因及解决 多种方式

    一、排查有没有地方占用SQL资源过多 1、排查方法 : > mysql -uroot -p      #登陆数据库 >********                    #输入数据库密码 2、查看数据库...二、开启日志排查模式 1、设置 日志开启 --- SET GLOBAL log_output = 'TABLE';SET GLOBAL general_log = 'ON';  日志关闭 --- SET...log_output = 'TABLE'; SET GLOBAL general_log = 'OFF';  2、开启后 会查询到当前正在运行的sql,如发现SQL周期性一直在执行一段SQL或多段SQL 查找使用地方排查原因...SELECT * from mysql.general_log ORDER BY event_time DESC; 3、在查询到所需要的记录之后,应尽快关闭日志模式,占用磁盘空间比较大,清空表(delete...MySQL 的默认设置下,当一个连接的空闲时间超过8小时后,一到高峰期肯定会造成,会有太多的TCP连接没关闭,数据库连接数肯定是不够。从而会产生CPU占用过高,服务器告警等问题。

    6.5K00
    领券