当前位置:网站首页>Anr principle and Practice
Anr principle and Practice
2022-07-07 06:51:00 【Little xian】
Broadcast ANR Design principle
- Only in an orderly broadcast ANR Monitoring of
- AMS Responsible for distributing orderly broadcasts , And set timeout monitoring alarm during distribution , If the broadcast receiver processes the message within the timeout period and AMS If the communication is cancelled, this timeout monitoring will not happen ANR, Otherwise, it will be judged ANR.
- AMS It's used Binder The mechanism and APP Process of communication , When receiving broadcast data , Will encapsulate the data and sendMessage To the main thread message queue , Main thread processing Msg, The final call receiver.onReceive Method .( When there are time-consuming tasks in front of the message queue of the main thread , Or other processes have time-consuming tasks , Affect the scheduling of current events , It's not that the event itself takes too long , Will also trigger ANR)
Service ANR Design principle
Input ANR Design principle
ANR Dump technological process
- Filter out special scenes ( is dump, Shutting down , is crash, Being used by the system kill)
- Find what you need Dump The process of , It mainly includes ANR The parent of the process ,SystemServer process , high CPU Of ( most 5 individual ) process
- send out SIGQUIT Signal the need Dump The process of
- Processes SignalCatcher Thread collects current virtual machine information , Memory information ,class Information ,GC Information , Then suspend all threads , Get the stack information of the thread
- Finally, it's piped to SystemServer, Append write to Trace In file
Application detection ANR
- watchdog
- monitor SIGNALQUIT The signal , Determine your progress ANR When ,Java Get stack information at the end , Or reflection calls inside the virtual machine Dump Stack interface of thread , Get the data and output it to your own directory .
Implementation reference Xcrash:https://github.com/iqiyi/xCrash/blob/master/README.zh-CN.md
obtain ANR Info
- adopt ActivityManagerService.getProcessesInErrorState, Traverse mLruProcesses, And according to the current abnormal state of the process, such as crash perhaps anr type , Return to concrete ProcessErrorStateInfo
ANR The time-consuming situation in the message queue before the occurrence
- At present Trace The business where the stack is located takes a lot of time ;
- At present Trace The business where the stack is located is not time consuming , But historical scheduling has a serious time-consuming ;
- At present Trace The business where the stack is located is not time consuming , But historical scheduling has many messages that take time ;
- At present Trace The business where the stack is located is not time consuming , But there are a large number of repeated messages in historical scheduling ( Business sends messages frequently );
- At present Trace Stack business logic is not time consuming , But other threads have serious resource preemption , Such as IO,Mem,CPU;
- At present Trace Stack business logic is not time consuming , But other processes have serious resource preemption , Such as IO,Mem,CPU;
ANR Log semantic analysis
Load: 2.62 / 2.55 / 2.25
Express :1、5、15 In use and waiting for use within minutes CPU The average number of active processesCPU usage from 0ms to 1987ms later (2020-03-10 08:31:55.169 to 2020-03-10 08:32:17.156)
indicate : Load information is captured in ANR After that 0~1987ms. It also points out that ANR The timing of the :2020-03-10 08:31:55.169
If it is CPU usage xxx awake Said is ANR Previous system load information41% 2080/system_server: 28% user + 12% kernel / faults: 76445 minor 180 major 26% 9378/com.xiaomi.store: 20% user + 6.8% kernel / faults: 68408 minor 68 major
Express : Each process takes up CPU Details of66% TOTAL: 20% user + 15% kernel + 28% iowait + 0.7% irq + 0.7% softirq
Express : All processes occupy CPU Information about
ANR keyword
a. user: User mode ,kernel: Kernel mode
b. faults: Memory page missing ,minor—— Slight ,major—— severe , You need to take data from disk
c. iowait:IO Use ( wait for ) Proportion
d. irq: Hard interrupt ,softirq: Soft interrupt
e. utm: user space time,stm: kernel space time
Reference resources :
- Today's headline ANR Optimization Practice Series - Design principles and influencing factors
- Today's headline ANR Optimization Practice Series - Monitoring tools and analysis ideas
- Today's headline ANR Optimization Practice Series sharing - A collection of case studies
- Android Source code analysis four component series ( 7、 ... and )— Broadcast sending process
- ANR Analyze comprehensively
- How to analyze ANR problem
边栏推荐
- 2018年江苏省职业院校技能大赛高职组“信息安全管理与评估”赛项任务书第一阶段答案
- DHCP路由器工作原理
- 场馆怎么做体育培训?
- [noi simulation] regional division (conclusion, structure)
- 地质学类比较有名的外文期刊有哪些?
- Distributed ID solution
- 从零到一,教你搭建「CLIP 以文搜图」搜索服务(二):5 分钟实现原型
- Overview of FlexRay communication protocol
- 网络基础 —— 报头、封装和解包
- SolidWorks GB Library (steel profile library, including aluminum profile, aluminum tube and other structures) installation and use tutorial (generating aluminum profile as an example)
猜你喜欢
Mysql---- import and export & View & Index & execution plan
Can't you really do it when you are 35 years old?
MySQL的安装
2018年江苏省职业院校技能大赛高职组“信息安全管理与评估”赛项任务书第一阶段答案
LVS+Keepalived(DR模式)学习笔记
This article introduces you to the characteristics, purposes and basic function examples of static routing
Config分布式配置中心
企業如何進行數據治理?分享數據治理4個方面的經驗總結
大促过后,销量与流量兼具,是否真的高枕无忧?
MATLAB小技巧(29)多项式拟合 plotfit
随机推荐
jdbc数据库连接池使用问题
What books can greatly improve programming ideas and abilities?
【mysqld】Can't create/write to file
网络基础 —— 报头、封装和解包
品牌电商如何逆势增长?在这里预见未来!
二十岁的我4面拿到字节跳动offer,至今不敢相信
C language (structure) defines a user structure with the following fields:
常用函数detect_image/predict
Networkx绘图和常用库函数坐标绘图
分布式id解决方案
Which foreign language periodicals are famous in geology?
使用TCP/IP四层模型进行网络传输的基本流程
Navicat importing 15g data reports an error [2013 - lost connection to MySQL server during query] [1153: got a packet bigger]
Overview of FlexRay communication protocol
SolidWorks的GB库(钢型材库,包括铝型材、铝管等结构)安装及使用教程(生成铝型材为例)
算法---比特位计数(Kotlin)
[noi simulation] regional division (conclusion, structure)
大咖云集|NextArch基金会云开发Meetup来啦
FPGA课程:JESD204B的应用场景(干货分享)
Etcd database source code analysis -- starting from the start function of raftnode