当前位置: 首页 > article >正文

记一次 Android CPU高使用率排查

文章目录

  • 背景
  • 排查高占用的进程
    • adb shell
    • top
    • top -b -H -n 1 | grep 29337 (打印各线程 cpu使用详情)
    • kill -3 29337 (生成trace文件)
    • adb pull /data/anr /Users/gerry.liang/Desktop
    • 定位问题
  • 补充说明:

背景

测试同学反馈我们的App CPU使用率 90% 居高不下,经过一番艰难的排查后定位到了问题,为了记录此次过程于是有了此博客的构思,但为了避免隐私泄露,本文使用的是demo工程,但是排查思路完全一致

排查高占用的进程

adb shell

top

在这里插入图片描述
在这里插入图片描述

我们发现 com.demo.app CPU占用率竟然高达 93.3%, 对应的 pid 是 29337

top -b -H -n 1 | grep 29337 (打印各线程 cpu使用详情)

在这里插入图片描述
高负荷调用的是 Thread-2 和 com.demo.app 线程

kill -3 29337 (生成trace文件)

在这里插入图片描述

adb pull /data/anr /Users/gerry.liang/Desktop

在这里插入图片描述在这里插入图片描述
根据 Thread-2 线程名匹配到了 对应的 堆栈信息
在这里插入图片描述

定位问题

在这里插入图片描述

补充说明:

上述排查过程适用于 CPU 居高不下 或者 内存居高不下
如果CPU在某段时间较高但是之后就下降了就不好排查了, 不过也有笨方法

  1. CPU 每隔1s 打印线程使用情况 while true;do top -b -H -n 1 | grep 1597 |head -n 5;sleep 1;done
  2. CPU 每隔1s 生成 trace文件 while true;do kill -3 1597;sleep 1;done

先找1中CPU使用率异常的时刻和对应的线程名, 再找 2中对应时刻的堆栈。


http://www.kler.cn/a/226867.html

相关文章:

  • Kubernetes operator(五)api 和 apimachinery 篇
  • 2024/2/3 备战蓝桥杯 4-2 排序
  • coxph 回归模型建立: an id statement is required for multi-state models
  • Cmake编译Opencv3.3.1遇到有些文件无法下载的错误解决:
  • Echarts+Vue 首页大屏静态示例Demo 第三版
  • C++枚举算法(2)
  • 幻兽帕鲁专用服务器延迟高怎么解决?
  • ADB的配置和使用及刷机root
  • ffmpeg 输入文件,输入出udp-ts 指定pid
  • MySQL中的视图与索引
  • C#用正则表达式验证格式:电话号码、密码、邮编、手机号码、身份证、指定的小数点后位数、有效月、有效日
  • shell中脚本参数传递的两种方式
  • 海康威视有插件、无插件播放;webrtc直播;西瓜视频播放器;mpegts.js直播;flvjs直播
  • HSRP配置指南
  • HiveSQL题——collect_set()/collect_list()聚合函数
  • [UI5 常用控件] 05.FlexBox, VBox,HBox,HorizontalLayout,VerticalLayout
  • 使用Arcgis对欧洲雷达高分辨率降水数据重投影
  • Vue中的常用指令
  • 【讲座分享】| 复旦大学张奇教授——《自然语言发表论文如何打怪升级?NLP顶会论文发表》
  • webrtc mediasoup sctp 起什么作用? 用来传输什么数据