下面針對一些典型場景缺通用日志(android/kernel)的問題,一一列舉如下,希望可以讓大家關(guān)注到缺日志的真實原因。如下問題也提醒各位工程師:謹慎添加日志,不要隨意添加,否則即容易造成自己的日志缺失也會導致其他業(yè)務(wù)模塊丟失日志。
通用日志丟失目前有如下情況會出現(xiàn):
(1)liblog通過socket傳輸日志時失敗,此時在event日志中會記錄類似上圖中tag=liblog的埋點。具體見4.1、4.2節(jié)內(nèi)容。
(2)其它進程通過socket讀取logd的日志時,此時由于日志打印速度過快,讀取速度跟不上寫入速度,造成了部分歷史日志被丟棄的情況,此時在event日志中會記錄tag=chatty的埋點。此種情況遇到較少。
(3) logd buffer中日志內(nèi)存超過buffer大小了,則會按照每次裁剪日志的行數(shù)等于日志總行數(shù)的10%,并且會大于等于4行,小于256行。環(huán)形buffer大小超過了,會不斷循環(huán)裁剪。
(4) 文件存儲問題,導致日志內(nèi)容無法落盤至日志文件。具體見4.3節(jié)內(nèi)容。
(5) 低內(nèi)存查殺日志進程,導致日志內(nèi)容無法落盤。具體見4.4節(jié)內(nèi)容。
日志丟失的問題可能不止以上原因,基本分析思路是首先了解問題發(fā)生場景及時間點,然后通過日志抓取和落盤場景進行分析,參考業(yè)務(wù)日志打印頻率、logd的狀態(tài)(logd的cpu負載、運行狀態(tài))、系統(tǒng)的異常狀態(tài)(嚴重低內(nèi)存、整機CPU負載高、文件系統(tǒng)異常、溫度過高限頻限核)等綜合原因,得出問題分析結(jié)論。往往日志缺失和系統(tǒng)狀態(tài)聯(lián)系較為緊密,所以分析此類問題,就要具備開闊的視野,能夠及時聯(lián)想到有關(guān)整機各個狀態(tài),推測和佐證自己的分析原因和得出的結(jié)論。具體分析過程,也可以參考思維導圖。
下面針對以上內(nèi)容,列舉如下幾個典型案例,僅供大家參考。
4.1 業(yè)務(wù)日志輸出頻率太高
(1) events日志出現(xiàn)大量丟棄日志打印
(2) 查看android日志,發(fā)現(xiàn)sensor日志打印量非常大,基本達到刷屏的程度
(3) android日志輸出頻率達4229條/秒,日志輸出頻率非常大,sensor日志打印處于top1,達到2418條/s。
總結(jié):sensor日志打印頻率太高,超過了socket的處理能力,不能及時處理只能先行丟掉。故導致部分日志丟失。
4.2 整機負載高
(1) 輸出的日志出現(xiàn)大量的日志丟失內(nèi)容
(2) 查看日志打印頻率,發(fā)現(xiàn)日志輸出頻率較低
(3) 查看systrace發(fā)現(xiàn)整機負載高達90%以上,logd一直處于runanble狀態(tài),整機溫度也較高導致觸發(fā)了限頻限核。
總結(jié):logd一直處于runnable狀態(tài),導致logd無法獲得cpu時間片執(zhí)行日志操作,容易出現(xiàn)socket通信失敗,故導致部分日志丟失。
4.3 存儲異常導致
(1) 查看日志發(fā)現(xiàn)mmap異常
(2) 由于沒有過多日志打印,故本地使用adb logcat抓取日志分析
總結(jié):文件存儲出現(xiàn)問題,日志無法輸出到對應(yīng)的文件中,日志信息無法得到落盤,故出現(xiàn)日志內(nèi)容大量丟失。
4.4 低內(nèi)存導致
(1) 日志文件為空
(2) kernel日志中發(fā)現(xiàn)打印日志進程被殺
(3) 查看內(nèi)存,已經(jīng)處于低內(nèi)存狀態(tài)
總結(jié):低內(nèi)存導致日志進程被殺,出現(xiàn)日志文件無對應(yīng)的日志信息落盤,故出現(xiàn)日志內(nèi)容丟失。
-
Android
+關(guān)注
關(guān)注
12文章
3973瀏覽量
130316 -
文件
+關(guān)注
關(guān)注
1文章
580瀏覽量
25378 -
日志
+關(guān)注
關(guān)注
0文章
144瀏覽量
10871
發(fā)布評論請先 登錄
《Android基礎(chǔ)及典型案例開發(fā)指南》--創(chuàng)新移動開發(fā)系列
推薦一本書《android應(yīng)用程序開發(fā)與典型案例》完整版PDF下載
消息隊列的應(yīng)用場景
簡潔易用的日志系統(tǒng) ulog 日志
《Android基礎(chǔ)及典型案例開發(fā)指南》--創(chuàng)新移動開發(fā)系列
Android系統(tǒng)的日志模式選擇機制

fireflyCORE-3399PRO主板JD4--Android開發(fā)
基于時間卷積網(wǎng)絡(luò)的通用日志序列異常檢測框架

基于Android開發(fā)的ADT獲取內(nèi)存中的敏感信息
Android開發(fā)中的日志接口介紹

鴻蒙OS開發(fā):典型頁面場景【一次開發(fā),多端部署】(功能開發(fā))

日志篇:模組日志總體介紹

評論