亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

代碼性能剖析實(shí)戰(zhàn)指南:從工具原理到火焰圖定位瓶頸的完整方法論

代碼性能剖析實(shí)戰(zhàn)指南:從工具原理到火焰圖定位瓶頸的完整方法論 我做了近十年后端開發(fā)和性能調(diào)優(yōu)經(jīng)手過不少“線上突然卡死”“接口一天比一天慢”的疑難雜癥。排查這類問題最核心的手段就是代碼性能剖析Profiling??梢赃@么說沒有剖析工具性能調(diào)優(yōu)基本等于閉著眼猜有了剖析工具問題的定位效率能提升一個(gè)數(shù)量級(jí)。這篇文章我不打算講枯燥的理論而是結(jié)合我這么多年的實(shí)操經(jīng)驗(yàn)把這個(gè)主題拆開揉碎講清楚代碼性能剖析工具到底是什么、能解決什么問題、不同場(chǎng)景下怎么選型、具體怎么用以及那些文檔里不會(huì)寫但實(shí)戰(zhàn)中一定會(huì)踩的坑。文章面向的讀者包括剛接觸性能優(yōu)化不久的新人也包括想系統(tǒng)梳理工具鏈的資深開發(fā)。我會(huì)把重點(diǎn)放在工具背后的原理、參數(shù)選擇的依據(jù)以及排查思路的建立上??赐曛竽銘?yīng)該能拿著手頭的項(xiàng)目直接照著這套方法論動(dòng)手做一次完整的性能剖析。1. 性能剖析工具的本質(zhì)給代碼做“體檢”很多人對(duì)性能剖析工具有個(gè)誤解覺得它就是拿來測(cè)個(gè)耗時(shí)、看看哪個(gè)函數(shù)跑得慢。其實(shí)不只如此。代碼性能剖析工具的定位更像醫(yī)院的體檢設(shè)備它不直接幫你治病但能精準(zhǔn)告訴你病灶在哪里。它解決的問題是“我的代碼到底把時(shí)間花在哪了”“內(nèi)存都去哪了”“為什么CPU占用這么高”這三個(gè)問題的答案就是性能優(yōu)化的全部起點(diǎn)。1.1 為什么不能靠“感覺”定位性能瓶頸我見過太多團(tuán)隊(duì)排查性能問題靠的是“經(jīng)驗(yàn)”和“猜測(cè)”覺得某個(gè)接口慢就把里面所有日志打出來看耗時(shí)覺得內(nèi)存漲得快就到處加打印。這種做法在小項(xiàng)目里勉強(qiáng)能用一旦代碼量上來、調(diào)用鏈變長(zhǎng)基本就失效了。原因很簡(jiǎn)單一個(gè)請(qǐng)求經(jīng)過的函數(shù)可能有幾十上百個(gè)任何一個(gè)環(huán)節(jié)都可能成為瓶頸靠肉眼掃代碼效率極低而且經(jīng)常被“看起來慢”的代碼誤導(dǎo)。舉個(gè)我實(shí)際遇到的案例。一個(gè)在線報(bào)表系統(tǒng)導(dǎo)出數(shù)據(jù)時(shí)非常慢開發(fā)第一反應(yīng)是SQL查詢慢優(yōu)化了一周索引效果甚微。后來我用剖析工具一跑發(fā)現(xiàn)SQL查詢只占總耗時(shí)的15%真正的大頭反而是一個(gè)不起眼的Excel格式轉(zhuǎn)換函數(shù)——它嵌套循環(huán)里做了大量的字符串拼接觸發(fā)了頻繁的內(nèi)存分配和復(fù)制。這個(gè)函數(shù)藏在工具類里平時(shí)根本沒人會(huì)注意到。這個(gè)案例說明性能問題往往藏在“你以為不是瓶頸”的地方只有基于數(shù)據(jù)才能找到真相。1.2 剖析工具的三種典型工作模式要理解剖析工具就得先理解它的工作原理。市面上的剖析工具五花八門但底層工作模式就三種采樣Sampling、插樁Instrumentation、事件追蹤Event Tracing。采樣模式最簡(jiǎn)單粗暴。它就像每隔一段時(shí)間給程序拍一張快照記錄“此刻CPU正在執(zhí)行哪個(gè)函數(shù)”。比如每10毫秒采樣一次跑100毫秒就能得到10個(gè)樣本點(diǎn)樣本點(diǎn)最集中的函數(shù)就是熱點(diǎn)函數(shù)。這種模式開銷極小幾乎不影響程序本身的行為適合定位CPU密集型瓶頸。代價(jià)是精度有限極端情況下可能漏掉執(zhí)行時(shí)間很短的函數(shù)。插樁模式則是在函數(shù)入口、出口、循環(huán)內(nèi)部插入統(tǒng)計(jì)代碼精確記錄每個(gè)函數(shù)被調(diào)用了多少次、耗時(shí)多少。它得到的數(shù)據(jù)非常精確能生成完整的調(diào)用樹和耗時(shí)分布但開銷也比較大在線上環(huán)境啟用的話可能把程序的性能拖慢20%到50%。所以插樁模式更適合測(cè)試環(huán)境和預(yù)發(fā)環(huán)境不適合高并發(fā)的生產(chǎn)環(huán)境。事件追蹤模式介于兩者之間它不統(tǒng)計(jì)函數(shù)耗時(shí)而是記錄特定事件比如鎖等待、GC停頓、磁盤IO、網(wǎng)絡(luò)請(qǐng)求發(fā)生的時(shí)機(jī)和持續(xù)時(shí)長(zhǎng)。這種模式對(duì)排查“響應(yīng)慢但CPU不高”的問題特別有效因?yàn)槠款i往往不在計(jì)算而在等待外部資源。1.3 剖析工具能發(fā)現(xiàn)哪幾類典型問題弄清了工作模式再聊聊剖析工具實(shí)際能挖出哪些問題。根據(jù)我的經(jīng)驗(yàn)最常見的是以下五類。第一類是CPU熱點(diǎn)。表現(xiàn)為某個(gè)純計(jì)算函數(shù)占用了70%以上的CPU時(shí)間典型原因包括低效算法、不必要的字符串拼接、正則表達(dá)式回溯等。第二類是內(nèi)存問題。包括內(nèi)存泄漏某塊內(nèi)存被持有后永遠(yuǎn)無法釋放導(dǎo)致內(nèi)存占用持續(xù)攀升內(nèi)存抖動(dòng)大量短生命周期對(duì)象被頻繁創(chuàng)建和回收導(dǎo)致GC壓力過大和CPU飆升。第三類是鎖競(jìng)爭(zhēng)。多個(gè)線程同時(shí)競(jìng)爭(zhēng)同一把鎖導(dǎo)致大量線程處于阻塞狀態(tài)CPU利用率不高但程序極慢。第四類是IO阻塞。程序大量時(shí)間花在等待磁盤讀寫、網(wǎng)絡(luò)請(qǐng)求或數(shù)據(jù)庫響應(yīng)上這類問題用CPU剖析往往看不到熱點(diǎn)需要用IO追蹤或線程狀態(tài)分析。第五類是調(diào)用次數(shù)異常。某個(gè)函數(shù)本身耗時(shí)不長(zhǎng)但被調(diào)用了成百上千萬次累計(jì)耗時(shí)驚人。這類問題在插樁模式的調(diào)用樹里一目了然但在采樣模式下容易被忽略。這五類問題覆蓋了絕大多數(shù)我遇到過的性能事故。掌握剖析工具本質(zhì)上就是掌握了一套系統(tǒng)發(fā)現(xiàn)這些問題的方法論。2. 工具選型不同語言和環(huán)境該用哪個(gè)代碼性能剖析工具沒有“通吃”的版本不同語言、不同規(guī)模的項(xiàng)目適合的工具差異很大。我自己的習(xí)慣是先根據(jù)項(xiàng)目的運(yùn)行環(huán)境和技術(shù)棧篩選再結(jié)合剖析需求CPU還是內(nèi)存、在線還是離線做最終決定。下面這幾種組合是我在不同階段和不同項(xiàng)目里驗(yàn)證過比較穩(wěn)的方案。2.1 Python項(xiàng)目cProfile與py-spy的搭配Python是動(dòng)態(tài)語言剖析工具的選擇比較有講究。官方標(biāo)準(zhǔn)庫里自帶cProfile屬于插樁模式的剖析器用起來非常簡(jiǎn)單# 方式一直接剖析一段代碼 python -m cProfile -o output.prof my_script.py # 方式二在代碼內(nèi)部啟動(dòng)和停止剖析 import cProfile profiler cProfile.Profile() profiler.enable() # ... 要剖析的業(yè)務(wù)代碼 ... profiler.disable() profiler.dump_stats(output.prof)生成了.prof文件之后可以用pstats模塊在命令行里做交互式分析也可以用可視化工具跑出火焰圖。我習(xí)慣的命令行分析是import pstats p pstats.Stats(output.prof) p.sort_stats(cumulative).print_stats(30)這里有個(gè)關(guān)鍵參數(shù)要說明一下。sort_stats有幾種排序維度time表示按函數(shù)自身耗時(shí)排序cumulative表示按函數(shù)累計(jì)耗時(shí)包括它調(diào)用的所有子函數(shù)排序。我個(gè)人的習(xí)慣是先按cumulative看前十名找出調(diào)用鏈路上累計(jì)耗時(shí)最高的入口函數(shù)再切換成time找出真正“干活”最多的純計(jì)算函數(shù)。兩者結(jié)合才能既看到宏觀調(diào)用鏈又鎖定微觀熱點(diǎn)。cProfile的缺點(diǎn)是插樁模式開銷大線上生產(chǎn)環(huán)境基本沒法用。這時(shí)就需要py-spy出場(chǎng)了。py-spy是一個(gè)采樣模式的剖析器它可以直接附加到正在運(yùn)行的Python進(jìn)程上不需要修改代碼也不需要重啟服務(wù)對(duì)程序性能的影響控制在5%以內(nèi)。這在排查線上事故時(shí)是救命級(jí)別的工具我甚至遇到過——進(jìn)程卡死到連top都打不開——py-spy還能正常采樣的場(chǎng)景這也間接說明了py-spy的強(qiáng)悍。它采集數(shù)據(jù)的命令是# 生成火焰圖所需的原始數(shù)據(jù) py-spy record --pid 進(jìn)程PID -o profile.svg # 直接查看進(jìn)程當(dāng)前正在執(zhí)行的代碼 py-spy dump --pid 進(jìn)程PIDpy-spy dump是我日常用得最多的子命令。它能立即打印出進(jìn)程內(nèi)所有線程的當(dāng)前調(diào)用棧幾秒鐘就能定位“線程卡在哪了”。比如線程卡在socket.read說明在等網(wǎng)絡(luò)卡在threading.Lock.acquire說明在等鎖。這種實(shí)時(shí)快照的定位能力是cProfile不具備的。2.2 Java項(xiàng)目async-profiler與Arthas的選擇Java生態(tài)的剖析工具非常豐富但很多重量級(jí)工具比如JProfiler、YourKit是需要付費(fèi)的。我個(gè)人的首選是async-profiler——它是完全免費(fèi)的開源工具由阿里巴巴的工程師主導(dǎo)開發(fā)。它厲害的地方在于同時(shí)支持CPU采樣、內(nèi)存分配采樣、鎖競(jìng)爭(zhēng)分析和GC停頓分析而且開銷極低可以直接在生產(chǎn)環(huán)境使用。在開始之前我們需要記住它的一般用法# 在Linux平臺(tái)分配10毫秒的CPU采樣 ./profiler.sh -d 30 -e cpu -o flamegraph -i 10ms PID # Java 11以上可以直接基于JFRJava Flight Recorder ./profiler.sh -d 30 -e alloc -o flamegraph PID這里-d 30表示采樣30秒-e cpu是事件類型-i 10ms是采樣間隔。采樣間隔這個(gè)參數(shù)很重要設(shè)得太小會(huì)導(dǎo)致剖析器自身消耗過多CPU干擾被分析程序設(shè)得太大又可能漏掉短命的熱點(diǎn)函數(shù)。我自己的經(jīng)驗(yàn)值是對(duì)cpu事件用1ms到10ms對(duì)alloc事件用100us左右可以根據(jù)程序的實(shí)際特點(diǎn)調(diào)整。如果你用的是Java且不想裝額外工具還有個(gè)更輕的選擇JFRJava Flight Recorder本身。JDK 11以上自帶不需要第三方依賴。啟動(dòng)時(shí)加上-XX:StartFlightRecordingfilenamerecording.jfr,duration60s,settingsprofile就能采集60秒的性能數(shù)據(jù)然后用jfr print --events jdk.ExecutionSample命令解析。雖然命令行的體驗(yàn)不如火焰圖直觀但在沒有外部工具的環(huán)境中它是最快的應(yīng)急方案。Arthas也是阿里巴巴開源的一個(gè)工具它的定位是Java診斷平臺(tái)功能很全包括在線反編譯、方法調(diào)用追蹤、線程棧查看等。但要說性能剖析的專業(yè)度它不如async-profiler。我的用法是跑火焰圖選async-profiler線上看線程狀態(tài)和處理復(fù)雜問題選Arthas。Arthas特別適合解決“哪個(gè)線程卡的”和“這個(gè)方法入?yún)⒊鰠⑹鞘裁础边@類現(xiàn)場(chǎng)診斷問題。2.3 Go項(xiàng)目與系統(tǒng)級(jí)工具pprof和perf的實(shí)戰(zhàn)組合Go語言自帶runtime/pprof這是我認(rèn)為所有語言中做得最好的內(nèi)置性能剖析工具沒有之一。它支持CPU剖析、堆內(nèi)存剖析、goroutine阻塞分析、鎖競(jìng)爭(zhēng)分析而且用法統(tǒng)一。在服務(wù)代碼里加入下面幾行就能通過HTTP接口暴露剖析數(shù)據(jù)import _ net/http/pprof // 在main函數(shù)中啟動(dòng)HTTP服務(wù) go func() { http.ListenAndServe(:6060, nil) }()啟動(dòng)服務(wù)后獲取剖析數(shù)據(jù)的方式很直接# 采集30秒的CPU剖析數(shù)據(jù) go tool pprof http://localhost:6060/debug/pprof/profile?seconds30 # 直接進(jìn)入pprof的交互式命令行 go tool pprof http://localhost:6060/debug/pprof/heapgo tool pprof進(jìn)入交互式命令行后有幾個(gè)常用命令值得記一下。輸入top查看占用最高的函數(shù)輸入list加上函數(shù)名可以查看該函數(shù)每一行代碼的耗時(shí)明細(xì)輸入web生成調(diào)用圖并用瀏覽器打開。這些命令配合起來基本可以完成從“熱點(diǎn)函數(shù)”到“熱點(diǎn)代碼行”的下鉆分析。如果問題不在Go進(jìn)程內(nèi)部而在于整個(gè)系統(tǒng)的資源消耗就需要用系統(tǒng)級(jí)工具perf了。perf是Linux內(nèi)核自帶的性能剖析工具理論上可以剖析任何進(jìn)程——包括編譯后的C/C程序、Java的JIT代碼、Go的運(yùn)行時(shí)——但需要內(nèi)核開啟CONFIG_PERF_EVENTS支持。它的用法如下# 以49Hz頻率采樣指定進(jìn)程60秒 perf record -F 49 -p PID -- sleep 60 # 生成剖析報(bào)告 perf reportperf生成的報(bào)告能顯示每個(gè)函數(shù)的CPU占用率和調(diào)用路徑對(duì)系統(tǒng)級(jí)性能問題比如某個(gè)系統(tǒng)調(diào)用耗時(shí)異常、CPU緩存命中率低有很敏銳的洞察。它的門檻比語言特定工具高一些需要理解一些內(nèi)核調(diào)度的概念但對(duì)排查混合語言架構(gòu)的項(xiàng)目非常關(guān)鍵。3. 實(shí)操全流程從發(fā)現(xiàn)卡頓到精準(zhǔn)定位工具選得再好不會(huì)用等于零。這一節(jié)我用一個(gè)模擬的真實(shí)案例把從發(fā)現(xiàn)問題到找到根因的完整流程走一遍。案例背景是一個(gè)Python寫的定時(shí)任務(wù)每天凌晨處理一批數(shù)據(jù)最近幾天處理時(shí)間從30分鐘暴漲到3小時(shí)運(yùn)維已經(jīng)催了好幾輪。3.1 第一步用實(shí)時(shí)快照確認(rèn)初步方向接到這類問題我不會(huì)直接上重型剖析而是先用py-spy對(duì)運(yùn)行中的進(jìn)程做個(gè)實(shí)時(shí)快照確認(rèn)程序當(dāng)前到底在干什么。這一步很像醫(yī)生先量體溫、測(cè)血壓目的是建立對(duì)病情的初步判斷。py-spy dump --pid 28471輸出會(huì)顯示每個(gè)線程的當(dāng)前棧幀。我當(dāng)時(shí)看到的情況是主線程卡在了一個(gè)函數(shù)內(nèi)部的深層調(diào)用里而且它調(diào)用的子函數(shù)大量集中在正則表達(dá)式處理上。這說明問題可能是正則引擎的回溯導(dǎo)致的——這是Python里非常著名的性能殺手。有了這個(gè)初步判斷我才決定用cProfile做一次詳細(xì)的插樁剖析拿到精確的耗時(shí)分布。這里有個(gè)經(jīng)驗(yàn)值得分享采樣模式的快照適合“寬泛定位”但要精確定位到具體函數(shù)和代碼行還是得靠插樁數(shù)據(jù)。這兩種模式是互補(bǔ)的實(shí)戰(zhàn)中常組合使用。3.2 第二步完整采集剖析數(shù)據(jù)并生成火焰圖為了不影響線上的正常服務(wù)我把剖析動(dòng)作放在了測(cè)試環(huán)境的同樣數(shù)據(jù)量上進(jìn)行然后用cProfile采集完整數(shù)據(jù)python -m cProfile -o task.prof task_runner.py數(shù)據(jù)采集完畢后我利用snakeviz庫快速生成可視化報(bào)表snakeviz task.profsnakeviz會(huì)在瀏覽器里打開一個(gè)交互式界面可以點(diǎn)擊任意函數(shù)查看它的累計(jì)耗時(shí)和調(diào)用關(guān)系。相比pstats的純文本輸出可視化界面的定位效率高很多。我在剖析報(bào)告里很快鎖定了三個(gè)耗時(shí)最高的函數(shù)一個(gè)數(shù)據(jù)清洗函數(shù)、一個(gè)正則匹配函數(shù)、一個(gè)JSON序列化函數(shù)。合起來占了總耗時(shí)的76%。這一步的關(guān)鍵是生成可復(fù)現(xiàn)的剖析數(shù)據(jù)。剖析結(jié)果要盡可能穩(wěn)定至少跑兩次如果兩次的結(jié)果差異很大說明程序行為受外部因素網(wǎng)絡(luò)波動(dòng)、磁盤IO競(jìng)爭(zhēng)影響明顯需要選擇數(shù)據(jù)量更可控的測(cè)試數(shù)據(jù)集。我見過不少新手在剖析時(shí)忽略了這一點(diǎn)結(jié)果被一次偶然的GC停頓帶偏了方向。3.3 第三步從耗時(shí)分布推斷根因并修復(fù)有了熱點(diǎn)函數(shù)清單接下來的分析才是真正考驗(yàn)經(jīng)驗(yàn)的部分。同樣是高耗時(shí)成因可能完全不同。以那個(gè)正則匹配函數(shù)為例我發(fā)現(xiàn)它消耗了40%的CPU時(shí)間。仔細(xì)檢查代碼后發(fā)現(xiàn)它用一個(gè)復(fù)合正則表達(dá)式去匹配一行很長(zhǎng)的日志文本而這個(gè)正則里包含多個(gè)交替分支pattern r(?:http://\S|\bERROR\b|status\d|timeout)問題在于當(dāng)文本不匹配時(shí)正則引擎需要嘗試所有分支組合發(fā)生復(fù)雜的回溯。修復(fù)方案是用前綴匹配分離這個(gè)復(fù)合正則比如先做if http:// in line的字符串預(yù)判斷再跑正則。這樣就能讓絕大多數(shù)無關(guān)行在第一步就被過濾掉。修改后這個(gè)函數(shù)的耗時(shí)從40%降到了3%。類似的正則性能問題我處理過不下十次字符串預(yù)篩選永遠(yuǎn)是最簡(jiǎn)單又最有效的手段。再看那個(gè)JSON序列化函數(shù)高耗時(shí)背后是死循環(huán)式的大量嵌套遍歷。原代碼在處理嵌套數(shù)據(jù)時(shí)反復(fù)序列化同一個(gè)子結(jié)構(gòu)——同一個(gè)子結(jié)構(gòu)被序列化了幾百次。修復(fù)方案是加一層緩存或者把結(jié)果存儲(chǔ)到臨時(shí)字段中避免重復(fù)計(jì)算。這個(gè)改動(dòng)看似不起眼但對(duì)海量數(shù)據(jù)來說減少的重復(fù)操作量是驚人的。數(shù)據(jù)清洗函數(shù)的耗時(shí)高則另有原因。它里面有一個(gè)排序操作用的Python自帶的列表sort()本以為沒有問題——但后來剖析數(shù)據(jù)顯示這個(gè)排序占用的比例遠(yuǎn)高于同規(guī)模數(shù)據(jù)排查后發(fā)現(xiàn)列表里存儲(chǔ)的是字典而排序時(shí)要反復(fù)調(diào)用key函數(shù)去抽取排序字段。優(yōu)化的方式很簡(jiǎn)單用operator.itemgetter替代lambda表達(dá)式作為key排序速度提升了接近一倍。3.4 第四步優(yōu)化后的驗(yàn)證與回歸我做完三處優(yōu)化后在相同數(shù)據(jù)量下重新運(yùn)行了一次剖析。優(yōu)化后的報(bào)告顯示原來三個(gè)熱點(diǎn)函數(shù)的CPU占用率大幅下降總耗時(shí)的前幾名已經(jīng)變成了文件讀取和數(shù)據(jù)庫寫入這兩個(gè)真正的IO密集型操作。此時(shí)程序的總執(zhí)行時(shí)間從3小時(shí)降回到35分鐘基本恢復(fù)到了正常水平。這里要特別強(qiáng)調(diào)一次“回歸剖析”的重要性。性能優(yōu)化最怕的是按下葫蘆浮起瓢——你覺得某個(gè)熱點(diǎn)解決了但代碼改動(dòng)引入了新的問題。所以每次優(yōu)化后都必須重新跑一遍剖析工具確認(rèn)熱點(diǎn)確實(shí)消失、沒有新的熱點(diǎn)冒出來。我自己的習(xí)慣是在數(shù)據(jù)量不變的前提下把優(yōu)化前后的火焰圖放在一起對(duì)比直觀看到熱點(diǎn)的轉(zhuǎn)移過程。這個(gè)步驟看似簡(jiǎn)單卻是保證優(yōu)化有效性的最后一道防線。4. 實(shí)戰(zhàn)中的常見誤區(qū)與排查心得工具會(huì)用了、流程也走通了但真正的差距往往體現(xiàn)在細(xì)節(jié)處理上。這一節(jié)我把這幾年在項(xiàng)目里踩過的坑、總結(jié)出的經(jīng)驗(yàn)挑幾個(gè)最有代表性的分享一下。4.1 誤區(qū)一只看總耗時(shí)忽略調(diào)用次數(shù)很多人拿到剖析報(bào)告第一反應(yīng)就是找總耗時(shí)最長(zhǎng)的函數(shù)這是不全面的??偤臅r(shí)長(zhǎng)的函數(shù)確實(shí)值得關(guān)注但有些函數(shù)單次耗時(shí)不長(zhǎng)、調(diào)用次數(shù)卻極其驚人累計(jì)起來也是性能殺手。比如一個(gè)工具函數(shù)單次執(zhí)行只要0.1毫秒但是在一個(gè)循環(huán)里被調(diào)用了千萬次累計(jì)耗時(shí)高達(dá)100秒。排查這類問題要特別注意剖析報(bào)告里的tottime函數(shù)自身耗時(shí)和cumtime累計(jì)耗時(shí)之外的第三個(gè)維度調(diào)用次數(shù)ncalls。我建議養(yǎng)成一個(gè)習(xí)慣每次拿到剖析報(bào)告除了看耗時(shí)排序還專門看一遍調(diào)用次數(shù)排序。如果一個(gè)函數(shù)的調(diào)用次數(shù)比同模塊其他函數(shù)高出幾個(gè)數(shù)量級(jí)非常值得警惕看是不是循環(huán)里被無意中放進(jìn)了重復(fù)的計(jì)算。4.2 誤區(qū)二在錯(cuò)誤的環(huán)境里做剖析剖析結(jié)果的可靠性嚴(yán)重依賴運(yùn)行環(huán)境。在本地開發(fā)機(jī)高配、空閑CPU上剖析出來的熱點(diǎn)和生產(chǎn)環(huán)境多租戶、CPU爭(zhēng)搶、IO競(jìng)爭(zhēng)的實(shí)際情況可能有很大的差異。所以剖析環(huán)境最好盡量貼近真實(shí)運(yùn)行環(huán)境數(shù)據(jù)量要有代表性不能太少否則熱點(diǎn)不明顯負(fù)載要是常態(tài)負(fù)載不能摻雜大量并發(fā)用戶否則所有時(shí)間都耗在線程調(diào)度上機(jī)器配置和部署方式要和生產(chǎn)一致。舉個(gè)例子一個(gè)磁盤密集型應(yīng)用在本地SSD上剖析耗時(shí)占比最高的可能是一個(gè)計(jì)算函數(shù)但部署到生產(chǎn)環(huán)境的機(jī)械硬盤上后耗時(shí)占比最高的變成了磁盤IO等待。如果一開始就在錯(cuò)誤的環(huán)境里優(yōu)化等于對(duì)著錯(cuò)誤的靶子打了半天。所以我的習(xí)慣是線上問題優(yōu)先線上剖析用采樣工具比如py-spy、async-profiler、pprof線下復(fù)現(xiàn)只是補(bǔ)充。4.3 誤區(qū)三剖析工具本身的干擾被忽視插樁模式的剖析工具會(huì)給程序帶來額外開銷有時(shí)候這個(gè)開銷還不是平均分配的。比如cProfile在每個(gè)函數(shù)調(diào)用時(shí)都要記錄時(shí)間戳如果程序里有大量短小函數(shù)生成的剖析數(shù)據(jù)就會(huì)非常大而且程序自身的性能會(huì)被明顯拖慢。這類額外開銷會(huì)導(dǎo)致剖析結(jié)果出現(xiàn)“假熱點(diǎn)”——工具自身的邏輯消耗掉了大量CPU。為了避免這種情況我有幾個(gè)經(jīng)驗(yàn)。一是如果程序有明顯的短小函數(shù)簇優(yōu)先選擇采樣模式而不是插樁模式二是插樁剖析的時(shí)長(zhǎng)控制在合理范圍內(nèi)通常不超過幾分鐘避免數(shù)據(jù)量膨脹到無法分析三是在做剖析時(shí)關(guān)閉不必要的日志輸出避免日志IO干擾真實(shí)的熱點(diǎn)分布。4.4 內(nèi)存剖析和CPU剖析的思路完全不同不少新手以為內(nèi)存剖析和CPU剖析是同一套流程其實(shí)差異很大。CPU剖析關(guān)心的是“時(shí)間花在哪”內(nèi)存剖析關(guān)心的是“空間給了誰”。內(nèi)存問題通常分兩類泄漏和抖動(dòng)分析路徑截然不同。內(nèi)存泄漏的排查需要觀察不同時(shí)間點(diǎn)的堆快照對(duì)比哪些對(duì)象的存活數(shù)量在持續(xù)增長(zhǎng)。以Go語言為例我會(huì)分別取相隔5分鐘的兩次heap剖析數(shù)據(jù)go tool pprof http://localhost:6060/debug/pprof/heap # 輸入 top記住占用最大的類型 # 5分鐘后再取一次對(duì)比增長(zhǎng)增長(zhǎng)最快的對(duì)象類型往往就是泄漏源。接著用list命令下鉆到具體代碼行就能看到對(duì)象是在哪里被分配的。在Java里道理相同但工具有所不同。我一般會(huì)用async-profiler的alloc事件采集內(nèi)存分配熱點(diǎn)配合JFR的jdk.ObjectAllocationSample事件分析哪些代碼路徑觸發(fā)了大量對(duì)象分配。內(nèi)存抖動(dòng)則是另一番景象。這類問題在剖析報(bào)告里表現(xiàn)為GC時(shí)間占比很高比如Go的STW或Java的Young GC特別頻繁但堆快照里的存活對(duì)象并不多。遇到這種情況重點(diǎn)要關(guān)注對(duì)象分配速率找“每秒分配了大量對(duì)象”的代碼路徑而不是找“哪些對(duì)象一直活著”。這兩個(gè)方向經(jīng)常被混淆導(dǎo)致一大批人拿著內(nèi)存泄漏的思路查抖動(dòng)問題方向反了自然查不出結(jié)果。4.5 定位鎖競(jìng)爭(zhēng)需要結(jié)合線程狀態(tài)分析鎖競(jìng)爭(zhēng)問題在CPU剖析數(shù)據(jù)里常常不顯眼因?yàn)榫€程都在阻塞CPU占用率不高但響應(yīng)時(shí)間卻飆升。這時(shí)候分析線程狀態(tài)比分析CPU熱點(diǎn)更有效。在Go語言中可以直接用pprof分析goroutine阻塞情況go tool pprof http://localhost:6060/debug/pprof/block這個(gè)數(shù)據(jù)會(huì)明確顯示每個(gè)goroutine阻塞在哪里、阻塞了多長(zhǎng)時(shí)間一眼就能看出哪把鎖是最大的爭(zhēng)搶點(diǎn)。在Java中async-profiler的lock事件同樣能實(shí)現(xiàn)類似目的./profiler.sh -d 30 -e lock -o flamegraph PID生成火焰圖后鎖競(jìng)爭(zhēng)的火焰圖形態(tài)與CPU熱點(diǎn)完全不同。鎖競(jìng)爭(zhēng)火焰圖中占用大量面積的函數(shù)名稱通常是Lock::lock或Monitor::enter這類同步原語而不是業(yè)務(wù)代碼。看到這種形態(tài)就要從鎖的粒度、持鎖時(shí)間、鎖內(nèi)嵌套調(diào)用入手去優(yōu)化了。鎖競(jìng)爭(zhēng)優(yōu)化中常見的手段是減小鎖粒度、用讀寫鎖替代互斥鎖、用無鎖數(shù)據(jù)結(jié)構(gòu)替換加鎖操作但每次改動(dòng)后都一定要重新剖析火焰圖確認(rèn)競(jìng)爭(zhēng)點(diǎn)確實(shí)下降——我見過改完鎖反而引入死鎖的案例所以在鎖優(yōu)化上回歸驗(yàn)證永遠(yuǎn)不能省。4.6 從剖析到優(yōu)化的閉環(huán)思考最后想聊聊剖析和優(yōu)化之間的鏈路。剖析工具的價(jià)值不只是幫你找到問題更重要的是幫你建立“數(shù)據(jù)驅(qū)動(dòng)優(yōu)化”的思維模式。我用剖析工具這么多年最深刻的體會(huì)就是性能問題很少是“一個(gè)點(diǎn)”的問題而往往是多個(gè)因素疊加的結(jié)果。一次完整剖析之后會(huì)冒出一堆可以優(yōu)化的點(diǎn)此時(shí)必須抵抗住“看到什么就改什么”的沖動(dòng)而是把問題按影響程度排序然后定量分析每一個(gè)改動(dòng)的收益。我甚至給自己定了個(gè)規(guī)矩每做一次優(yōu)化改動(dòng)都必須回答三個(gè)問題——這個(gè)熱點(diǎn)的絕對(duì)耗時(shí)占比是多少優(yōu)化后的預(yù)期收益是多少優(yōu)化會(huì)不會(huì)引入新風(fēng)險(xiǎn)三個(gè)問題都能回答才動(dòng)手改代碼。還有一點(diǎn)剖析不是一錘子買賣。代碼是持續(xù)迭代的每次發(fā)版后性能都可能發(fā)生變化。我現(xiàn)在負(fù)責(zé)的項(xiàng)目組里已經(jīng)養(yǎng)成了每個(gè)版本發(fā)布前跑一次剖析的習(xí)慣不求每次都深入優(yōu)化但至少要確保沒有新的性能退化。這樣做了半年以后線上性能事故的發(fā)生頻率明顯下降了。我建議有條件的朋友可以把剖析納入持續(xù)集成的流程里雖然初期會(huì)花一點(diǎn)時(shí)間但長(zhǎng)期來看這筆投入的回報(bào)率非常高。真正優(yōu)秀的性能優(yōu)化不是靠靈光一現(xiàn)而是靠一套可重復(fù)、可驗(yàn)證的方法論。剖析工具就是這套方法論的核心引擎。平時(shí)多花點(diǎn)時(shí)間把工具吃透、把流程理順等線上真正出問題的時(shí)候你就能比別人快一步、穩(wěn)一步。這也是我寫這篇長(zhǎng)文的初衷——把這些經(jīng)驗(yàn)傳給更多人讓大家在性能調(diào)優(yōu)的路上少踩一些我當(dāng)年踩過的坑。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
国产熟女| 国产精品老师| 色欧洲97| oumeisetupian| 久久亚洲AV无码专区国产精品| 2019亚洲男人天堂| 午夜欧美神马久久久久| 狠狠综合网| 人人看黄色视频| 啊灬啊灬啊灬啊灬高潮奶出了免费视| 狠狠中文字幕| 97人人射| 国产精品无套内谢| 91影库| 999久久芭蕾| 欧美熟爽综合| 日韩精彩免费| 日韩素人无码一区二区三区三州| 凹凸视频在线观看伊人| 麻豆天美传媒毛片| 久区视频| 老鸭窝日丰县女人| 亚州乱码中文字幕综合久久久| 果冻国产精品麻豆成人av| 久久中文字幕不卡人妻| 欧美天天弄| 熟妇无码视频三区| 欧美少妇高潮久久91| 色综合一区二区三巨| 俺去俺来也在线www| 99e久久国产精品| 97超碰巨乳| 狠狠操狠狠爱| 精品久久99| www.婷婷六月天| 成人5码视频| 蜜臀视频网站| 亚洲超碰97| 人伦四五区| 国产久久男人天堂| 国产自啪精品视频网站黑丝| 中文字幕欧美日本乱码一线二线| 亚洲欧美日韩电影网站一区| 天天操人人操骚逼网站| 青草影院内射高潮| 试看60秒| 青青操在线视频| 丝袜美腿丝袜| 日本影视久久免费| 亚洲阿v天堂在线| 91精品久久久久| 中文有码9| 麻豆天天躁天天揉揉AV| 精品视频久久区| 国产人人干| 久久视频少妇美女| 久久成人东京热人妻| 日韩人妻丝袜美腿中文| 精品丰满熟妇人妻一区| 性欧美第一页| 老熟女91视频| 欧美欧美啪啪视频| 黄aaaaaaaaaaaaaaaaaa色网站| 欧美顶级黄色大片免费| www久久99| 超碰人人干| 国产成人无码网站在线视频| 婷婷伊人綜合中文字幕| 亚洲中文制服诱惑| 人人澡综合涩| 亚洲图片视频小说| 日韩三级在线观看网站| 人人操人人狠狠操| 婷婷香蕉欧美在线一区二区三区| 蜜桃精品一区二区三区久在线| 亚洲欧洲色情高清| 久久粉色| 极品销魂美女一区二区| 香蕉婷婷| 国产精品久久久视频| 日本天堂网| 97se综合网| 久久久久久久久久久久欧美日| 五月婷婷青青草娱乐伊人| 日韩在线观看AV| 色香综合| 在线看片国产精品每日更新| 狠狠操综合| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 国产传媒日韩| 黄色av一区二区在线| 欧美精品另类人妖xxxx| 97超碰人操| 97久久国产| 国产无码高清操逼视频| 丁香五月性| 亚洲男人的天堂V| 国产视频小说| 色视频蜜乳| 国内自拍 日韩激情 99| 97色诱| 久久鲁夜| 外国91| 欧美亚洲日本激情在线| sss视频华人在线| 老鸭窝成人| 激情熟女12P| 九九99精品视频在线观看| 欧美狠狠操| 亚洲天堂资源在线| 国产AV激情无码久久无码| 五月天婷婷成人网| 无码粉嫩白虎一线天b区| 亚洲欧美在线观看无码| 久久天天摸| 少好三P| 无套内射人妻在线播放| 大稥蕉免费视频这里只有精品| 欧美大干日韩| 国产精品呦一区二区三区| 日本有码影片下载| 欧美一区二区福利在线| 精彩国产视频播放1区2区| 亚洲深夜福利| 韩国一级做A片免费的| 欧美白嫩女HD| 亚洲欧美天堂| 床上啊啊啊一区二区三区| 九九九草| 蜜桃av综合网发布| 欧美色九九| 性爱乱伦网址| 国产精品3| 五十路六十路素人熟女| 动漫区日韩区欧美区| 首页亚洲国产高跟丝袜诱惑视频| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 五月婷婷久久综合| 91亚洲图片| 免费a在线播放v| 国产超碰欧美| 另类小说五月天| 欧美色乱| 日han少妇无码| 国产高清自拍视频| 九九九久千久久激情蜜桃在线看 | 久久精品国产精品| 欧美视频一区二区在线| 日日日色色色色色| 婷婷五月天影院| 女人香蕉久久毛毛片精品| 爱媛媛久久国产福利| 大香蕉在线SuP| 国产欧美日韩精品中文| 免费亚洲国产精品久久一区| 把腿张开老子CAO烂你| 伊人在线大香蕉视频久久| 亚洲日韩美国人妻| 欧美自拍网| 天美国产三级传媒| 人人 操人人 操人人| 综合久久99亚洲人妻中文在线| 91成人在线免费视频| 国产精品一区二区麻豆| 久久久久久久久久久人妻| 亚洲āv网址在线观看| 欧美在线视频播放| 色999亚洲人成色| 麻豆黄站| 欧美日日夜夜| 久久性爱免费送| 久一区久久蜜桃| 亚洲男人的天堂亚洲| 熟妇人妻精品一区二区| 久久內射| 亚洲综合春色| 黄色视频60分钟| 神马久久免费电影观看| 冬京热男人的天堂| 操逼网免费无码视频| 国产一二三在线视频五十路| 国产亚洲精品美女| 激激五月| 日韩资源网| 激情五月天社区| 亚洲熟女人妻中文字幕一区二区| 久久一二三四五六七八九区区| 久久亚洲精品成人av| 婷婷五月天激情四射| 男插女青青影院| 五月天婷婷欧美三区| 亚洲色图欧美色图日韩色图| 蜜臀久久99精品久久久久久| 欧美综色欧| 熟女突然公开看18禁影片| 日韩精品人妻| 国产亚州日韩欧美看片| 狠狠久久手机视频精品| 婷婷人妻激情| 4虎在线视频| 国产精品情侣啪啪| 婷婷综合激情| 色五月综合| 尤物国产一区在线观看| 久久青青草原免费视频| 超碰在线一区二区三区| 人伦四五区| 91 亚洲情侣偷拍 久久| 夜夜高潮夜夜爽| 九月丁香婷婷色| 麻豆国产第一| 日韩av情韩国爱禁区av一区二区| 久久只有精品一区二区三区| 啊嗯好大视频在线观看| 1区2区3区在线视频| 超碰成人国产| 91一起操| 殴美性色a级欧美| 五月婷婷激情综合| 亚洲人妻一区二区三区| 欧美日韩丝袜| 欧美专区在线| 人人爱夜夜爱| 欧美熟妇乱码在线一区| 综合 青草 伊久久 影院 综合| 一区二区三区在线日韩影院观看| 狠狠躁日日躁夜夜躁A| 久久国色天香香蕉| 一本一道波多野毛片中文在线| 亚洲欧洲激情卡通另类文学四射小说网站| 精品97久久| 国产成人五月天丁香花| 婷婷色色五月天福利| 亚洲激情综合另类| 酒色综合网| 天天日熟妇| 国产精品不卡一区二区三区| 97爱b| 亚洲精品国产av天美传媒| 国产精品久久久久久久久久久久久久| 亚春色色| 啊啊啊免费| 色臀AV| 黄页av| 在线免费观看高清无码视频| 第四色奇米影视777| 88xx成人精品视频| 国产精品黄色三级av| 91成人久久| 亚洲男人bt天堂| 麻豆黄色五月天| 91视频观看网站| 欧美青青视频| 亚洲资源吧| 精品九九九九九九| 大香蕉黄色一级片免费看| 日本成人A片免费看| 手机看片1025| 欧美熟妇视频| 色www精品视频在线观看| 囯产乱伦一区二区三女 | 91高潮| 黄色大片视频在线免费看| 久久天天艹| 免费在线观看国内色片网站网址| 色色色综合网| 丰满精品人妻少妇久久字幕| 天天日天天看| 最新亚洲黄色免费电影| 亚欧美色图| 久久草视频污视频| 精品国产无码中文| 日本精品一区三区| 丁香五月激情五月| 黄呦呦在线| 色婷婷A V一二三四区麻豆综合| 大香久久| 丝袜大香蕉| 香蕉久久精品| 啊啊啊爽爽| 色噜噜精品一区二区三| 青青草视频在线观看一区二区| 加勒比av网| 亚洲麻豆av一区二区| 欧美日韩国产高清在线一二三区 | 淫荡网址| 日韩乱插| 中文字幕亚洲欧美在线不卡| 骚日日av| 亚洲精品美女久久久久久久久| 人妻精品综合中文字幕在线 | 欧美性xxxxx狂欢| 性爱1区| 欧美 牲| 看日韩黄片| 丁香五月av| 亚洲干B| 综合自拍| 久热99999| 国产成人一级av88| 久久精品视频一区三区小泽玛利亚| 五月丁香激情四射| 色欧美天天| 婷婷10月天青娱乐| 亚洲中文字幕av| 九热超碰| AV九九| 亚洲女人91| 久久精品夜色国产亚洲AV| 一区麻豆 高清中文字幕| 欧美精品 - 91爱爱| 亚洲色天| oumeizonghese,www| 五月情色天| 操操逼操操逼操操逼逼| 97操综合| 天天日B夜夜干B时时操B| 蜜桃久久久久久久久久久久| 少妇人妻好深太紧了vr91| av在线人气| 午夜福利国产欧美日韩夜夜| av在线人气| 日产操逼| 欧美情色贴图| 乱老女人一区二区视频| 欧美性性性| 东北女人av| 天堂v无码免费视频| 亚洲中文字幕乱码无码一区二区 | 91无码中出人妻视频| 91熟女在线| 337p大胆噜噜噜噜噜91Av| 97视频在线视频| 香蕉人人操tv| 91综合色噜噜| 亚洲区限制级| 亚洲日本韩国在线| 久久人妻一区二区三区高清| 大香蕉丝袜一级片| 天天日天天干天天操| 欧美日韩精品国产91| 超碰成人公开| 久久久久97| 粉嫩AV输入| 无码国产精品午夜不卡(| 天天舔日美女视频| 亚洲第一页第二页激情| 69久久久久久久久久久久久| 97色婷婷| 乳欲人妻办公室奶水| 拍拍拍拍大尺度黄色三级片拍拍拍拍拍照| 青娱乐av在线| 亚洲中文字幕网| 极品欧美一区二区三区| 精品女同一区| 98精品国产乱码久久久久久| 夜夜操狠狠操| 手机在线视频国内精品| 欧美中文字幕精品人妻| 国产2.3.4区| 亚洲男人的天堂AV| 久久97| 十八禁av无码免费网站APP| 欧洲一区二区| 人妻丝袜肏逼| 亚洲影院小综合| 激情九月婷婷| 国产农村一一级特黄毛片| 凹凸视频在线一区二区| 大香蕉草草| 亚av顶级裸体一区二区三区四区五区| 欧州色图区| 国产精品免费美女视频| 久久黄色视频一区二区三区| 一区二区三区美女超清| 在线不欧美| 91熟女视频网| 91女优在线观看 | 欧美一二在线| 台湾佬激情综合| 黄色欧美性爱视频| 成人a大片在线观看| 国产精品com| 超碰色老头| 美女十八禁| 亚洲日本天堂| 亚洲的天堂网| 一区二区不卡| 成人天天爽| 天天插夜夜爽| 久久久久9999妇女| 午夜性| 九久久九精品视频| 中出91| 天美AV片| 青青青国产| 大香蕉97久久| 无码伊人久久大杳蕉中文无码| 亚洲人成网站7777| 强被迫伦姧在线观看无码网站| 久久春色| 日韩成人高清一区二区| 久久伊人最新网址视频| 欧美v亚洲v综合v国产v妖精| 人人么人人操| 另类TS人妖一区二区三区| 一起草三级AV电影在线观看 | 日本91白丝| 精品无人区麻豆乱码1区2区图片| 啊啊啊久久久视频| 天天干夜夜操一区二区| 99www.bibizy香蕉资源国产一区二区三区高清 | 无码抄逼网| 亚洲少妇中文字幕网址| 97人人干| 色婷婷丁香五月天| 丰满人妻一区二区三区大胸懂色| 国产偷拍自拍在线视频| 国产精品久久久久久照片| 亚洲无线码欧洲精品区别| 人人爱人人乐人人操| 2018天天日天天日| 五月亭亭六月丁香| av天堂精品久久| 成人免费在线网站| 日本91白丝| 蜜臀久久在线视频| #NAME?| 曰韩人妻中文字幕在线| 国产无马视频| 久久久久久性爱片| 欧美视频激情久久久久久| 欧美在线色| 天堂性色| 国产美女自拍AV| 欧亚性爱视频免费看| 天天操天天干一区二区| 精品少妇一区二区三区在线视频| 亚洲日产专区| 熟女熟妇一区二区三区视频| 国产精品香蕉| 99久久精品无码一区二区| 九九色综合| 成人网欧美风情| 欧美第五页| 日韩无码一级黄色av片| 丰满的三级少妇欧美久久久| 男人下部插入女人下部| 密臀AV在线| 美女诱惑久久| 亚洲国产麻豆一区二区三区| 好湿好紧好爽 视频| 999熟女精品| 久久久久九九九| 亚洲二区精品在线观看| 厕所偷拍在线| 网友自拍第1页 | 国产美女激情| 97干在线| 欧美成人都市人妻| 色噜噜人妻av中文字幕| 新婚人妻扶着粗大强行坐下| 久久精品72| 肉丝无码中文高清| 天天色黄色影院天天操| 日本二三四区| 乱伦系列一区二区| 麻豆国产成人精品| 强奸国产精品视频| 国产又大又粗又长视频在线| 中文久久久| 丁香五月影院| 无码男人天堂| 久久性爱精品一区| 欧美午夜色妇色鬼| 日本人妻中文字幕 | 大色网久久| 日韩色欲久久一二三四区| 国产午夜福利视频在线| 中出欧美| 啊啊啊好湿国产一二| 97在线免费看视频| 一区二区激情国产熟女| 成人性交免费视屏| 乱精品一区字幕二区| 亚洲少妇自拍中文字幕懂色| 国产av美女被艹的乱叫| 亚洲涩图欧美| 一区在线观看中文字幕| 欧美综合自拍亚洲综合图| 99性爱在线观看| 精彩久久中文| 久久曰曰| 91亚洲狠狠色| 天天影视综合网欧美精品| 91人人操| 日本天堂网| 91丨九色丨国产丨人妻在线 | 99在线精品观看视频中文| 久草福利在线资源站| 2025亚洲男人天堂| 熟妇的味道HD中文字幕| 亚洲欧美天| 99操99| 色悠久| 亚洲 欧美 小说| 欧美亚洲一级在线观看| 黑丝91视频| 久久久久久久久久久免费精品| 亚洲色图欧美另类在线| 一,爱啪啪,在线免费视频| 91视频女生| 香蕉人人操tv| 97超碰色| 人妻免费观看| 五月婷视频| 日韩字幕一区| 欧美丰满少妇交换91欧美精品| 亚洲成av人片色午夜乱码| 欧美大的香蕉有线电视视频| 美腿色图| 亚洲国产欧美中文永久| 2020中文字幕在线| 欧美黄色图片| 五月天婷精品激情| 亚洲影院成人| 国产suv精品一区| 久操99| 顶级丝袜熟女一区二区三区 | 九九久久一区二区伦理| 午夜寂寞欧美| 亚洲自拍偷拍视频在线| 加勒比综合a∨| 欧美亚洲激情小说| 玖玖爱免费观看视频| 91美女网站| 精品欧美日韩在线观看| xxx亚洲午夜天堂| 激情专区综合| 亚洲日韩美国人妻| 欧美色网| 青草一区二区| 91老熟女91老女人| 天天天天天超碰| 九九色影院| 人人潮人人摸| 女性喷水高潮在线观看| 亚洲一区二区中文字幕| 亚洲棕合电彰| 精品夜夜澡人妻无码| 欧美精品久久久久久久久88| 影视综合无码少妇| A级片日韩欧美国产欧美视频精选观看| 综合97久久| 用力操死我| 黑丝内射一区二区三区| 国产成人无码网站在线视频| 国产AV激情无码久久无码 | 久热99999| 影音综合网| 天综合网| 无码色| 精品人妻伦一二三区久久| 91福利网在线观看| 男女啪啪网站免费视频| 色悠久| 四方色播| 久久久久白虎| 久久9精品| 九七超碰人人乐| 加勒比日本在线| 欧美激情片一区二区| 青青青操| 亚洲综合在线高清| 农村妇女一级二级三级视频| 亚洲AV免费在线| 婷婷五月天成人网| 久久综合99| 色色丁香| 懂色综合久久久| 亚洲男人的天堂一区二区| 中文字幕艹艹| 涩涩五月天| 九九综合| 五月婷婷hd| 熟妇人妻精品一区二区视频色欲| 91麻豆天美国产欧美日| 97玖玖人妻| 日本啊啊啊啊啊视频| 四虎884a| 青青草自拍视频在线播放| 日欧美色| 中国黄色特级精品一区二区三区片| 歐美性天天| 日日干夜夜骑| 欧美亚州综合网图片| 91网站18禁| 99久久久无码国产精品性啊聊| 精品99999| 无码操逼视频一下| 国产福利影视| 操逼不卡中文字幕| 九九碰九九爱97超碰| 精品.99999| 成人AV素股で擦久久| 校园春色中文字幕AV| 极品出轨视频网站| 欧美淫乱视频| 亚洲AV成人精品网站在AV| 免费观看国产小粉嫩喷水精品午| 久热九九| 久久人妻少妇| 豆花视频操逼网址| 男人的天堂不卡一区二区| 久久久久密臀视频| 国产精品99999| 亚洲一区二区三区AV无码| 97WW精品| 色色97爱| 久久亚洲精品成人av| 99自拍视频| 亚洲伊人久久综合97| 强奸乱伦AV网站| 少妇被玩视频二三区| 影音先锋每日最新资源在线观看| 精品无码久久久久久国产浪潮| 欧美亚洲综合色| 抽插无码高清一区| 超碰在线日韩一区| 日韩不卡a级视频专区| 偷拍在线观看视频| 欧美亚洲中文字幕| 青草伊人网| 东北女人操比视频| 亚洲av无码成人精品国产| 啪啪视频mP4| 超碰人人超在线观看| 韩国三级一线观看久| 清纯唯美亚洲另类| 18禁看网站一区| 久久曰曰| 国产免费久久精品99re韩国| 香蕉久久精品| 98福利在线视频| 在线欧美69V免费观看视频| 九t超碰| 中文字幕乱偷人妻久久艾草网| 蜜臀亚洲中文| 高树玛利亚无码流出| 碰碰在线视频| 黄色乱论网站| 亚洲欧美国产中文字幕| 国产高清不卡视频| 91欧美另类| 欧美少妇色综合| 欧美韩国你懂得在线 | 亚洲国产成人7777| 一区二区免费电影久久| 国产黄色影片在线观看| 国产精品免费日韩| 国产亚洲禁久一区二区| 精品久久久久久中文| 美國A片| 熟女性视频| 99激情视频| av凤凰久久久| 日韩不卡在线一区二区| 婷婷久热| 欧色综合| 国色综合天| 国产欧美日韩女同性恋ww喷水精品| 黄色性爱网网| 美女被艹尤物视频| 亚洲男人天堂Av| 日韩美一区| 欧亚久久偷拍视频| 久久偷偷色综合蜜桃| 亚洲自拍青操视频| 人人妻人人澡人人爽人人精品浪潮 | 99在线精品观看99| 久久久久无码| 久久是精品| 91熟女丨91老女人| 欧美亚洲素人制服精品| 欧美极度丰满熟妇hd| 亚洲天堂另类美腿| 国产精品久久久午夜夜伦鲁鲁| 一区二区三区看视频| 操逼无码操逼| 五月丁香影院| 激情啪啪视频| 97精品| 操婷婷逼| 人妻素股| 91人妻人人澡人人爽人人精品| 午夜影美女日鸡鸡天天视频国产| 日本久操视频| 国产精品69久久久久久久 | 欧美后进式| 东京热,男人的天堂| 精品亚洲国产成人精品| 黄色二级片网站| 欧美激情在线观看视频| 最新国产精品久久精品| 精品二区三四区五电影| 在线观看岛国有码| 一二区在线观看视频| 亚洲精品一卡二卡三卡福利视频网站| 高颜值美女口爆高潮浪叫| 日韩内| 日人妻视频91| 色眯眯av| 国产三级电影免费观看| 91网站在线播放| 乱伦3P视频| 亚洲综合性网址| 天天操天天插| 免费国产| 丁香五月激情网| 91欧美综合| 九九九九久久久| 国内毛片欧美香蕉精品| 美美91成人国产精品欧美精品久久久久久久| 麻豆久久精品亚洲精品88| 这里是精品| 免费1级a做爰片观看| 东北女人| 亚洲激情综合| 精品无码久久久久久久久果冻糖心| 亚洲色堂免费视频| 色就色综合| 97神马久久| 天天干天天日天天射黄色大片| 精品久久久久久AV无码| 夜夜爽夜夜摸夜夜操免费视频| 久热婷婷| 91综合站| 哈哈操 大香蕉| 玖玖爱一区在线| 欧美在线播放aaaa| 国产家庭乱伦表演| 中文字幕黄色一起草| 日欧美色| 五月天丁香| 欧美亚洲另类在线蜜桃| 9久在线视频只有精品| 国产热av| 东京热熟女亚洲视频网站| 色色99| 欧美性爱精品一区二区| 特级丰满少妇一级AAAA爱毛片| 久久久精品网站| 日韩内| 日本道人妻久久久在线不卡色视频| 青娱乐蜜桃臀AV色婷| 亚洲色图久久精品蜜| 国产精品一区二区黄片| 国产毛片片精品天天看视频| 一摸二插三插| 超碰综合97在线| 中国黄色特级精品一区二区三区片| 国产精品情侣啪啪| 成人午夜视频免费播放| 婷婷色色五月| 992这里有精品| 天天肏美女| 91观看 国产白丝| 97色婷婷| 曰韩中文人妻视频| h无码动漫在线观看| 精品人妻一二三四区视频| 丰满人妻区一区二区三| 久久神马影院| 麻豆91熟妇人妻中文字幕茄子 | 100啪啪视频大全| 色婷婷丁香| 中文字幕精品专区搜索结果91| 福利视频香蕉免费一区二区在线| 超碰国产在线| 国产久久日韩网站导航| 精品九九国产无码| 97香蕉碰碰人妻国产欧美| 欧美伦乱爱| 国产精品永久免费10000| 97视频网站在线观看| 久久无码精品| 天天爽天天| 日本高清视频在线观看黄已三辽| 性久久| 色香伊人| 日韩丝袜人妻AV| 大香蕉综合在线| AV丝袜少妇| 精品欧美老熟女一二区| 国产精品亚洲一区二区三区四区| 亚洲AV乱码专区国产噜噜亚洲| 丰满人妻一区二区三区大胸懂色 | 懂色av色欲av蜜臀av| 亚洲色图91欧美日韩| 久久综合乱子伦国产免费| 神马久久久久眼| 夜夜操一区二区| 亚洲国产青青| 亚一综合久久久久久久久久| 99re9在线| 国产深夜福利| 999在线电影香蕉| 综合 亚洲 欧美| 嗯嗯啊在线视频| 伊人九九九| 久草免费在线一区二区| 日本操逼视频导航| 亚州综合图片| 色网1| 伦理日韩国产久久| 久久色精品视频在线| 日本岛国黄色网址| 玖玖婷婷五月天| 99久在线精品99re8| 永久免费发布性爱网| 丰满人妻-区二区三区免费看| 国产欧美日本亚洲精品 | 一区二区三区免费视频入口| 1956日韩精品| 在线看的av| 综合网少妇| 精品妇女一区二区三区| 小说区 图片区色 综合区| www.高清无码诱惑一区.com| 国产熟女完整版中字| 97爱啪| 99精品在线观看| 黑人操一区二区| 大逼色网站| 91性生活久久久| 精品伊人久久久大香线蕉小说| 男女啊啊啊| 久久久久亚洲精品| 国产黄色影片在线观看| 五十路三区在线| 91爰爱欧美| 五月丁香成人网| 国产网红精品| 亚洲色婷婷久久91| 国产精品丝袜在线| 91激情国产| 狠狠操一区二区| 女优视频第10页| 亚洲乱码国产乱码精网站| av亚欧| 天天综合中文字幕 91| 欧色综合| 91亚洲欧美色图| 久草视频分类在线| 亚洲高清无码在线桃色| A级毛片在线看免费| 男人的午夜天堂| 97超碰超碰| 国产肏逼网站| 免费精品国偷自产在线在线 | 老子午夜伦不卡影院| 20cm女自慰在线日韩欧美| 日本不卡在线二区三区| 97操B| 亚洲精品99999| 欧美一品道| 大逼色网站| 一本色道久久综合精品婷婷| 东京热AV男人的天堂| 欧美色图人妻| 欧美在线第五页| 国产日本顶级一区二区三区| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 一级啊性爱在线视频| 色婷婷丁香| 黄页大片在线观看| 91草草草| 性猛交| 日韩欧美中文| 一本一道人妻久久一区二区三区| 一本一道人妻久久一区二区三区 | 成人一二三区| 极品综合| 91精品无码人妻系列| www.91色综合| 中文字幕天天操| 色色九区| 久久精品三级影视| 999日韩中文精品观看视频。| 99爱久久视频频| 国产97av| 一本大道不卡一二三区| 天天91~综合入口| 嗯,啊。舔我逼| 国产肏逼网站| 极品白嫩福利在线| 婷婷久久久精品| 男人天堂导航| www.99中文字幕| 鸥美中出| 日韩一级片在线看| 精品人妻一区春色| 五月婷久久| 黄片com.| 116美女午夜| 国产精品丝袜在线| 粉嫩不卡一区二区性爱 | 色噜噜人妻丝袜AV资源| 亚洲动态色图| 丁香五月激情网| 999国产精品999久久久久久| 欧美日韩一区二区三区四区蜜桃| 高树玛利亚无码流出| 久艹日日日| 久久一二区四| 精品国产Av无码久久久亚洲| 毛片视频白嫩| 999精品国产高清一区二区| 美女97超碰| 超碰人人操97碰| 激情文学 亚洲图片| 懂色天天爱天天日天天射天天澡| 大屁股熟女一区二区三区| 伊人久久大香线蕉无码| 欲色啪| 久操操| 91狠狠狠| 爱干爱射网啊啊啊| 国产黄片精品在线| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场 | 久久美国毛片| 99热在线播放| 人妻偷拍一区二区三区| 天美传媒精品久久视频| 乱伦熟女区| 一中国女人毛片水真多| 天天日美女的B| 亚洲av总站| 99久久精品国产高潮| av黄图片在线观看| 免费97视频| 翔田千里无码中出中文字幕| 久久久久久久久久久久欧美日| 老熟女乱伦片| 国产伦精品免编号公布| 又粗又长又爽在线观看| 懂色av中文字幕| 啊啊啊啊二区好大| 久草视频分类在线| 日韩在线欧美精品一区二区| 91亚洲不卡一区| 国产久久久久久久久一区二区 | 亚洲欧美97| 四虎精品一区| 久久久久久久国产| 97超碰69| 丰满少妇一区二区三区四区观看 | 思思性爱| 亚洲春色欧美激情自拍| 变态乱伦伪娘灌肠一区二区| 美国日韩黄片| 欧美综合亚洲| 性欧美| 日韩操逼性鲍| av一区二区三区 中文| 一区二区三区精品黑丝白丝酒店对鸡 | hd成人一区二区在线| 日本色色色| 青青草十区九区爱夜| 亚洲骚逼少妇| 日韩激情啪啪啪| 欧美另类色图片| 亚洲男人天堂视频 | 日本熟妇人妻中出视频| 亚洲AV资源| 亚洲男人天堂网站| 国产精品麻豆视频网站| 人妻在线中出视频| 亚洲丨在线| 日本成人电影资源网| 亚洲成?V人片在线观看福利| 亚洲不卡不卡中文字幕不卡| 台湾佬中文娱乐网久久久久久久久久com | 麻豆AV96熟妇人妻| 女性喷水高潮在线观看| 国产成人久久久精品免费AV| 亚洲熟女乱熟乱熟妇综合网二区| 中文字幕97| 亚洲五月丁香花狠狠干一区二区三区| 97伪v| 国产精品人人爽人人做可爱福利| 亚洲中文字幕噜噜噜久久久| 大香蕉92| 欧美人人AAA| 91成人无码| 中文字幕88av在线| 国产成人五月天丁香花| 黄色网址久久精品欧美喷水| 精品少妇99| 91亚·色| 激情五月天插| 日韩特一级久久| 国产精品99久久久www| 91精品国产91熟女| 日韩人妻一二三区视频| 97丝袜亚洲在线播放| 99青草| 亚州熟妇精品| 天美麻豆一区二区三区| 日韩人妻一二三区视频| 超碰9 7女人| 天天看少妇| 激情五月天插| 91麻豆天美传媒在线| 久久色一区| 亚洲综合精品国产一区| www.99热在线只有精品| 婷婷丁香成人| 思思热免费在线视频| 九99久久| 日韩欧美偷拍美女视频| 精品国产乱码久久久久久影片| 白丝被操91| 九九九久久久W精品| 日本999精品视频| 欧美色偷拍| 婷婷伊人网| 国产一级137片内射麻豆| 九九九九AV| 91n处女在线观看| 老鸭窝黄色视频网站| 青青草在线视频人人想人人上| 人人看黄色视频| 超碰2017| 日韩一级二级三级在线不卡观看完整| 亚洲欧美日韩电影网站一区 | 91狠| 久久精品毛片免费不卡| 99最新日韩偷拍视频| 91狠| 一本一道vs波多野结衣| 亚欧成人一级片在线播放| 人人超碰在线观看黄| 麻豆国产96在线| 亚洲最新Av| 97操综合| 久久久久9999精品九九九| www.色综合| 高潮的A片激情扒开一区| 啊啊啊爽爽| 国产精品制服丝袜中文字幕日韩一区二区三区| 成人精品一区二区91毛片不卡| 国产精品另类一区大香蕉| 久久九七| 欧美精品久久96人妻无码| 五月婷婷啪啪| 国产女人操逼视频| 伊人久久在线视频观看| 另类小说欧美激情校园春色| 亚洲天堂美臀在线| 久久大线蕉一区| 中文字幕丝袜美腿| 国产精品九9| 久久久久久久 九九九九九九九| 精品国产精品一区二区| 一区二区三区免费岛国片| 被窝影院午夜看片无码| 久久永久无码人妻视频| 国产深喉视频一区二区| 国产白丝AV| 国产品精品自在在线午夜免费| 狠狠爱夜夜| 91观看 国产白丝| 狠狠爱综合网| 午夜福利一区二区三区四区五区色婷婷| 亚洲综合校园春色| 中文欧丝袜诱惑| 限制级中的三级片中的黑粗大屌屌日人妻熟女 | 欧美日韩婷婷中文| 性感美女啊啊啊在线| 伊人96在线| 欧美精品三级黄片| 骚女天天综合网| 久久精品国产亚洲AV片多多| 26uuu性| 国产精品成久久久久午夜午夜| 日本一区二区中文字幕久久| 欧美78P| 在线免费观看高清无码视频| 日本人妻中文字幕精品| 99精品久久久久久久婷婷| 91干熟女| 欧美精品双插| 久久久久久久9最新免费视频观看| 青草伊人久久| 国产精品成人蜜臀AV在线| 操屄不卡视频| 性做久久久久久免费观看软件| 神马福利久草| 夜夜爽夜夜高潮夜夜爽| 久久超碰爱| 97鸡把在线视频| 亚洲成?V人片在线观看福利| 蜜臀av中文字幕| 日本123区操B视频| 综合一区二区影视| 在线国产探花| 2020中文字幕在线观看| 亚洲综合色网| 夜草网站| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 欧美日韩国产中文精品字幕自在自线| 美女97超碰| 一本大道不卡一二三区| 亚拍在线| 一区二区日韩欧美久久| 亚洲丝袜诱惑| 99热aaa| 日本国产成人亚洲精品无码| 超碰久超碰久| 久久中日麻豆| 日韩中文字幕视频在线观看| 日本人妻天堂网站在线播放| 性久久| 综合第一页| 中文字幕亚洲欧美在线不卡| 强奸乱伦亚洲第一页| 好涩综合| 十八禁的黄污污免费网站| 欧美亚州综合网图片| 超硑97精品| 色婷婷久久| 日本操逼无码| 校园春色 亚洲| 国产中文福利| 天天躁日日躁XXXXYY| 色噜噜人妻av 中文字幕| 男人的天堂三级| 观看免费区二区三区二| 亚洲一区操| 一本色道熟妇| 国产人妻精品一区二区三区秋霞 | 日本欧美一区二区三区免费| 伊人超碰97| 青青草国产一区二区三区| 天天操狠狠日夜夜干超碰撸com视频在线观看 | 婷婷10月天青娱乐| 久久久久斤小| 亚洲日韩久久精品一区| 男人成人黄色视频在线观看免费下载| 欧美国产日韩清纯唯美| 极品白嫩美女白浆成人福利在线看| 欧美劲爆视频一区二区| 国产女人成人精品视频| 国产精品自在线发布| 韩国一级婬片A片AAAAA| 大香蕉啪啪啪| 免费农村成人少妇人妻Aa一区二区视频 | 久久久久久九九九九九| 91艹|