SDK日志上傳性能優(yōu)化
來源:博客園 2023-05-12 20:43:44
(資料圖片)
問題描述在SDK初始化時(shí),會(huì)在init方法中開啟一個(gè)倒計(jì)時(shí),在5s倒計(jì)時(shí)結(jié)束后使用子線程將本地保存的歷史日志信息上傳到后臺。因業(yè)務(wù)需要,在日志在發(fā)送上傳前,需要對日志數(shù)據(jù)做編碼和特殊字符替換,而日志文件里包含的日志數(shù)據(jù)量相比于一般方法中的局部變量要大很多,所以這樣集中對日志文件數(shù)據(jù)的編碼和替換就直接導(dǎo)致了CPU占用過高,造成了宿主APP短時(shí)間卡住的情況。所以導(dǎo)致了因?yàn)镾DK體驗(yàn)問題,日志啟動(dòng)上傳功能只能被迫關(guān)閉,等待優(yōu)化。背景描述SDK在使用過程中會(huì)產(chǎn)生日志,在操作正常情況下,一個(gè)流程結(jié)束就會(huì)把當(dāng)前單次產(chǎn)生的日志上傳到后臺。而對于異常退出或其他異常時(shí),日志就保留在了本地,等SDK第二次啟動(dòng)時(shí)時(shí)再上傳。問題解決情況優(yōu)化前:SDK啟動(dòng)時(shí),上傳日志對CPU的占用量為100%,占用時(shí)間為0.5s左右, 優(yōu)化后:SDK啟動(dòng)時(shí),上傳日志對CPU的占用量為40%左右,占用時(shí)間為1.5s左右。CPU使用情況數(shù)據(jù)采集如下,CPU采集頻率為0.5s。優(yōu)化前CPU使用情況:優(yōu)化后CPU使用情況:
日志上傳策略1.當(dāng)APP調(diào)用SDK的init方法初始時(shí),在init方法中會(huì)開啟一個(gè)倒計(jì)時(shí),在5s后使用子線程進(jìn)行發(fā)起上傳。2.上傳方法調(diào)用后,日志工具會(huì)遍歷本地日志目錄下的日志文件,并將日志文件創(chuàng)建成NSData。3.然后日志工具逐個(gè)讀取未上傳成功標(biāo)記的日志數(shù)據(jù)進(jìn)行data拼接。4.每當(dāng)一個(gè)Data日志拼接后會(huì)判斷當(dāng)前批次拼接的Data的大小是否大于100k, 如果大于則把數(shù)據(jù)放入請求參數(shù),異步發(fā)送一個(gè)網(wǎng)絡(luò)請求,重新創(chuàng)建一個(gè)Data可變對象。5.循環(huán)執(zhí)行3-4操作,直到所有的本地日志都發(fā)送到后臺當(dāng)前日志上傳策略邏輯清晰,但是存在一個(gè)問題。雖然每個(gè)上傳請求都是使用子線程上傳不影響主線程,但是當(dāng)本地日志量大時(shí),比如有10M日志,那么可能會(huì)同時(shí)發(fā)生100條請求,并在同一時(shí)間段內(nèi)集中對日志數(shù)據(jù)進(jìn)行編碼和特殊字符替換。這樣直接就把CPU資源搶光了,所以會(huì)造成APP卡頓。解決方法以時(shí)間換空間,用戶對日志上傳時(shí)無感知的,只要不影響APP的使用就好。按照這個(gè)原則上傳策略可以改為只使用一個(gè)線程,讓這100個(gè)上傳請求做串行上傳。如何讓子線程的網(wǎng)絡(luò)請求串行執(zhí)行呢?將上傳方法在成功回調(diào)中做遞歸調(diào)用。遞歸出口是判斷帶上傳的日志個(gè)數(shù),如果個(gè)數(shù)大于0就繼續(xù)遞歸調(diào)用上傳,否則就什么也不做,結(jié)束上傳操作。另外,通過后臺配置上傳開關(guān),在SDK調(diào)用時(shí)從后臺請求到上傳開關(guān)保存到本地,等上傳時(shí)讀取開關(guān)配置信息,判斷是否開啟上傳。這樣可用于緊急情況關(guān)閉日志上傳功能。關(guān)鍵詞:
圖片版權(quán)歸原作者所有,如有侵權(quán)請聯(lián)系我們,我們立刻刪除。
新化月報(bào)網(wǎng)報(bào)料熱線:886 2395@qq.com
新化月報(bào)網(wǎng)報(bào)料熱線:886 2395@qq.com
相關(guān)文章
你可能會(huì)喜歡
最近更新
- SDK日志上傳性能優(yōu)化2023-05-12
- 平安銀行:將暫停銷售智能通知存款產(chǎn)品 利率最少下調(diào)15個(gè)基點(diǎn)2023-05-12
- 國家工業(yè)信息安全發(fā)展研究中心向三亞學(xué)院致感謝信2023-05-12
- 環(huán)球今日報(bào)丨熱刺更衣室對穆里尼奧產(chǎn)生了不滿2023-05-12
- 2023數(shù)字經(jīng)濟(jì)大會(huì)在南京建鄴舉辦 全球信息2023-05-12
- 2023“翼展未來”春季國際學(xué)校聯(lián)展|北京大興精華學(xué)校書記、執(zhí)行校長魏國2023-05-12
- 大學(xué)老師插隊(duì)被拒,反咆哮斥責(zé)學(xué)生“不尊師”?校方:已成立調(diào)查組核實(shí)2023-05-12
- 國際護(hù)士節(jié)丨揭秘不同科室護(hù)士的“獨(dú)門絕技”2023-05-12
- 視焦點(diǎn)訊!沃爾沃卡車宣布停止收購江鈴重汽2023-05-12
- 天齊鋰業(yè)(09696)擬投資新建年產(chǎn)3萬噸電池級氫氧化鋰生產(chǎn)基地項(xiàng)目2023-05-12
- 浦銀國際-聞泰科技-600745-降本增效推動(dòng)產(chǎn)品集成業(yè)務(wù)減虧,臨港晶圓廠助力半導(dǎo)體業(yè)務(wù)產(chǎn)能釋放-2305042023-05-12
- 人民網(wǎng)828企業(yè)服務(wù)平臺“人民路演”項(xiàng)目在北京啟動(dòng)2023-05-12
- 未按時(shí)披露年報(bào)涉信披違法違規(guī) 交大昂立被立案調(diào)查2023-05-12
- 全球快看:贛鋒鋰業(yè)(002460):全產(chǎn)業(yè)布局保障未來潛能 業(yè)績進(jìn)入兌現(xiàn)期2023-05-12
- 百傲化學(xué):國內(nèi)主要競爭對手有西安恒盛諾德化工有限公司、濰坊天賜新材料科技有限公司_觀焦點(diǎn)2023-05-12
- 大連銀行等五家機(jī)構(gòu)被“深入調(diào)查”發(fā)現(xiàn)違規(guī)債券交易,交易商協(xié)會(huì)出重拳發(fā)整改令 全球熱文2023-05-12
- 榮耀手機(jī)激活設(shè)備密碼忘記了怎么辦_小米手機(jī)激活設(shè)備密碼忘了怎么辦 全球球精選2023-05-12
- 當(dāng)前熱點(diǎn)-華致酒行:接受長城證券等機(jī)構(gòu)調(diào)研2023-05-12
- 每日報(bào)道:三七互娛:關(guān)于公司業(yè)務(wù)的具體信息,請您關(guān)注公司于指定信息披露媒體披露的公告以及官方新聞2023-05-12
- 鐵礦石價(jià)格“虛火”漸退,價(jià)格連跌降至年內(nèi)低點(diǎn)2023-05-12
- 今日快訊:上海金融法院:8000萬股世紀(jì)華通股票將于6月13日法拍2023-05-12
- 環(huán)球視點(diǎn)!斑竹枝斑竹枝原文_斑竹枝斑竹枝講解2023-05-12
- 【環(huán)球熱聞】對同事的評價(jià)短句_對同事的評價(jià)2023-05-12
- 天天微動(dòng)態(tài)丨港府:全年經(jīng)濟(jì)增長預(yù)測維持不變2023-05-12
- 世界簡訊:盈峰環(huán)境:2022年,公司全新推出了行業(yè)品種型譜最全的第五代新能源全系列環(huán)衛(wèi)裝備產(chǎn)品族群,產(chǎn)品覆蓋了道路清掃清洗、垃圾轉(zhuǎn)運(yùn)、市政2023-05-12
- 2023中國黃金珠寶產(chǎn)業(yè)鏈銷售情況2023-05-12
- 全球速訊:貴州就進(jìn)一步加強(qiáng)未成年人文身治理工作約談相關(guān)行業(yè)負(fù)責(zé)人2023-05-12
- 山東舉行“全國防災(zāi)減災(zāi)日”水土保持主題宣傳活動(dòng) 焦點(diǎn)簡訊2023-05-12
- 市運(yùn)會(huì)今天開賽:共設(shè)四個(gè)組別78個(gè)大項(xiàng) 將持續(xù)到10月2023-05-12
- 地頭蛇不敵過江龍,南京三宗爆款地塊,被福建房企包圓了2023-05-12