下面針對(duì)一些典型場(chǎng)景缺通用日志(android/kernel)的問題,一一列舉如下,希望可以讓大家關(guān)注到缺日志的真實(shí)原因。如下問題也提醒各位工程師:謹(jǐn)慎添加日志,不要隨意添加,否則即容易造成自己的日志缺失也會(huì)導(dǎo)致其他業(yè)務(wù)模塊丟失日志。
通用日志丟失目前有如下情況會(huì)出現(xiàn):
(1)liblog通過socket傳輸日志時(shí)失敗,此時(shí)在event日志中會(huì)記錄類似上圖中tag=liblog的埋點(diǎn)。具體見4.1、4.2節(jié)內(nèi)容。
(2)其它進(jìn)程通過socket讀取logd的日志時(shí),此時(shí)由于日志打印速度過快,讀取速度跟不上寫入速度,造成了部分歷史日志被丟棄的情況,此時(shí)在event日志中會(huì)記錄tag=chatty的埋點(diǎn)。此種情況遇到較少。
(3) logd buffer中日志內(nèi)存超過buffer大小了,則會(huì)按照每次裁剪日志的行數(shù)等于日志總行數(shù)的10%,并且會(huì)大于等于4行,小于256行。環(huán)形buffer大小超過了,會(huì)不斷循環(huán)裁剪。
(4) 文件存儲(chǔ)問題,導(dǎo)致日志內(nèi)容無法落盤至日志文件。具體見4.3節(jié)內(nèi)容。
(5) 低內(nèi)存查殺日志進(jìn)程,導(dǎo)致日志內(nèi)容無法落盤。具體見4.4節(jié)內(nèi)容。
日志丟失的問題可能不止以上原因,基本分析思路是首先了解問題發(fā)生場(chǎng)景及時(shí)間點(diǎn),然后通過日志抓取和落盤場(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)異常、溫度過高限頻限核)等綜合原因,得出問題分析結(jié)論。往往日志缺失和系統(tǒng)狀態(tài)聯(lián)系較為緊密,所以分析此類問題,就要具備開闊的視野,能夠及時(shí)聯(lián)想到有關(guān)整機(jī)各個(gè)狀態(tài),推測(cè)和佐證自己的分析原因和得出的結(jié)論。具體分析過程,也可以參考思維導(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日志打印頻率太高,超過了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無法獲得cpu時(shí)間片執(zhí)行日志操作,容易出現(xiàn)socket通信失敗,故導(dǎo)致部分日志丟失。
4.3 存儲(chǔ)異常導(dǎo)致
(1) 查看日志發(fā)現(xiàn)mmap異常
(2) 由于沒有過多日志打印,故本地使用adb logcat抓取日志分析
總結(jié):文件存儲(chǔ)出現(xiàn)問題,日志無法輸出到對(duì)應(yīng)的文件中,日志信息無法得到落盤,故出現(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)日志文件無對(duì)應(yīng)的日志信息落盤,故出現(xiàn)日志內(nèi)容丟失。
-
Android
+關(guān)注
關(guān)注
12文章
3936瀏覽量
127413 -
文件
+關(guān)注
關(guān)注
1文章
566瀏覽量
24746 -
日志
+關(guān)注
關(guān)注
0文章
138瀏覽量
10643
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論