当前位置:网站首页>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
边栏推荐
- [noi simulation] regional division (conclusion, structure)
- 华为机试题素数伴侣
- C interview 24 (pointer) define a double array with 20 elements a
- Linear algebra (1)
- ViewModelProvider.of 过时方法解决
- libcurl返回curlcode说明
- 肿瘤免疫治疗研究丨ProSci LAG3抗体解决方案
- Installing redis and windows extension method under win system
- 大促过后,销量与流量兼具,是否真的高枕无忧?
- Overview of FlexRay communication protocol
猜你喜欢
Mysql---- import and export & View & Index & execution plan
Can 7-day zero foundation prove HCIA? Huawei certification system learning path sharing
途家、木鸟、美团……民宿暑期战事将起
Leetcode T1165: 日志分析
MySQL installation
大咖云集|NextArch基金会云开发Meetup来啦
Config分布式配置中心
Pinduoduo lost the lawsuit: "bargain for free" infringed the right to know but did not constitute fraud, and was sentenced to pay 400 yuan
dolphinscheduler3. X local startup
JWT的基础介绍
随机推荐
Matlab tips (30) nonlinear fitting lsqcurefit
服装门店如何盈利?
Postgresql中procedure支持事务语法(实例&分析)
RuntimeError: CUDA error: CUBLAS_STATUS_ALLOC_FAILED when calling `cublasCreate(handle)`问题解决
mysql查看bin log 并恢复数据
Redhat5 installing vmware tools under virtual machine
Leite smart home longhaiqi: from professional dimming to full house intelligence, 20 years of focus on professional achievements
工具类:对象转map 驼峰转下划线 下划线转驼峰
一文带你了解静态路由的特点、目的及配置基本功能示例
【解决】Final app status- UNDEFINED, exitCode- 16
Answer to the first stage of the assignment of "information security management and evaluation" of the higher vocational group of the 2018 Jiangsu Vocational College skills competition
C language (structure) defines a user structure with the following fields:
Mysql---- import and export & View & Index & execution plan
Navicat importing 15g data reports an error [2013 - lost connection to MySQL server during query] [1153: got a packet bigger]
什么情况下考虑分库分表
js装饰器@decorator学习笔记
如何给目标机器人建模并仿真【数学/控制意义】
How to find the literature of a foreign language journal?
What books can greatly improve programming ideas and abilities?
LVS+Keepalived(DR模式)学习笔记