记录一次系统短时间内发生多次ANR

客户报的问题:后台在下载多个应用时,正常使用设备,发生"System UI isn’t responding"

问题分析如下:

system ui crash\ap\072-0806_093411--0806_094109\0-android_events.log
搜索am_anr
	Line 5865: E00E719  08-06 09:35:21.276  1307 17651 I am_anr  : [0,17442,com.mhbl.sastasundar,819510852,Broadcast of Intent { act=com.google.android.c2dm.intent.RECEIVE flg=0x11000010 pkg=com.mhbl.sastasundar cmp=com.mhbl.sastasundar/io.invertase.firebase.messaging.ReactNativeFirebaseMessagingReceiver (has extras) }]
	Line 5995: E00FAF1  08-06 09:35:36.675  1307 18319 I am_anr  : [0,17942,in.AajTak.headlines,685260356,Broadcast of Intent { act=com.google.android.c2dm.intent.RECEIVE flg=0x11000010 pkg=in.AajTak.headlines cmp=in.AajTak.headlines/com.google.firebase.iid.FirebaseInstanceIdReceiver (has extras) }]
	Line 6116: E010678  08-06 09:35:47.575  1307 18743 I am_anr  : [0,4396,com.android.vending,684375749,Input dispatching timed out (Application does not have a focused window)]
	Line 6371: E013A4B  08-06 09:36:20.150  1307 18743 I am_anr  : [0,18568,com.apollo.patientapp,685260356,Broadcast of Intent { act=com.google.android.c2dm.intent.RECEIVE flg=0x11000010 pkg=com.apollo.patientapp cmp=com.apollo.patientapp/io.invertase.firebase.messaging.ReactNativeFirebaseMessagingReceiver (has extras) }]
	Line 6485: E014760  08-06 09:36:26.195  1307 18743 I am_anr  : [0,19033,in.AajTak.headlines,685260356,Broadcast of Intent { act=com.google.android.c2dm.intent.RECEIVE flg=0x11000010 pkg=in.AajTak.headlines cmp=in.AajTak.headlines/com.google.firebase.iid.FirebaseInstanceIdReceiver (has extras) }]
	Line 6725: E0166AB  08-06 09:36:39.072  1307 20319 I am_anr  : [0,19902,com.ak.ta.dainikbhaskar.activity,953695812,Broadcast of Intent { act=com.google.android.c2dm.intent.RECEIVE flg=0x11000010 pkg=com.ak.ta.dainikbhaskar.activity cmp=com.ak.ta.dainikbhaskar.activity/com.google.firebase.iid.FirebaseInstanceIdReceiver (has extras) }]
	Line 6895: E017290  08-06 09:36:45.650  1307 20319 I am_anr  : [0,1307,system,818462217,Input dispatching timed out (PointerEventDispatcher0 (server) is not responding. Waited 5000ms for MotionEvent)]
	Line 7157: E01A0BE  08-06 09:37:20.289  1307 20319 I am_anr  : [0,1681,com.android.systemui,818462221,Input dispatching timed out (e29fba5 StatusBar (server) is not responding. Waited 6023ms for MotionEvent)]

可以看到短时间内连续发生多次进程的ANR,类似于这种连续的ANR需要分析第一次的ANR原因,先解决掉第一次ANR再测试此问题是否还会再次复现。

system ui crash\ap\072-0806_093411--0806_094109\0-android.log
S00EAA9  08-06 09:35:24.170  1307 17651 E ActivityManager: ANR in com.mhbl.sastasundar
S00EAA9  08-06 09:35:24.170  1307 17651 E ActivityManager: PID: 17442
S00EAA9  08-06 09:35:24.170  1307 17651 E ActivityManager: Reason: Broadcast of Intent { act=com.google.android.c2dm.intent.RECEIVE flg=0x11000010 pkg=com.mhbl.sastasundar cmp=com.mhbl.sastasundar/io.invertase.firebase.messaging.ReactNativeFirebaseMessagingReceiver (has extras) }
S00EAA9  08-06 09:35:24.170  1307 17651 E ActivityManager: ErrorId: 1ded8b71-9f0d-4d01-8085-a9baf5f62390
S00EAA9  08-06 09:35:24.170  1307 17651 E ActivityManager: Frozen: false
S00EAA9  08-06 09:35:24.170  1307 17651 E ActivityManager: Load: 0.0 / 0.0 / 0.0
S00EAA9  08-06 09:35:24.170  1307 17651 E ActivityManager: ----- Output from /proc/pressure/memory -----
S00EAA9  08-06 09:35:24.170  1307 17651 E ActivityManager: some avg10=85.33 avg60=64.56 avg300=30.32 total=123868296
S00EAA9  08-06 09:35:24.170  1307 17651 E ActivityManager: full avg10=22.26 avg60=16.60 avg300=7.95 total=33631546
S00EAA9  08-06 09:35:24.170  1307 17651 E ActivityManager: ----- End output from /proc/pressure/memory -----

可以看到/proc/pressure/memory的压力值比较大

S00EAA9  08-06 09:35:24.170  1307 17651 E ActivityManager: CPU usage from 92780ms to 0ms ago (2024-08-06 09:33:47.502 to 2024-08-06 09:35:20.282):
S00EAA9  08-06 09:35:24.170  1307 17651 E ActivityManager:   90% 141/kswapd0: 0% user + 90% kernel
S00EAA9  08-06 09:35:24.170  1307 17651 E ActivityManager:   73% 1307/system_server: 33% user + 39% kernel / faults: 110822 minor 93200 major
S00EAA9  08-06 09:35:24.170  1307 17651 E ActivityManager:   34% 1681/com.android.systemui: 15% user + 19% kernel / faults: 33159 minor 33227 major

S00EAAE  08-06 09:35:24.170  1307 17651 E ActivityManager: 96% TOTAL: 27% user + 59% kernel + 5.2% iowait + 2.1% irq + 2% softirq

查看连续几次ANR的Cpu Total值都在96% 98% 100%,iowait值并不高,且kswapd0占Top2,基本可以确认此问题是Low Memory问题。

在这里插入图片描述

	Line 35221: M007E8F  08-06 09:34:31.910   340   340 I lowmemorykiller: Kill 'com.google.android.apps.youtube.music' (11735), uid 10138, oom_score_adj 999 to free 24636kB rss, 52812kB swap; reason: min watermark is breached and swap is low (450964kB < 455992kB)
	Line 35412: M007F29  08-06 09:34:32.311   340   340 I lowmemorykiller: Kill 'com.google.process.gapps' (4451), uid 10113, oom_score_adj 999 to free 21208kB rss, 49980kB swap; reason: low watermark is breached and swap is low (448800kB < 455992kB)
	Line 35423: M007F34  08-06 09:34:32.359   340   340 I lowmemorykiller: Kill 'com.google.android.deskclock' (2416), uid 10118, oom_score_adj 999 to free 21016kB rss, 52988kB swap; reason: min watermark is breached even after kill
	Line 35438: M007F43  08-06 09:34:32.481   340   340 I lowmemorykiller: Kill 'com.android.vending:background' (5049), uid 10114, oom_score_adj 999 to free 20428kB rss, 59776kB swap; reason: low watermark is breached and swap is low (453948kB < 455992kB)
	Line 35741: M008072  08-06 09:34:32.962   340   340 I lowmemorykiller: Kill 'com.google.android.cellbroadcastreceiver' (2063), uid 10168, oom_score_adj 999 to free 20320kB rss, 50524kB swap; reason: low watermark is breached and swap is low (455692kB < 455992kB)
	Line 35985: M00815C  08-06 09:34:33.637   340   340 I lowmemorykiller: Kill 'com.facebook.system' (6873), uid 10079, oom_score_adj 999 to free 20144kB rss, 49068kB swap; reason: low watermark is breached and swap is low (453472kB < 455992kB)
	Line 36039: M008192  08-06 09:34:33.797   340   340 I lowmemorykiller: Kill 'com.google.android.apps.maps' (8274), uid 10133, oom_score_adj 999 to free 55584kB rss, 64452kB swap; reason: low watermark is breached and swap is low (453744kB < 455992kB)
	Line 36178: M00821D  08-06 09:34:33.999   340   340 I lowmemorykiller: Kill 'com.android.camera2' (9099), uid 10160, oom_score_adj 999 to free 19804kB rss, 48360kB swap; reason: low watermark is breached and swap is low (452024kB < 455992kB)
	Line 36316: M0082A7  08-06 09:34:34.198   340   340 I lowmemorykiller: Kill 'com.android.externalstorage' (8210), uid 10068, oom_score_adj 999 to free 19704kB rss, 48868kB swap; reason: low watermark is breached and swap is low (454868kB < 455992kB)
	Line 37361: M00869F  08-06 09:34:35.667   340   340 I lowmemorykiller: Kill 'com.android.traceur' (4787), uid 10081, oom_score_adj 999 to free 19416kB rss, 49152kB swap; reason: min watermark is breached and swap is low (449484kB < 455992kB)
	Line 37394: M0086B4  08-06 09:34:35.774   340   340 I lowmemorykiller: Kill 'com.sprd.providers.photos' (7332), uid 10067, oom_score_adj 999 to free 19340kB rss, 49356kB swap; reason: low watermark is breached and swap is low (449724kB < 455992kB)
	Line 37481: M00870B  08-06 09:34:35.918   340   340 I lowmemorykiller: Kill 'com.nis.app' (14288), uid 10217, oom_score_adj 999 to free 46980kB rss, 70508kB swap; reason: low watermark is breached and swap is low (455616kB < 455992kB)
	Line 41041: M0094AD  08-06 09:34:39.177   340   340 I lowmemorykiller: Kill 'com.google.android.ondevicepersonalization.services' (10031), uid 10208, oom_score_adj 999 to free 19704kB rss, 49864kB swap; reason: low watermark is breached and swap is low (455340kB < 455992kB)
	Line 41172: M009530  08-06 09:34:39.424   340   340 I lowmemorykiller: Kill 'com.myntra.android' (13820), uid 10026, oom_score_adj 999 to free 19504kB rss, 88780kB swap; reason: low watermark is breached and swap is low (453092kB < 455992kB)
	Line 41346: M0095DE  08-06 09:34:39.623   340   340 I lowmemorykiller: Kill 'com.android.soundrecorder' (8027), uid 10159, oom_score_adj 999 to free 19184kB rss, 48844kB swap; reason: low watermark is breached and swap is low (451460kB < 455992kB)

Android log中搜索[lowmemorykiller: Kill '](lowmemorykiller: Kill ') 可以看到LMKD在频繁大量的kill进程

解决方案:优化Low Memory

设备RAM本身比较小:3GB

C:\Users\Administrator>adb shell free -h
                total        used        free      shared     buffers
Mem:             2.6G        2.5G         79M        8.1M        1.6M
-/+ buffers/cache:           2.5G         80M
Swap:            1.3G        531M        834M

1.优化系统进程内存占用

2.减少reserved memory

1.2这两项一般很少修改

3.查看是否有进程发生内存泄漏(这个之前有一个项目的一个三方App发生存在泄露,占用Memory1.5G)

4.限制后台进程数量

/idh.code/frameworks/base/services/core/java/com/android/server/am/ActivityManagerConstants.java
-    private static final int DEFAULT_MAX_CACHED_PROCESSES = 32;
+    private static final int DEFAULT_MAX_CACHED_PROCESSES = 16;
/idh.code/frameworks/base/services/core/java/com/android/server/am/ProcessList.java
     long getCachedRestoreThresholdKb() {
-        return mCachedRestoreLevel;
+        return mCachedRestoreLevel/2;
     }
Return the maximum pss size in kb that we consider a process acceptable to
     restore from its cached state for running in the background when RAM is low.

5.调整LMKD的参数

/idh.code/device/sprd/mpool/module/vendor/memory/lmkd/mversion/full.mk
PRODUCT_VENDOR_PROPERTIES += \
     ro.lmk.filecache_min_kb = 153600 \
-    ro.lmk.psi_complete_stall_ms = 500
+    ro.lmk.psi_complete_stall_ms = 550 \
+    ro.lmk.psi_partial_stall_ms = 150 \
+    ro.lmk.kill_heaviest_task = true

6.swap分区扩大,增加逻辑内存大小

MTK
/device/mediatek/mt6xxx/
/dev/block/zram0 none swap defaults zramsize=xx%     把值或百分比调大
展锐
/idh.code/device/sprd/mpool/module/generic/partition/mversion/go/go.mk
+UNISOC_FSTAB_FLAG_ZRAMSIZE ?= zramsize=62%
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值