版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
Takin客戶端的性能優(yōu)化實踐陸學(xué)慧@數(shù)列科技大綱 01Takin架構(gòu)簡介 02日志模塊高性能設(shè)計和優(yōu)化 03性能防腐之路 04Takin-LinkAgent后續(xù)規(guī)劃全球首個開源的生產(chǎn)環(huán)境全鏈路產(chǎn)品從客戶端到服務(wù)端一站式流量發(fā)起與診斷功能Takin架構(gòu)簡介Takin架構(gòu)簡介控制中心springboot流量引擎jmeterK8s/docker文Takin架構(gòu)簡介控制中心springboot流量引擎jmeterK8s/docker文件存儲客戶端Asm字節(jié)碼增強(qiáng)檔板大數(shù)據(jù)分析stormAMDBspringboot定時發(fā)壓序發(fā)壓析有序發(fā)壓量分析協(xié)議協(xié)議析中心數(shù)據(jù)推送數(shù)據(jù)腳本中數(shù)據(jù)腳本中心快速接入客戶端上報能設(shè)計和優(yōu)化LinkAgent的核心流程啟動期運(yùn)行期終止期類卸載類查找類卸載類查找類增強(qiáng)類增強(qiáng)日志高性能設(shè)計訴求高高性能過程中會產(chǎn)生大量的日志日志模塊的第一訴求日日志盡量不丟,處理不過來的情況可以對應(yīng)用對應(yīng)用CPU消耗少對對應(yīng)用內(nèi)存消耗少和GC的壓力,日志框架VS自研通用日志通用日志應(yīng)用診斷日志、應(yīng)用打印異常信息,排查問題用,一般是給人看的格式(Layout)、層次結(jié)構(gòu)(Category)、多種輸出實現(xiàn)(Appender)通用性訴求大于性能訴求,對于寫文件、序列化、格式化等優(yōu)先考慮擴(kuò)展性數(shù)據(jù)日志u一般是用來做監(jiān)控和數(shù)據(jù)分析的,可以人肉臨時分析,也可以給機(jī)器分析,要求格式比較固定u性能要求極高,因為一般是非主鏈路,要求對業(yè)務(wù)影響越小越好u對事務(wù)性要求不高,極端情況可丟棄u不太愿意付出特別多的成本交易日志如binlogu不需要通用,追求極致場景下的高性能和高事務(wù)性u愿意付出高昂的成本Thread-1Thread-2LogServerThread-1Thread-2LogServerThreadThread-N異步寫異步寫RINGBUFFERSSendLogThread WriteLogThread WriteLogThread零拷貝緩存減少內(nèi)存消耗LogFile_1日志高性能設(shè)計——異步化解耦的默認(rèn)實現(xiàn)日志的限流鎖鎖無鎖(很少的CAS,可以批量)性能(單線程)1844萬/秒(約提升10倍左右)日志設(shè)計優(yōu)化——隔離序列化線程dd?阻塞業(yè)務(wù)線程時間長,直接影響業(yè)務(wù)RT?多線程寫入文件,鎖競爭激烈?異常情況下急劇惡化業(yè)務(wù)RT?全內(nèi)存操作,對業(yè)務(wù)幾乎RT幾乎無影響讀出日志對象序列化批量順序?qū)懭肴罩救罩驹O(shè)計優(yōu)化固定緩存大小減少GC大量產(chǎn)生的日志,在序列化時會占用大量的零拷貝發(fā)送日志mmap對于大文件傳輸有一定優(yōu)勢零拷貝發(fā)送日志mmap對于大文件傳輸有一定優(yōu)勢對于小文件會產(chǎn)生大量碎片在多個進(jìn)程同時操作文件時可能產(chǎn)生引發(fā)coredump的signal最終選擇了sendFile方式統(tǒng)一序列化線程后,申請固定大小的8KB緩存重復(fù)使用對于寫文件來說,一個4KB大小能完整寫完一個文件塊通過控制固定緩存大小,從而控制IOPS自適應(yīng)的推送頻率固定頻率的讀取,在資源消耗和實時性上比自適應(yīng)的推送頻率固定頻率的讀取,在資源消耗和實時性上比較難以平衡推送的日志大小每次等于1MB,立即繼續(xù)推送如果不足1MB,等待1秒連續(xù)不滿足,持續(xù)增加,最多10秒等待JVM內(nèi)碼使用UnicodeUnicode轉(zhuǎn)GBK要查表計算Unicode轉(zhuǎn)UTF-8只要算性能有10%左右的差距性能防腐思路目標(biāo)嚴(yán)格控制在5%RT20ms-50ms1000并發(fā)?RT50ms-200ms1000并發(fā)持續(xù)補(bǔ)充版本發(fā)布定期驗證2018202020182020類方法增強(qiáng)階段類方法執(zhí)行階段類方法增強(qiáng)階段類方法執(zhí)行階段應(yīng)用啟動時間增加200%Agent加載應(yīng)用啟動擴(kuò)展插件加載Agent加載應(yīng)用啟動擴(kuò)展插件加載觸發(fā)類的重新加載向觸發(fā)類的重新加載增強(qiáng)目標(biāo)類方法增強(qiáng)目標(biāo)類方法注冊的類被加載方法是否需要增強(qiáng)目標(biāo)類方法被執(zhí)行執(zhí)行框架查找目標(biāo)類方法被執(zhí)行執(zhí)行框架查找對應(yīng)的攔截器執(zhí)行對應(yīng)攔截器的擴(kuò)展查找對應(yīng)的類加載構(gòu)建方法元數(shù)據(jù)構(gòu)建方法元數(shù)據(jù)匹配特點重點優(yōu)化部分優(yōu)化前優(yōu)化后構(gòu)建類元數(shù)據(jù)類名直接匹配構(gòu)建方法元數(shù)據(jù)構(gòu)建類元數(shù)據(jù)方法名模糊匹配與其他方法屬性匹配類名與方法類名與方法名模糊匹配與其他類屬性類方法增強(qiáng)方法名模糊匹配從本地插件類加載器緩存中查找從本地插件類加載器查找從框架類加載器查找釋放類加載鎖優(yōu)化重點二:類加載優(yōu)化從本地插件類加載器緩存中查找從本地插件類加載器查找從框架類加載器查找釋放類加載鎖優(yōu)化后優(yōu)化后優(yōu)化前如果包沒定義則根據(jù)類名加鎖根據(jù)類名加鎖載器查如果包沒定義則根據(jù)類名加鎖根據(jù)類名加鎖載器查找定義包 從本地插件類如果包沒定義則定義包從業(yè)務(wù)類加從本地插件類如果包沒定義則定義包從業(yè)務(wù)類加載中查找加載器緩存中查找查找從本地插件類加載器緩釋放類加載鎖從本地插件類加載器緩釋放類加載鎖 加載器查找從bootstrap從bootstrap類加載器查找從其他插件導(dǎo)出類中查找中查找從其他插件導(dǎo)出類中查找時間獲取性能優(yōu)化高并發(fā)系統(tǒng)只有一個全局時鐘源,高并發(fā)或頻繁訪問會造成嚴(yán)重的系統(tǒng)只有一個全局時鐘源,高并發(fā)或頻繁訪問會造成嚴(yán)重的爭用調(diào)用gettimeofday()需要從用戶態(tài)切換到內(nèi)核態(tài)計時器(時鐘源)影響,在HPET計時器下性能尤其差時間獲取性能優(yōu)化核心思路:利用一個異步線程獨立維護(hù)進(jìn)程內(nèi)的毫秒級時鐘,避免過多的系統(tǒng)調(diào)用和資源的競爭缺點:不精確日志記錄的數(shù)據(jù)可以丟,但是不能錯,會給排查問題帶來巨大的麻煩減少使用頻率性能沒有那么差,在Windows下該方法性能表現(xiàn)優(yōu)秀在Linux系的操作系統(tǒng)中用TSC、JVM_CLOCK這些更高rating的時鐘源性能也沒有問題如果是使用HPET、ACPI_PM這類高精度時鐘源的時候,高并發(fā)下該方法的調(diào)用開銷明顯變高白名單的匹配優(yōu)化YESYES/test/a/add/YESYES/test/add全局白名單正則匹配公正則匹配全局共用一份,每個節(jié)點配置相同大型公司有10萬+split+indexOf單點性能提升10倍以上引入應(yīng)用私域白名單,節(jié)點只拉取跟自己相關(guān)的白名單配置升了安全性和性能單節(jié)點數(shù)量下降至200左右異常的優(yōu)化getHostName的優(yōu)化追蹤消息發(fā)送的具體地址,獲取服務(wù)器地址和端口號:DNS服務(wù)請求量劇增消息發(fā)送失敗獲取IP地址其他優(yōu)化String.split使用正則實現(xiàn),大量調(diào)用時可以使用StringUtils.split替代,性能平均提升一倍以上字符串查找拒絕正則表達(dá)式最小化鎖粒度線程池統(tǒng)一管理String.indexof性能比遇到正則的場景,如高并發(fā)程序能不用鎖插件的方式,讓擴(kuò)展正則強(qiáng)不少,但是能果調(diào)用量不大,使用就不用鎖變的更容易,但是大緩存的盡量緩存如果大量調(diào)用,一定的作用范圍束,統(tǒng)一的線程池管String.indexof性能比遇到正則的場景,如高并發(fā)程序能不用鎖插件的方式,讓擴(kuò)展正則強(qiáng)不少,但是能果調(diào)用量不大,使用就不用鎖變的更容易,但是大緩存的盡量緩存如果大量調(diào)用,一定的作用范圍束,統(tǒng)一的線程池管不要使用正則表達(dá)式
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年水產(chǎn)養(yǎng)殖病害防控策略指南
- 2026青海西寧市城北區(qū)大堡子鎮(zhèn)中心衛(wèi)生院招聘衛(wèi)生專業(yè)技術(shù)人員的1人備考題庫含答案詳解
- 2026浙江寧波市鎮(zhèn)海中學(xué)國際部誠招學(xué)科雙語教師備考題庫及完整答案詳解1套
- 2026年林下經(jīng)濟(jì)模式創(chuàng)新發(fā)展課
- 軟件開發(fā)大數(shù)據(jù)模塊開發(fā)規(guī)范手冊
- 2026福建三明市永安市羅坊鄉(xiāng)人民政府招聘編外聘用駕駛員1人備考題庫及完整答案詳解1套
- 2026年企業(yè)并購法律盡調(diào)實務(wù)培訓(xùn)
- 職業(yè)健康促進(jìn)與企業(yè)健康管理未來趨勢
- 駐馬店2025年河南駐馬店市平輿縣人民醫(yī)院招聘人事代理人員28人筆試歷年參考題庫附帶答案詳解
- 金華2025年浙江金華義烏市人民檢察院司法雇員招錄6人筆試歷年參考題庫附帶答案詳解
- 江蘇省鹽城市大豐區(qū)四校聯(lián)考2025-2026學(xué)年七年級上學(xué)期12月月考?xì)v史試卷(含答案)
- 事業(yè)編退休報告申請書
- 原發(fā)性骨髓纖維化2026
- 半導(dǎo)體廠務(wù)項目工程管理 課件 項目6 凈化室系統(tǒng)的設(shè)計與維護(hù)
- 河南省洛陽強(qiáng)基聯(lián)盟2025-2026學(xué)年高二上學(xué)期1月月考英語試題含答案
- 2026年中考數(shù)學(xué)模擬試卷試題匯編-尺規(guī)作圖
- 安全技術(shù)勞動保護(hù)措施管理規(guī)定
- 新建加油站可行性研究報告6118933
- 論高級管理人員應(yīng)具備的財務(wù)知識
- GB/T 7354-2003局部放電測量
- GB/T 1690-1992硫化橡膠耐液體試驗方法
評論
0/150
提交評論