当前位置:网站首页>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
边栏推荐
- Go straight to the 2022ecdc fluorite cloud Developer Conference: work with thousands of industries to accelerate intelligent upgrading
- ANR 原理及实践
- SVN version management in use replacement release and connection reset
- Overview of FlexRay communication protocol
- 企業如何進行數據治理?分享數據治理4個方面的經驗總結
- Can't you really do it when you are 35 years old?
- SolidWorks的GB库(钢型材库,包括铝型材、铝管等结构)安装及使用教程(生成铝型材为例)
- Redhat5 installing vmware tools under virtual machine
- 品牌电商如何逆势增长?在这里预见未来!
- How to find the literature of a foreign language journal?
猜你喜欢
JWT的基础介绍
Abnova 体外转录 mRNA工作流程和加帽方法介绍
2018年江苏省职业院校技能大赛高职组“信息安全管理与评估”赛项任务书第二阶段答案
Matlab tips (29) polynomial fitting plotfit
【从零开始】win10系统部署Yolov5详细过程(CPU,无GPU)
Pinduoduo lost the lawsuit: "bargain for free" infringed the right to know but did not constitute fraud, and was sentenced to pay 400 yuan
Jmeter 5.5版本发布说明
当前发布的SKU(销售规格)信息中包含疑似与宝贝无关的字
2022 Android interview essential knowledge points, a comprehensive summary
偏执的非合格公司
随机推荐
【解决】Final app status- UNDEFINED, exitCode- 16
DHCP路由器工作原理
Apache ab 压力测试
This article introduces you to the characteristics, purposes and basic function examples of static routing
from . onnxruntime_ pybind11_ State Import * noqa ddddocr operation error
Basic DOS commands
请教一下,监听pgsql ,怎样可以监听多个schema和table
7天零基础能考证HCIA吗?华为认证系统学习路线分享
MOS管参数μCox得到的一种方法
【NOI模拟赛】区域划分(结论,构造)
Navicat importing 15g data reports an error [2013 - lost connection to MySQL server during query] [1153: got a packet bigger]
工具类:对象转map 驼峰转下划线 下划线转驼峰
String (explanation)
一文带你了解静态路由的特点、目的及配置基本功能示例
MySQL installation
Redis (I) -- getting to know redis for the first time
unity3d学习笔记
Problems and precautions about using data pumps (expdp, impdp) to export and import large capacity tables in Oracle migration
DB2获取表信息异常:Caused by: com.ibm.db2.jcc.am.SqlException: [jcc][t4][1065][12306][4.25.13]
隐马尔科夫模型(HMM)学习笔记