0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Android開發(fā)中如何解決典型場(chǎng)景缺通用日志的問(wèn)題

麥辣雞腿堡 ? 來(lái)源:OPPO內(nèi)核工匠 ? 作者:marc ? 2023-11-23 17:39 ? 次閱讀

下面針對(duì)一些典型場(chǎng)景缺通用日志(android/kernel)的問(wèn)題,一一列舉如下,希望可以讓大家關(guān)注到缺日志的真實(shí)原因。如下問(wèn)題也提醒各位工程師:謹(jǐn)慎添加日志,不要隨意添加,否則即容易造成自己的日志缺失也會(huì)導(dǎo)致其他業(yè)務(wù)模塊丟失日志。

通用日志丟失目前有如下情況會(huì)出現(xiàn):

(1)liblog通過(guò)socket傳輸日志時(shí)失敗,此時(shí)在event日志中會(huì)記錄類似上圖中tag=liblog的埋點(diǎn)。具體見(jiàn)4.1、4.2節(jié)內(nèi)容。

(2)其它進(jìn)程通過(guò)socket讀取logd的日志時(shí),此時(shí)由于日志打印速度過(guò)快,讀取速度跟不上寫入速度,造成了部分歷史日志被丟棄的情況,此時(shí)在event日志中會(huì)記錄tag=chatty的埋點(diǎn)。此種情況遇到較少。

(3) logd buffer中日志內(nèi)存超過(guò)buffer大小了,則會(huì)按照每次裁剪日志的行數(shù)等于日志總行數(shù)的10%,并且會(huì)大于等于4行,小于256行。環(huán)形buffer大小超過(guò)了,會(huì)不斷循環(huán)裁剪。

(4) 文件存儲(chǔ)問(wèn)題,導(dǎo)致日志內(nèi)容無(wú)法落盤至日志文件。具體見(jiàn)4.3節(jié)內(nèi)容。

(5) 低內(nèi)存查殺日志進(jìn)程,導(dǎo)致日志內(nèi)容無(wú)法落盤。具體見(jiàn)4.4節(jié)內(nèi)容。

日志丟失的問(wèn)題可能不止以上原因,基本分析思路是首先了解問(wèn)題發(fā)生場(chǎng)景及時(shí)間點(diǎn),然后通過(guò)日志抓取和落盤場(chǎng)景進(jìn)行分析,參考業(yè)務(wù)日志打印頻率、logd的狀態(tài)(logd的cpu負(fù)載、運(yùn)行狀態(tài))、系統(tǒng)的異常狀態(tài)(嚴(yán)重低內(nèi)存、整機(jī)CPU負(fù)載高、文件系統(tǒng)異常、溫度過(guò)高限頻限核)等綜合原因,得出問(wèn)題分析結(jié)論。往往日志缺失和系統(tǒng)狀態(tài)聯(lián)系較為緊密,所以分析此類問(wèn)題,就要具備開闊的視野,能夠及時(shí)聯(lián)想到有關(guān)整機(jī)各個(gè)狀態(tài),推測(cè)和佐證自己的分析原因和得出的結(jié)論。具體分析過(guò)程,也可以參考思維導(dǎo)圖。

圖片

下面針對(duì)以上內(nèi)容,列舉如下幾個(gè)典型案例,僅供大家參考。

4.1 業(yè)務(wù)日志輸出頻率太高

(1) events日志出現(xiàn)大量丟棄日志打印

(2) 查看android日志,發(fā)現(xiàn)sensor日志打印量非常大,基本達(dá)到刷屏的程度

(3) android日志輸出頻率達(dá)4229條/秒,日志輸出頻率非常大,sensor日志打印處于top1,達(dá)到2418條/s。

總結(jié):sensor日志打印頻率太高,超過(guò)了socket的處理能力,不能及時(shí)處理只能先行丟掉。故導(dǎo)致部分日志丟失。

4.2 整機(jī)負(fù)載高

(1) 輸出的日志出現(xiàn)大量的日志丟失內(nèi)容

(2) 查看日志打印頻率,發(fā)現(xiàn)日志輸出頻率較低

(3) 查看systrace發(fā)現(xiàn)整機(jī)負(fù)載高達(dá)90%以上,logd一直處于runanble狀態(tài),整機(jī)溫度也較高導(dǎo)致觸發(fā)了限頻限核。

總結(jié):logd一直處于runnable狀態(tài),導(dǎo)致logd無(wú)法獲得cpu時(shí)間片執(zhí)行日志操作,容易出現(xiàn)socket通信失敗,故導(dǎo)致部分日志丟失。

4.3 存儲(chǔ)異常導(dǎo)致

(1) 查看日志發(fā)現(xiàn)mmap異常

(2) 由于沒(méi)有過(guò)多日志打印,故本地使用adb logcat抓取日志分析

總結(jié):文件存儲(chǔ)出現(xiàn)問(wèn)題,日志無(wú)法輸出到對(duì)應(yīng)的文件中,日志信息無(wú)法得到落盤,故出現(xiàn)日志內(nèi)容大量丟失。

4.4 低內(nèi)存導(dǎo)致

(1) 日志文件為空

圖片

(2) kernel日志中發(fā)現(xiàn)打印日志進(jìn)程被殺

圖片

(3) 查看內(nèi)存,已經(jīng)處于低內(nèi)存狀態(tài)

圖片

總結(jié):低內(nèi)存導(dǎo)致日志進(jìn)程被殺,出現(xiàn)日志文件無(wú)對(duì)應(yīng)的日志信息落盤,故出現(xiàn)日志內(nèi)容丟失。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Android
    +關(guān)注

    關(guān)注

    12

    文章

    3903

    瀏覽量

    126615
  • 文件
    +關(guān)注

    關(guān)注

    1

    文章

    551

    瀏覽量

    24560
  • 日志
    +關(guān)注

    關(guān)注

    0

    文章

    129

    瀏覽量

    10593
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Android基礎(chǔ)及典型案例開發(fā)指南》--創(chuàng)新移動(dòng)開發(fā)系列

    `《Android基礎(chǔ)及典型案例開發(fā)指南》--創(chuàng)新移動(dòng)開發(fā)系列 Android基礎(chǔ)篇+經(jīng)典開發(fā)
    發(fā)表于 08-07 22:18

    推薦一本書《android應(yīng)用程序開發(fā)典型案例》完整版PDF下載

    android應(yīng)用程序開發(fā)典型案例》圖書簡(jiǎn)介:共23章,內(nèi)容包含兩大部分。第一部分是android程序設(shè)計(jì)基礎(chǔ),在介紹android環(huán)境
    發(fā)表于 09-28 10:29

    使用android studio做應(yīng)用開發(fā),將項(xiàng)目導(dǎo)入android studio,編譯的時(shí)候出現(xiàn)錯(cuò)誤這是為什么?如何解決?

    本帖最后由 一只耳朵怪 于 2018-6-8 09:43 編輯 我們使用android studio做應(yīng)用開發(fā),將項(xiàng)目導(dǎo)入android studio,編譯的時(shí)候報(bào)如下錯(cuò)誤,希
    發(fā)表于 06-07 09:33

    消息隊(duì)列的應(yīng)用場(chǎng)景

    、流量削鋒  流量削鋒也是消息隊(duì)列的常用場(chǎng)景,一般在秒殺或團(tuán)搶活動(dòng)中使用廣泛!  應(yīng)用場(chǎng)景:秒殺活動(dòng),一般會(huì)因?yàn)榱髁窟^(guò)大,導(dǎo)致流量暴增,應(yīng)用掛掉。為解決這個(gè)問(wèn)題,一般需要在應(yīng)用前端加入消息隊(duì)列
    發(fā)表于 06-23 10:19

    簡(jiǎn)潔易用的日志系統(tǒng) ulog 日志

    ulog 日志ulog 簡(jiǎn)介日志的定義:日志是將軟件運(yùn)行的狀態(tài)、過(guò)程等信息,輸出到不同的介質(zhì)(例如:文件、控制臺(tái)、顯示屏等),并進(jìn)行顯示和保存。為軟件調(diào)試、維護(hù)過(guò)程
    發(fā)表于 03-29 06:40

    Android基礎(chǔ)及典型案例開發(fā)指南》--創(chuàng)新移動(dòng)開發(fā)系列

    Android基礎(chǔ)及典型案例開發(fā)指南》--創(chuàng)新移動(dòng)開發(fā)系列
    發(fā)表于 02-08 00:32 ?11次下載

    Android系統(tǒng)的日志模式選擇機(jī)制

    在寫磁盤的過(guò)程如果意外掉電或系統(tǒng)崩潰很有可能導(dǎo)致文件系統(tǒng)中用戶數(shù)據(jù)和元數(shù)據(jù)不一致,現(xiàn)有文件系統(tǒng)主要采取寫前日志或?qū)憰r(shí)拷貝等一致性技術(shù)來(lái)解決該問(wèn)題,但均沒(méi)有考慮目錄對(duì)可靠性需求的差異性。針對(duì)現(xiàn)有
    發(fā)表于 01-03 14:46 ?0次下載
    <b class='flag-5'>Android</b>系統(tǒng)的<b class='flag-5'>日志</b>模式選擇機(jī)制

    fireflyCORE-3399PRO主板JD4--Android開發(fā)

    Android開發(fā) ADB 使用 前言 adb,全稱 Android Debug Bridge,是 Android 的命令行調(diào)試工具,可以完成多種功能,如跟蹤系統(tǒng)
    的頭像 發(fā)表于 12-17 16:30 ?1571次閱讀

    基于時(shí)間卷積網(wǎng)絡(luò)的通用日志序列異常檢測(cè)框架

    基于循環(huán)神經(jīng)網(wǎng)絡(luò)的日志序列異常檢測(cè)模型對(duì)短序列有較好的檢測(cè)能力,但對(duì)長(zhǎng)序列的檢測(cè)準(zhǔn)確性較差。為此,提出一種基于時(shí)間卷積網(wǎng)絡(luò)的通用日志序列異常檢測(cè)框架。將日志模板序列建模為自然語(yǔ)言序列,
    發(fā)表于 03-30 10:29 ?8次下載
    基于時(shí)間卷積網(wǎng)絡(luò)的<b class='flag-5'>通用</b><b class='flag-5'>日志</b>序列異常檢測(cè)框架

    基于Android開發(fā)的ADT獲取內(nèi)存的敏感信息

    Eclipse上的開發(fā)工具。目前Android開發(fā)所用的開發(fā)工具主要有Android Studio 、intellij idea、Eclip
    的頭像 發(fā)表于 09-06 15:22 ?1062次閱讀

    Android異常日志快速定位分析小技巧

    Android異常日志快速定位分析小技巧
    的頭像 發(fā)表于 08-09 10:06 ?2393次閱讀
    <b class='flag-5'>Android</b>異常<b class='flag-5'>日志</b>快速定位分析小技巧

    C++異步日志實(shí)踐

    文件,在日志產(chǎn)生不頻繁的場(chǎng)景下沒(méi)什么問(wèn)題 可是,如果日志打印很頻繁,同步日志有什么問(wèn)題? 一方面,大量的日志打印陷入等量的write系統(tǒng)調(diào)用
    的頭像 發(fā)表于 11-09 10:29 ?529次閱讀
    C++異步<b class='flag-5'>日志</b>實(shí)踐

    Android開發(fā)日志接口介紹

    、LOG_ID_RADIO、LOG_ID_EVENTS、LOG_ID_SYSTEM、 LOG_ID_CRASH。 1.1.1 日志緩沖區(qū)簡(jiǎn)介 Android日志記錄系統(tǒng)守護(hù)進(jìn)程logd維護(hù)的一組結(jié)構(gòu)化環(huán)形緩沖區(qū),這組可用的緩沖區(qū)
    的頭像 發(fā)表于 11-23 16:27 ?903次閱讀
    <b class='flag-5'>Android</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>中</b>的<b class='flag-5'>日志</b>接口介紹

    Android日志與logd交互過(guò)程

    2.2.3 Android日志與logd交互過(guò)程 2.2.3.1 Android日志傳遞給logd Android app層或framewo
    的頭像 發(fā)表于 11-23 17:06 ?746次閱讀
    <b class='flag-5'>Android</b><b class='flag-5'>日志</b>與logd交互過(guò)程

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

    應(yīng)用開發(fā)至少包含兩部分工作: UI頁(yè)面開發(fā)和底層功能開發(fā)(部分需要聯(lián)網(wǎng)的應(yīng)用還會(huì)涉及服務(wù)端開發(fā))。前面章節(jié)介紹了如何解決頁(yè)面適配的問(wèn)題,本章
    的頭像 發(fā)表于 05-28 17:32 ?384次閱讀
    鴻蒙OS<b class='flag-5'>開發(fā)</b>:<b class='flag-5'>典型</b>頁(yè)面<b class='flag-5'>場(chǎng)景</b>【一次<b class='flag-5'>開發(fā)</b>,多端部署】(功能<b class='flag-5'>開發(fā)</b>)