欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,av无码精品一区二区久久,欧美性爱视频不卡一区三区,欧美乱人伦视频在线观看,国产一级牲交高潮

ARTICLE DETAIL

資訊詳情

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

JDK8 JVM調(diào)優(yōu)與GC實戰(zhàn):回收器選型、參數(shù)模板及OOM排查

JDK8 JVM調(diào)優(yōu)與GC實戰(zhàn):回收器選型、參數(shù)模板及OOM排查 現(xiàn)在團隊里只要有人問“線上接口偶爾卡個幾百毫秒是什么原因”十有八九最后都會落到 JVM 調(diào)優(yōu)和垃圾回收器這個話題上尤其是還在跑 JDK8 的項目。JDK8 是個很特殊的分水嶺它既有成熟的 Parallel Scavenge 和 CMS又帶來了 G1還徹底刪掉了永久代改用元空間。這意味著同樣一段“加大堆內(nèi)存、調(diào)小新生代”的老經(jīng)驗放在 JDK8 上可能反而把系統(tǒng)推向頻繁 Full GC。這篇內(nèi)容我打算按自己的實戰(zhàn)路徑來寫——先把內(nèi)存模型和對象生命周期講透再逐個拆解 JDK8 里能用的垃圾回收器然后給出可以直接抄的參數(shù)模板、工具鏈用法、GC 日志判讀方法最后落到 OOM 的各種現(xiàn)場。適合正在做服務(wù)端開發(fā)、需要處理線上性能問題或者準(zhǔn)備面試想真正搞懂 JVM 工作原理的人。1. 先把 JVM 內(nèi)存模型捋直調(diào)優(yōu)才有坐標(biāo)系我見過太多“調(diào)優(yōu)”是這么做的上來就-Xmx4g然后看 GC 日志里 Full GC 次數(shù)少了就完事。這種做法能碰對是運氣碰不對就是埋雷。真正動手前必須把內(nèi)存模型這張地圖在腦子里畫出來否則你連參數(shù)改的是哪塊區(qū)域都不知道。1.1 運行時數(shù)據(jù)區(qū)到底分幾塊JDK8 改了什么JVM 在運行時會把自己管的內(nèi)存切成幾塊每塊職責(zé)不同回收策略也完全不同。按線程私有和線程共享來分理解起來最快。線程私有的三塊程序計數(shù)器記錄當(dāng)前線程執(zhí)行到哪條字節(jié)碼指令。唯一不會拋 OOM 的區(qū)域占用的內(nèi)存可以忽略不計。虛擬機棧每個方法調(diào)用創(chuàng)建一個棧幀棧幀里放局部變量表、操作數(shù)棧、動態(tài)鏈接、方法出口。平時說的“棧溢出”絕大多數(shù)就是這里由-Xss控制單個線程棧大小。本地方法棧給 native 方法用的HotSpot 里和虛擬機棧合并實現(xiàn)一般不單獨關(guān)心。線程共享的兩塊堆對象實例和數(shù)組的主要存放地也是垃圾回收的主戰(zhàn)場。調(diào)優(yōu) 90% 的參數(shù)都在動這塊。方法區(qū)存放類元信息、常量、靜態(tài)變量、即時編譯后的代碼緩存。JDK7 及以前叫永久代PermGen由 JVM 堆管理JDK8 開始改成元空間Metaspace挪到了本地內(nèi)存由操作系統(tǒng)管。這個改動的影響被嚴(yán)重低估了。以前永久代容易OutOfMemoryError: PermGen space因為類加載多了會把堆里那塊固定區(qū)域撐爆JDK8 換成元空間之后元空間默認(rèn)不設(shè)上限能一直吃到操作系統(tǒng)內(nèi)存耗盡報錯變成OutOfMemoryError: Metaspace而且更容易連帶觸發(fā)機器層面的不穩(wěn)定。所以-XX:MaxMetaspaceSize在 JDK8 里是必須顯式設(shè)置的參數(shù)不能放任不管。除了這幾塊還有兩塊容易被忽略但很要命的區(qū)域直接內(nèi)存Direct Memory通過-XX:MaxDirectMemorySize限制NIO 的DirectByteBuffer就住在這它不受堆大小約束以及JVM 自身的開銷包括 GC 元數(shù)據(jù)、JIT 編譯線程、線程棧總量、代碼緩存等。這兩塊加起來經(jīng)常占到堆內(nèi)存的 30% 以上算容器內(nèi)存配額時漏掉就會被打死。1.2 對象從分配到回收的完整路徑理解對象的一生比背參數(shù)有用得多。新建對象優(yōu)先在Eden 區(qū)分配。如果開啟 TLAB-XX:UseTLAB默認(rèn)開啟線程會先在 Eden 里劃一小塊私有區(qū)域避免多線程分配時爭搶指針。這塊優(yōu)化不顯眼但對高并發(fā)分配的影響很大。Eden 滿了觸發(fā)Minor GC。存活對象被復(fù)制到 Survivor 區(qū)From 到 To 來回復(fù)制對象年齡加 1。年齡達(dá)到閾值后晉升老年代閾值由-XX:MaxTenuringThreshold控制Parallel 和 G1 下默認(rèn)是 15。這里有個很多人不知道的機制動態(tài)年齡判定。不是非得熬到 15 歲才能晉升。如果 Survivor 區(qū)中某一批同齡對象的總大小超過了 Survivor 空間的一半那么年齡大于等于這批對象年齡的所有對象會直接晉升老年代。這就是為什么有時候你把MaxTenuringThreshold調(diào)到 15實際對象三四歲就進(jìn)老年代了——參數(shù)沒生效是動態(tài)判定提前觸發(fā)了。還有兩個特殊通道大對象直接進(jìn)老年代。-XX:PretenureSizeThreshold可以設(shè)置這個閾值但它只對 Serial 和 ParNew 生效Parallel Scavenge 不認(rèn)這個參數(shù)G1 里則用 Humongous Region 處理一個對象超過單個 Region 大小的一半就算大對象。長期存活對象。老年代滿了觸發(fā) Full GC這個代價通常比 Minor GC 高一到兩個數(shù)量級。反向看回收一個對象要經(jīng)過兩次標(biāo)記第一次可達(dá)性分析從 GC Roots 出發(fā)掃描引用鏈不可達(dá)的對象被標(biāo)記第二次檢查對象是否重寫了finalize()且未被調(diào)用過如果是就放進(jìn) F-Queue 等待執(zhí)行執(zhí)行完還沒被引用才真正回收。finalize()這個方法在實際項目里基本不該用它的執(zhí)行時機不確定還容易拖慢 GC。1.3 一次 Minor GC 的現(xiàn)場還原假設(shè)堆是 4G用 Parallel Scavenge默認(rèn)新生代和老年代是 1:2那新生代約 1.33GEden 和兩個 Survivor 按 8:1:1 分Eden 約 1.06G每個 Survivor 約 133M。當(dāng) Eden 被填滿觸發(fā) Minor GC暫停所有應(yīng)用線程Stop-The-World。從 GC Roots 出發(fā)標(biāo)記 Eden 和當(dāng)前 From Survivor 里的存活對象。把存活對象復(fù)制到 To Survivor年齡 1。清空 Eden 和 From Survivor然后 From 和 To 角色互換。關(guān)鍵點來了如果 To Survivor 裝不下所有存活對象多余的對象會通過“分配擔(dān)?!睓C制直接進(jìn)老年代。這是最隱蔽的問題來源之一很多人看到老年代莫名其妙漲得快其實就是 Survivor 太小導(dǎo)致的提前晉升。提示如果你觀察到 Minor GC 之后老年代占用明顯上升先別急著調(diào) GC 策略先把-XX:SurvivorRatio和新生代大小重新算一遍。Survivor 太小是提前晉升最常見的原因。2. JDK8 里的垃圾回收器怎么挑JDK8 這個版本的好處是選擇多壞處也是選擇多。很多人上手就查“哪個回收器最好”這個問題問法本身就錯了——沒有最好的只有適配當(dāng)前內(nèi)存規(guī)模、延遲要求和吞吐要求的。2.1 分代收集器的組合關(guān)系與適用邊界先搞清楚哪些回收器能配對。新生代和老年代各有各的實現(xiàn)必須成對使用。新生代回收器老年代回收器啟用方式特點SerialSerial Old-XX:UseSerialGC單線程客戶端模式或小內(nèi)存場景ParNewCMS-XX:UseConcMarkSweepGC低延遲響應(yīng)優(yōu)先Parallel ScavengeParallel Old-XX:UseParallelGC吞吐優(yōu)先JDK8 默認(rèn)G1自身管理整堆-XX:UseG1GC可預(yù)測停頓大堆首選補充一點容易搞混的JDK8 的默認(rèn)回收器在服務(wù)端機器上CPU 大于 2 核、內(nèi)存大于 2G是 Parallel Scavenge Parallel Old在客戶端機器上是 Serial。所以很多項目其實一直跑在 Parallel 上從沒動過參數(shù)。Serial 系列現(xiàn)在基本只在嵌入式或者內(nèi)存極小的場景用得上。它的優(yōu)勢是簡單、沒有線程交互開銷、沒有額外內(nèi)存占用單核環(huán)境下反而比并行版本快。但如果你的堆有 8G 以上單線程回收一次全堆能卡秒級直接排除。2.2 Parallel、CMS、G1 的取舍邏輯Parallel Scavenge Parallel Old的核心目標(biāo)是吞吐量也就是用戶代碼運行時間 / (用戶代碼時間 GC 時間)。它的設(shè)計取向是少停頓次數(shù)、多干活適合后臺批處理、離線計算、數(shù)據(jù)同步這類對單次停頓不敏感、但對整體算力敏感的場景??烧{(diào)參數(shù)主要是兩個-XX:MaxGCPauseMillis設(shè)置最大停頓時間-XX:GCTimeRatio設(shè)置吞吐量目標(biāo)默認(rèn) 99即 GC 時間不超過 1%。注意MaxGCPauseMillis調(diào)小之后JVM 會自動縮小新生代代價是 GC 更頻繁、吞吐量下降。這是個蹺蹺板不能兩頭都要。CMS是 JDK8 時代低延遲的代表目標(biāo)是縮短停頓代價是犧牲吞吐量并占用額外 CPU。它把老年代回收拆成四個階段初始標(biāo)記STW很短、并發(fā)標(biāo)記、重新標(biāo)記STW、并發(fā)清除。最長的并發(fā)標(biāo)記和并發(fā)清除階段是和應(yīng)用線程同時跑的所以停頓短。但 CMS 有幾個硬傷這也是它后來被 G1 取代的原因浮動垃圾并發(fā)清理期間應(yīng)用還在產(chǎn)生新垃圾這些只能等下一次。所以 CMS 不能等老年代滿了才動手默認(rèn)老年代使用到 92% 就觸發(fā)-XX:CMSInitiatingOccupancyFraction通常要調(diào)到 70 到 80 留出余量。并發(fā)模式失敗Concurrent Mode Failure如果在并發(fā)清理期間老年代就被填滿了CMS 會退化成 Serial Old 做一次單線程 Full GC那個停頓就是災(zāi)難級的。這是 CMS 線上事故的第一大來源。內(nèi)存碎片CMS 用的是標(biāo)記-清除不做壓縮跑久了老年代全是碎片大對象分配不下又觸發(fā) Full GC。G1是 JDK8 里唯一兼顧吞吐和停頓、并且能處理大堆的通用回收器。JDK9 之后它成了默認(rèn)但 JDK8 里需要手動開啟。它的整體思路是把堆切成很多等大的 Region每個 Region 可以動態(tài)扮演 Eden、Survivor、Old 或 Humongous然后基于“哪個 Region 垃圾最多”來優(yōu)先回收這就是 Garbage First 名字的由來。選型上我一般這么定堆小于 4G、追求吞吐、能接受百毫秒級停頓Parallel。堆 4G 到 8G、延遲敏感、有調(diào)優(yōu)經(jīng)驗CMS 或者 G1。CMS 需要精細(xì)調(diào)參G1 相對省心。堆大于 8G直接 G1別猶豫。CMS 在這個量級上的碎片和并發(fā)失敗風(fēng)險太高。堆超過 16G、停頓要求 10ms 級JDK8 里 G1 也吃力這時候應(yīng)該考慮升級 JDK 版本用 ZGC。2.3 G1 的 Region 模型與停頓預(yù)測原理G1 的參數(shù)里有個容易被忽略的-XX:G1HeapRegionSize。如果不設(shè)JVM 會自動推算規(guī)則大致是把整堆除以 2048 得到一個目標(biāo)值然后向上取到 2 的冪且限制在 1M 到 32M 之間。比如 4G 堆4G/2048 2M那 Region 就是 2M16G 堆是 8M32G 堆是 16M。這個值為什么重要因為它決定了大對象的標(biāo)準(zhǔn)。超過 Region 一半的對象會被標(biāo)記為 Humongous直接分配在連續(xù)的 Region 里且回收時機比較尷尬——如果它被判定為全垃圾會立刻回收否則要等并發(fā)標(biāo)記周期結(jié)束。所以如果應(yīng)用里有大量 1M 到幾 M 的緩存對象Region 設(shè)小了會產(chǎn)生一堆 HumongousGC 效率反而下降。我遇到過一個案例16G 堆沒設(shè) Region 大小推算出來是 8M但業(yè)務(wù)里有大量 6M 左右的圖片緩存對象每個都觸發(fā) Humongous 分配GC 日志里全是Humongous字樣調(diào)大-XX:G1HeapRegionSize16m之后問題就沒了。G1 的停頓預(yù)測靠的是-XX:MaxGCPauseMillis默認(rèn) 200ms。這里必須提醒一句這個值是目標(biāo)不是承諾。G1 通過歷史回收數(shù)據(jù)估算哪些 Region 值得回收選出能在目標(biāo)時間內(nèi)搞定的集合Collection Set。如果你把目標(biāo)設(shè)成 10msG1 會幾乎收不動老年代最后堆積到并發(fā)模式失敗。經(jīng)驗值3 到 8G 堆設(shè) 100 到 200ms8G 以上設(shè) 200ms 就夠了別貪心。3. 參數(shù)怎么定從機器規(guī)格倒推 JVM 參數(shù)參數(shù)不是背下來的是算出來的。而且必須從機器規(guī)格和容器限制倒推不能拍腦袋設(shè)個大值。3.1 堆內(nèi)存、元空間、線程棧的賬要算清楚先說默認(rèn)值很多人不知道默認(rèn)堆是多少。JDK8 里-Xms默認(rèn)是物理內(nèi)存的 1/64-Xmx默認(rèn)是 1/4。真跑在生產(chǎn)上8G 的機器默認(rèn)堆上限只有 2G而且初始堆小會經(jīng)歷一段不斷擴堆的過程每次都觸發(fā) Full GC。關(guān)于-Xms和-Xmx是否要一樣我的觀點很明確生產(chǎn)環(huán)境必須設(shè)成一樣。堆動態(tài)擴縮容本身是有代價的而且初始堆小會在啟動階段頻繁 GC。唯一例外是你確定這個應(yīng)用是低頻的、內(nèi)存占用極小的邊緣服務(wù)那可以省點內(nèi)存。算賬的順序是這樣的以一臺 8G 內(nèi)存、8 核的機器為例第一步確定 JVM 總的可用內(nèi)存上限。這臺機器如果只跑這一個 Java 進(jìn)程可以給到 6G留 2G 給操作系統(tǒng)和可能的外部依賴。如果是容器那容器 limit 才是硬邊界。第二步從這 6G 里扣掉堆外開銷元空間按類加載數(shù)量估。一般業(yè)務(wù)系統(tǒng) 200 到 300M 足夠用 Spring 全家桶加上動態(tài)代理的大項目給 512M 也是合理的。設(shè)-XX:MetaspaceSize256m -XX:MaxMetaspaceSize512m。直接內(nèi)存-XX:MaxDirectMemorySize256m用 Netty 或者大量 NIO 的項目要按實際連接數(shù)和緩沖區(qū)大小估算。線程棧-Xss默認(rèn) 1M如果線程數(shù)峰值 500那就是 500M。線程數(shù)乘以棧大小是實打?qū)嵉拈_銷這就是為什么-Xss512k在這種場景下很有必要。代碼緩存-XX:ReservedCodeCacheSize默認(rèn) 240MJDK8JIT 編譯的代碼放這里一般夠用。第三步剩下的才是堆。6G 減掉 512M 元空間、256M 直接內(nèi)存、512M 線程棧、240M 代碼緩存大約 4.5G那-Xmx4g是個穩(wěn)妥的取值。第四步劃分新生代。如果不用 G1新生代大小用-Xmn或-Xmn配合-XX:NewRatio控制。NewRatio是“老年代 : 新生代”的比值默認(rèn) 2也就是新生代占整堆 1/3。對于短生命周期對象多的 Web 應(yīng)用可以把比例調(diào)到 1:1 甚至新生代更大減少晉升壓力。注意-Xmn一旦顯式設(shè)置-XX:NewRatio就失效了而 G1 里-Xmn會被忽略需要用-XX:G1NewSizePercent和-XX:G1MaxNewSizePercent默認(rèn) 5% 和 60%來控制新生代占比。這幾個參數(shù)互相覆蓋的關(guān)系是調(diào)參時最容易翻車的地方。3.2 GC 日志參數(shù)在 JDK8 下的正確寫法生產(chǎn)上不開 GC 日志就是閉眼開車。JDK8 的日志參數(shù)和 JDK9 之后完全不同別混著寫。-XX:PrintGCDetails -XX:PrintGCDateStamps -XX:PrintGCTimeStamps -XX:PrintHeapAtGC -XX:PrintTenuringDistribution -XX:PrintGCApplicationStoppedTime -Xloggc:/data/logs/gc-%t.log -XX:UseGCLogFileRotation -XX:NumberOfGCLogFiles10 -XX:GCLogFileSize50M逐個說作用PrintGCDetails輸出詳細(xì)日志包含各代容量變化PrintGCDateStamps加絕對時間戳排查問題必須要有PrintGCTimeStamps加相對 JVM 啟動的時間PrintHeapAtGC在每次 GC 前后打印堆布局量很大一般排查期開穩(wěn)定后關(guān)掉PrintTenuringDistribution打印對象年齡分布判斷提前晉升全靠它PrintGCApplicationStoppedTime打印 STW 總時長這個是判斷“接口偶爾卡頓”的直接證據(jù)。-Xloggc后面加%t會用啟動時間戳命名文件避免重啟覆蓋。配合輪轉(zhuǎn)參數(shù)10 個文件每個 50M一共 500M基本夠追一周的問題。JDK8 的日志文件名參數(shù)是-XX:GCLogFileSize注意 JDK9 之后這套全被-Xlog:gc*:filexxx:time,uptime,level,tags取代了網(wǎng)上搜到的參數(shù)經(jīng)?;熘鴣韺χ姹境?。3.3 三檔常見規(guī)格的參數(shù)模板下面這三套是我自己在項目里反復(fù)用過的可以直接作為起點再根據(jù) GC 日志微調(diào)。4C8G堆 4GWeb 服務(wù)延遲敏感G1-Xms4g -Xmx4g -XX:UseG1GC -XX:MaxGCPauseMillis200 -XX:G1HeapRegionSize4m -XX:InitiatingHeapOccupancyPercent45 -XX:MetaspaceSize256m -XX:MaxMetaspaceSize512m -XX:MaxDirectMemorySize256m -Xss512k -XX:ParallelRefProcEnabled -XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPath/data/dump/InitiatingHeapOccupancyPercent默認(rèn) 45意思是老年代占用達(dá)到整堆 45% 就啟動并發(fā)標(biāo)記周期。如果日志里經(jīng)常出現(xiàn)to-space exhausted或者Evacuation Failure說明這個值太高標(biāo)記得太晚要往下調(diào)到 35 到 40。8C16G堆 8G數(shù)據(jù)同步吞吐優(yōu)先Parallel-Xms8g -Xmx8g -XX:UseParallelGC -XX:ParallelGCThreads8 -XX:MaxGCPauseMillis500 -XX:GCTimeRatio99 -Xmn3g -XX:SurvivorRatio8 -XX:MaxTenuringThreshold15 -XX:MetaspaceSize256m -XX:MaxMetaspaceSize512m -Xss512kParallelGCThreads默認(rèn)是按 CPU 核數(shù)算的約等于核數(shù)超過 8 核時按公式縮減顯式設(shè)置成 8 是為了避免容器里 CPU 配額識別不準(zhǔn)導(dǎo)致線程數(shù)異常。SurvivorRatio8是 Eden 和一個 Survivor 的比例所以新生代里 Eden 占 80%。16C32G堆 16G核心交易低延遲G1-Xms16g -Xmx16g -XX:UseG1GC -XX:MaxGCPauseMillis150 -XX:G1HeapRegionSize8m -XX:InitiatingHeapOccupancyPercent40 -XX:G1NewSizePercent10 -XX:G1MaxNewSizePercent40 -XX:ConcGCThreads4 -XX:ParallelGCThreads12 -XX:UnlockExperimentalVMOptions -XX:UseStringDeduplication -XX:MetaspaceSize512m -XX:MaxMetaspaceSize1g -Xss512kUseStringDeduplication是 G1 獨有的字符串去重能省下不少堆但會消耗額外的 CPU 和并發(fā)線程只在字符串重復(fù)度高的場景比如大量 JSON 解析才值得開。ConcGCThreads是并發(fā)標(biāo)記線程數(shù)默認(rèn)是ParallelGCThreads/4設(shè)太大反而搶業(yè)務(wù) CPU。4. 工具鏈命令行四件套加 Arthas 的組合拳工具不在多在于知道什么時候用哪個。我的習(xí)慣是現(xiàn)場診斷先用命令行四件套需要動態(tài)追蹤再上 Arthas需要看趨勢圖才開 VisualVM。4.1 jps、jstat、jmap、jstack 的準(zhǔn)確用法與坑jps用來找進(jìn)程號最基礎(chǔ)的入口。jps -l # 輸出主類全名 jps -lv # 加上 JVM 參數(shù)確認(rèn)啟動參數(shù)是不是你想要的jps -lv這個用法我強烈推薦排查“參數(shù)改了沒生效”這類問題時一眼就能看出實際生效的參數(shù)。jstat用來看 GC 實時數(shù)據(jù)每秒一次打十次jstat -gcutil 12345 1000 10輸出里的S0、S1、E、O、M是各區(qū)域使用百分比YGC/YGCT是新生代 GC 次數(shù)和總耗時FGC/FGCT是老年代 GC 次數(shù)和總耗時GCT是總耗時。判斷標(biāo)準(zhǔn)很簡單FGC 一直漲就是有問題正常穩(wěn)定的服務(wù) FGC 應(yīng)該長期不變FGCT / FGC得到的單次 Full GC 平均耗時超過 1 秒就需要處理。常用變體還有-gcnew只看新生代、-gcold只看老年代、-gccapacity看各區(qū)域容量。jmap用來做堆分析但有兩個坑必須先說jmap -heap 12345 # 查看堆配置和使用情況 jmap -histo 12345 | head -30 # 對象直方圖看誰占內(nèi)存 jmap -dump:formatb,file/tmp/heap.hprof 12345 # 導(dǎo)出堆快照第一個坑jmap -histo:live帶live會先觸發(fā)一次 Full GC 再統(tǒng)計線上執(zhí)行就是一次幾十秒的停頓除非萬不得已別在生產(chǎn)上用。用jmap -histo不帶 live 時統(tǒng)計的是所有對象包括待回收的會虛高但沒停頓風(fēng)險先粗看足夠了。第二個坑jmap -dump在堆大的時候非常慢而且會 STW。8G 堆導(dǎo)出一次可能要一兩分鐘甚至更久業(yè)務(wù)直接受影響。正確的做法是配置-XX:HeapDumpOnOutOfMemoryError讓它自動在 OOM 時 dump或者從負(fù)載均衡摘掉節(jié)點再手動導(dǎo)。jstack用來看線程棧jstack -l 12345 /tmp/stack.log-l會額外打印鎖信息Locked ownable synchronizers排查死鎖必須加。想找死鎖也可以直接用jstack輸出后搜Found one Java-level deadlockJVM 會自動檢測并打印出來。排查 CPU 飆高的標(biāo)準(zhǔn)流程是先用top -Hp pid找出占 CPU 最高的線程 ID把它轉(zhuǎn)成十六進(jìn)制再到 jstack 輸出里搜nid0x加那個十六進(jìn)制值定位到具體代碼行。top -Hp 12345 printf %x\n 12346 # 假設(shè)高 CPU 線程是 12346得到 0x303a jstack 12345 | grep -A 30 nid0x303a4.2 VisualVM、JConsole、Arthas 的上手姿勢JConsole現(xiàn)在基本只作為兜底工具界面老、功能弱但勝在自帶??磧?nèi)存曲線、手動觸發(fā) GC 這些它能干看看線程數(shù)變化也夠。VisualVM是 JDK8 時代最順手的圖形化工具jvisualvm命令直接啟動。裝上 Visual GC 插件之后能實時看到 Eden、Survivor、老年代、元空間的曲線一眼就能看出內(nèi)存是不是鋸齒狀健康回收還是在緩慢爬升。判斷內(nèi)存泄漏最快的方式就是看這條曲線正常是鋸齒泄漏是一路向上、GC 之后回不到原位置。Arthas是后來居上的利器尤其是不能重啟的線上環(huán)境。核心命令我常用的就幾個dashboard # 總覽包含線程、內(nèi)存、GC 情況 thread -n 3 # 找 CPU 占用最高的 3 個線程 thread -b # 直接找阻塞其他線程的元兇 heapdump /tmp/a.hprof # 導(dǎo)出堆快照 trace com.xxx.Service method # 追蹤方法內(nèi)部調(diào)用耗時 watch com.xxx.Service method {params, returnObj} -x 2 # 觀察入?yún)⒑头祷刂祎hread -b這個命令救過我好幾次它能直接告訴你哪個線程持有鎖不放導(dǎo)致別的線程全卡住了比翻 jstack 快得多。但trace和watch在高頻方法上有明顯性能損耗用完一定要stop掉我見過有人忘了 stop第二天發(fā)現(xiàn)接口 P99 漲了三倍。dashboard里還有個細(xì)節(jié)值得看GC 那一欄會顯示各代的使用率曲線和 GC 次數(shù)。如果老年代使用率穩(wěn)定在 90% 以上且 FGC 緩慢增長就是內(nèi)存不夠或者有輕微泄漏的信號。4.3 一次 Full GC 頻繁的完整排查記錄說個真實場景。一個訂單查詢服務(wù)8G 堆用 Parallel上線兩周后監(jiān)控報 FGC 每小時從 0 漲到 20 多次每次約 1.5 秒高峰期接口超時。排查步驟第一步j(luò)stat -gcutil看趨勢。確認(rèn) YGC 正常每秒幾次每次 20ms 左右但老年代占用在 GC 后從 40% 一路爬到 95%然后 Full GC 打回 40%。GC 后老年代能回落到 40%說明沒有嚴(yán)重泄漏只是對象產(chǎn)生速度超過了回收能力。第二步加-XX:PrintTenuringDistribution重啟一個實例。日志里看到大量對象年齡是 1 和 2 就直接晉升了。結(jié)合年齡分布算一下Survivor 里的同齡對象總大小確實超過了 Survivor 一半動態(tài)年齡判定在起作用。第三步看新生代參數(shù)。原來是-Xmn2g -XX:SurvivorRatio8新生代 2GEden 1.6G每個 Survivor 只有 200M。而請求高峰期 Eden 每秒產(chǎn)生大約 400M 垃圾Survivor 根本裝不下存活的跨越對象。第四步調(diào)整。把-Xmn從 2G 提到 2.7GSurvivorRatio從 8 改成 6Survivor 變成約 337M同時把MaxTenuringThreshold顯式設(shè)為 15 防止被過早抬高。老年代從 5.3G 縮小到 4.6G。第五步觀察。改完后 FGC 從每小時 20 多次降到每天 1 到 2 次YGC 頻率略升但單次耗時沒變整體 P99 從 800ms 降到 120ms。這個過程里最關(guān)鍵的一步其實是第二步——加PrintTenuringDistribution看到年齡分布沒有這個信息前面所有的調(diào)整都是猜。5. OOM 與各類異常場景的排查套路OOM 不是一個錯誤是一類錯誤的統(tǒng)稱。不同后綴的 OOM 指向完全不同的根因處理方法也完全不同。把報錯后綴看懂排查能省一半時間。5.1 八種 OOM 的成因與定位方法報錯后綴觸發(fā)位置常見根因處理方向Java heap space堆大量對象未釋放、緩存無上限、查詢?nèi)砑虞d看 heap dump 找大對象檢查緩存淘汰策略GC overhead limit exceeded堆GC 花了 98% 以上時間卻只回收不到 2% 的空間基本等同于內(nèi)存泄漏先加堆續(xù)命再找泄漏點Metaspace元空間動態(tài)生成類太多CGLIB、反射、腳本引擎設(shè) MaxMetaspaceSize檢查是否每次調(diào)用都創(chuàng)建新類加載器Direct buffer memory直接內(nèi)存NIO 緩沖區(qū)未釋放、Netty 池配置不當(dāng)設(shè) MaxDirectMemorySize檢查 ByteBuf 是否 releaseunable to create new native thread操作系統(tǒng)線程數(shù)超過系統(tǒng)限制、線程棧太大查 ulimit、線程數(shù)上限、是否存在線程泄漏Requested array size exceeds VM limit堆申請數(shù)組長度超過 int 上限附近通常代碼邏輯錯誤檢查數(shù)組長度計算Kill process or sacrifice child操作系統(tǒng)進(jìn)程被 OOM Killer 殺掉容器內(nèi)存配額不足或堆外內(nèi)存超限Compressed class space元空間壓縮類指針空間耗盡調(diào)-XX:CompressedClassSpaceSize這里重點說兩個最容易被誤判的。GC overhead limit exceeded經(jīng)常被當(dāng)成“內(nèi)存不夠”于是加堆結(jié)果只是把崩潰時間推遲。它的本質(zhì)是垃圾產(chǎn)生速率超過了回收速率加堆不能降低產(chǎn)生速率。正確姿勢是先用jmap -histo看對象分布如果是某個業(yè)務(wù)對象數(shù)量異常就去查對應(yīng)的業(yè)務(wù)邏輯如果是HashMap$Node或者byte[]占了大頭八成是某個緩存容器沒有上限。unable to create new native thread的詭異之處在于堆內(nèi)存可能還很空但就是創(chuàng)建不了線程。原因通常是三種一是操作系統(tǒng)ulimit -u限制了單用戶進(jìn)程數(shù)二是線程棧 1M 乘以線程數(shù)吃掉了大量內(nèi)存堆又開得大兩邊一起把物理內(nèi)存擠爆三是線程池創(chuàng)建了太多核心線程。我遇到過Executors.newCachedThreadPool()在突發(fā)流量下創(chuàng)建了上萬個線程的情況改成有界隊列的ThreadPoolExecutor之后就好了。順帶說一句線程池和 JVM 的關(guān)系線程池里每個線程都要占用一份??臻g所以最大線程數(shù)乘以-Xss是必須從內(nèi)存預(yù)算里扣掉的。有人算過“最大線程數(shù) JVM 剩余可用線程”這個思路是對的但實際約束往往來自操作系統(tǒng)限制而不是堆內(nèi)存。合理的做法是把最大線程數(shù)控制在幾百這個量級配合有界隊列和合適的拒絕策略。5.2 CPU 飆高、GC 停頓、內(nèi)存泄漏怎么查CPU 飆高的三種典型模式第一種業(yè)務(wù)線程在跑密集計算或者死循環(huán)。用前面說的top -Hp加jstack定位到具體方法能看到線程一直停在同一個方法棧上。第二種GC 線程在瘋狂跑。表現(xiàn)是top里 GC 線程名字帶GC或者G1占用很高jstat里 YGC 或 FGC 頻率暴漲。這時候要處理的是內(nèi)存問題不是 CPU 問題。第三種頻繁的上下文切換。pidstat -w -p pid 1能看到cswch/s很高一般是鎖競爭嚴(yán)重。用jstack搜BLOCKED狀態(tài)的線程或者用 Arthas 的thread -b。GC 停頓的排查要區(qū)分是 Young GC 還是 Full GC 的停頓。判斷方式看PrintGCApplicationStoppedTime的輸出里面會列出每次 STW 的持續(xù)時間。如果 STW 時間遠(yuǎn)大于 GC 日志里標(biāo)注的 GC 時間那說明停頓另有原因——可能是在做偏向鎖撤銷、類加載、或者 JIT 反優(yōu)化。這個坑很深見過一次線上停頓 300ms 但 GC 日志顯示只停了 20ms 的情況最后查出來是 JVM 在做大量偏向鎖批量撤銷用-XX:-UseBiasedLocking關(guān)掉偏向鎖才解決。內(nèi)存泄漏的定位流程我固定這么走先用jstat -gcutil觀察老年代在 Full GC 后能否回落。能回落說明只是壓力大不能回落才是泄漏。然后用jmap -histo看對象排名對比兩次相隔幾分鐘的輸出看哪個類的實例數(shù)在持續(xù)增長。這一步不需要 dump 文件開銷小適合線上。鎖定可疑類之后再找個低峰期導(dǎo) heap dump用 MAT 或者 JProfiler 打開看這個類的 GC Roots 引用鏈。MAT 的Dominator Tree視圖能直接告訴你誰占內(nèi)存最多Path to GC Roots能告訴你為什么這個對象回收不掉。常見的原因就那么幾個靜態(tài) Map 只增不減、ThreadLocal 用完沒 remove、監(jiān)聽器注冊后沒注銷、連接池/線程池未關(guān)閉。注意ThreadLocal 泄漏是重災(zāi)區(qū)。線程池里的線程是復(fù)用的ThreadLocal 如果不在 finally 里 remove它引用的對象會一直活到線程銷毀而線程池的線程基本不會銷毀。5.3 開發(fā)環(huán)境與容器環(huán)境的調(diào)優(yōu)注意點IDEA 本身的 JVM 調(diào)優(yōu)也值得說兩句因為開發(fā)機的卡頓經(jīng)常被誤判成代碼問題。IDEA 的 JVM 參數(shù)在Help Edit Custom VM Options里改配置文件是idea.vmoptions。默認(rèn)堆上限通常只有 750M 到 1G對于大型項目多模塊、大量索引根本不夠。-Xms1g -Xmx4g -XX:ReservedCodeCacheSize512m -XX:UseG1GC -XX:SoftRefLRUPolicyMSPerMB50 -XX:CICompilerCount2ReservedCodeCacheSize調(diào)大到 512M 是因為 IDEA 的索引和插件代碼量巨大默認(rèn) 240M 經(jīng)常觸發(fā) JIT 代碼緩存滿表現(xiàn)就是 CPU 突然飆高、卡頓日志里能看到CodeCache is full的提示。SoftRefLRUPolicyMSPerMB50讓軟引用更快被回收減少內(nèi)存壓力。注意如果你開了大量插件導(dǎo)致 CPU 高先試試File Invalidate Caches重建索引比調(diào)參有用。容器環(huán)境的坑更隱蔽。JDK8 在 8u191 之前的版本JVM 根本識別不到容器的 cgroup 限制它會讀到宿主機的物理內(nèi)存然后按 1/4 算堆上限。容器 limit 是 2G宿主機 64G堆就開了 16G一啟動就被 OOM Killer 干掉。查版本java -version看構(gòu)建號。8u191 及以后默認(rèn)開啟-XX:UseContainerSupport能正確讀取容器限制。更早的版本要么升級要么老老實實手動寫死-Xmx。即使在 8u191 之后容器里也建議顯式設(shè)堆。因為在容器里堆外內(nèi)存元空間、直接內(nèi)存、線程棧、JVM 自身都算在容器配額內(nèi)堆設(shè)成 limit 的 70% 到 75% 是比較穩(wěn)的比例剩下的留給堆外。見過太多“容器 limit 4G堆設(shè) 4G跑一會兒就被 Kill”的案例。6. GC 日志判讀與批量壓測調(diào)優(yōu)日志是唯一的客觀證據(jù)。很多人調(diào)優(yōu)調(diào)不好不是不懂參數(shù)是不會讀日志。6.1 三種回收器的日志格式對比Parallel 的 Young GC 日志2024-03-15T10:23:45.1230800: 25.456: [GC (Allocation Failure) [PSYoungGen: 65536K-10752K(76288K)] 65536K-11664K(251392K), 0.0234567 secs] [Times: user0.09 sys0.01, real0.02 secs]拆開看25.456是 JVM 啟動后的秒數(shù)Allocation Failure是觸發(fā)原因表示新生代沒空間分配了PSYoungGen: 65536K-10752K(76288K)表示新生代從 64M 降到 10.5M總?cè)萘?74.5M65536K-11664K(251392K)是整個堆從 64M 降到 11.4M堆總?cè)萘?245.5M0.0234567 secs是這次 GC 的耗時Times里的user是所有 GC 線程消耗的 CPU 時間總和real是實際墻鐘時間。user 遠(yuǎn)大于 real 說明并行度好user 接近 real 說明基本是串行在跑。CMS 的日志會多出幾個階段2024-03-15T10:23:45.1230800: 25.456: [GC (CMS Initial Mark) [1 CMS-initial-mark: 131072K(174784K)] 145600K(251392K), 0.0012345 secs] 2024-03-15T10:23:45.2000800: 25.533: [CMS-concurrent-mark-start] 2024-03-15T10:23:45.8000800: 26.133: [CMS-concurrent-mark: 0.567/0.600 secs] 2024-03-15T10:23:45.8100800: 26.143: [CMS-concurrent-preclean-start] 2024-03-15T10:23:46.1000800: 26.433: [CMS-concurrent-preclean: 0.290/0.290 secs] 2024-03-15T10:23:46.1100800: 26.443: [GC (CMS Final Remark) [YG occupancy: 80000 K (131072 K)] 0.0850000 secs] 2024-03-15T10:23:46.2000800: 26.533: [CMS-concurrent-sweep-start] 2024-03-15T10:23:47.5000800: 27.833: [CMS-concurrent-sweep: 1.300/1.300 secs]看 CMS 日志只關(guān)心兩個有 STW 的階段CMS Initial Mark和CMS Final Remark。這兩個的耗時才是真正影響業(yè)務(wù)的。中間的concurrent-mark、preclean、sweep都是并發(fā)的耗時再長也只影響吞吐。如果 Final Remark 時間很長通常是新生代對象多導(dǎo)致重新標(biāo)記工作量大可以調(diào)-XX:CMSScheduleRemarkEdenPenetration之類的高級參數(shù)但更簡單的辦法是減小新生代。G1 的日志信息量最大2024-03-15T10:23:45.1230800: 25.456: [GC pause (G1 Evacuation Pause) (young), 0.0234567 secs] [Parallel Time: 18.2 ms, GC Workers: 8] [GC Worker Start (ms): Min: 25456.1, Avg: 25456.3, Max: 25456.5, Diff: 0.4] [Ext Root Scanning (ms): Avg: 0.5, Max: 1.1, Sum: 4.0] [Update RS (ms): Avg: 0.8, Max: 1.5, Sum: 6.4] [Scan RS (ms): Avg: 0.3, Max: 0.9, Sum: 2.4] [Object Copy (ms): Avg: 12.1, Max: 14.3, Sum: 96.8] [Eden: 512.0M(512.0M)-0.0B(504.0M) Survivors: 4096.0K-8192.0K Heap: 1024.0M(2048.0M)-530.0M(2048.0M)]重點看Parallel Time和各個子階段的耗時。如果Ext Root Scanning很高說明 GC Roots比如大量線程、大量類太多了檢查線程數(shù)是不是失控如果Update RS或Scan RS高說明跨 Region 引用多Remembered Set 維護壓力大通常意味著老年代對象和新生代對象交互頻繁得考慮對象是不是過度分散了如果Object Copy占大頭那就是存活對象太多得減小新生代或者減少對象存活時間。6.2 關(guān)鍵指標(biāo)與判讀閾值我整理了一張自己常用的閾值表長時間越界就要動手了。指標(biāo)獲取方式健康范圍越界含義YGC 頻率jstat 里 YGC 變化率每秒小于 5 次新生代太小或?qū)ο蠓峙渌俾蔬^高YGC 單次耗時YGCT / YGC小于 50ms存活對象太多Survivor 不夠FGC 頻率jstat 里 FGC 變化率每天少于 2 次老年代不夠或有泄漏FGC 單次耗時FGCT / FGC小于 1s堆太大或回收器選擇不當(dāng)GC 總時間占比GCT / 運行時長小于 5%吞吐量受損需要重新選型老年代 GC 后占用jstat 里 O穩(wěn)定不持續(xù)上升持續(xù)上升即有泄漏STW 總時長PrintGCApplicationStoppedTime單次小于 200ms影響接口 P99這張表里我覺得最該盯的是最后一個STW 總時長。因為它包含了 GC 之外的停頓原因是對用戶最直接的影響。只看 GC 耗時很容易漏掉偏向鎖撤銷、類加載、JIT 反優(yōu)化這些隱性停頓。6.3 壓測對比的落地做法調(diào)優(yōu)最后一步必須驗證而且不能只在一個參數(shù)下跑。我一般的做法是準(zhǔn)備一組參數(shù)組合在同一臺機器、同一份壓測流量下逐個跑收集 GC 日志后用腳本對比。先寫個提取腳本把日志里的關(guān)鍵指標(biāo)算出來#!/bin/bash LOG$1 echo 文件: $LOG echo YGC 次數(shù): $(grep -c GC (Allocation Failure) $LOG) echo Full GC 次數(shù): $(grep -c Full GC $LOG) echo 平均 STW: $(grep Total time for which application threads were stopped $LOG | awk {s$10; n} END {printf %.2f ms\n, s/n*1000}) echo 最長 STW: $(grep Total time for which application threads were stopped $LOG | awk {if($10m) m$10} END {printf %.2f ms\n, m*1000})然后準(zhǔn)備三到四組參數(shù)比如新生代 2G、2.7G、3.2G 三檔每組用同樣的壓測流量跑 30 分鐘收集日志之后橫向?qū)Ρ取簻y工具用什么不重要關(guān)鍵是流量模型要貼近真實——尤其是對象創(chuàng)建速率和對象存活時間這兩個特征必須和線上一致否則調(diào)出來的參數(shù)沒有參考價值。我自己踩過的一個坑是在壓測環(huán)境用簡單的接口壓對象創(chuàng)建快、存活短調(diào)出來的參數(shù)是新生代越大越好但線上業(yè)務(wù)的對象存活時間明顯長兩個環(huán)境的最優(yōu)參數(shù)完全不同。后來我改成從線上拉一份真實的請求采樣做流量回放參數(shù)才有參考意義。還有個實用技巧參數(shù)不要一次改多個。有人喜歡一次改五六項跑出來效果好也不知道是哪項起的作用效果差更不知道是哪項搞壞了。一次改一到兩項觀察至少半小時記錄下變化這才是可積累的調(diào)優(yōu)經(jīng)驗。最后再分享一個我自己的做法把每次調(diào)優(yōu)的參數(shù)、機器規(guī)格、前后 GC 指標(biāo)記錄在一個表格里。跑的項目多了之后這張表就成了自己的經(jīng)驗庫新項目上手時直接找規(guī)格相近的那一行做起點比從零開始試快得多。尤其是內(nèi)存規(guī)格在 4G 到 16G 這個區(qū)間很多業(yè)務(wù)形態(tài)的參數(shù)其實高度相似復(fù)用率相當(dāng)高。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久久激情五月婷婷| 国产免费一区二区三州老师F1…… | 九色PORNY自拍成人精彩视频| 狠狠精品干练久久久无码中文字幕| 精品九九网| 激情小说视频图片网| 亚洲精品一二三| 天天cha成人综合网| 99免费在线视频| 色婷婷成人网| 色五月av| 色婷婷婷综合五月天| 强壮公让我夜夜高潮A片视频| 成人片黄网站色大片免费毛片| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | 香蕉久久国产AV一区二区| 怕怕av| 九九人人操| 久99久在线| 成人在线网站| 97色色网| 蜜臀av无码久久久久久久久| 日本人人超碰| 狠狠操狠狠操| 欧美日韩成人在线| 极品人妻VIDEOSSS人妻| 激情五月四色| 草草操操| 日韩久久系列| 任你爽免费视频| 亚洲国产婷婷色五月| 久热大香蕉| 俺五月| 人与禽A片啪啪| 久久婷婷五月天亚洲欧美| 伊人综合婷婷| 六月婷婷色综合| 99热国产这里只有| 日本色色影院| 色五月综合| 丁香五月情| 亚洲激情婷婷| 色狠狠色噜噜AV天堂五区消防| 久久婷婷老| 五月天激情电影| 99久久玖玖| 亚洲五月婷婷| 97婷婷五月| 婷婷激情四射网| 欧美激情Va| 成人网在线观看视频| 五月婷婷丁香网| 婷婷爱爱蜜臀天天操| 婷婷五月天av| 爱婷婷都市激情| 大香蕉久久草| 亚洲人妻av伦理| 天天天天天久久久久久| 久久久久视剧HD| AV成人在线播放| 五月丁香婷婷无码A∨| 91精品91久久久久77777| 激情av在线| 色五月激情五月丁香五月婷婷啪啪综合 | 少妇性BBB搡BBB爽爽爽视頻 | 久久五月婷| 99爱免费在线观看| 91精品91久久久中77777久久玖玖九九| 天天操,天天插| 婷婷五月综合色中文字幕| 久久精品这里只有精品免费首页| 五月丁香六月婷婷中文版| 9999综合99综合人| 激情五月综合婷婷| 欧美日韩成人在线网站| 色欲五月婷婷| www.精品99| 麻豆精品| 色婷婷yy久| 丁香色五月天| 五月天婷久精视频| 丁香色情五月综合网站| 99热这里都是精品| 色原狠狠综合| 视频一区二区在线| 亚洲亚洲人成综合网络| 天天干天天干天天干| 婷婷五月天激情基地| 丁香五月婷婷色偷偷| 99热超碰| 噜噜视频| 可以看的av网站| 婷婷另类开心| 996er在线观看| 丁香花五月天婷婷成人社区| 99只有精品| 人人干人人操人人摸| 婷婷五月欧美综合| 六月欧美综合色情| aaaaa黄色| 91pornav在线| 久久五月天免费网站| 天天日综合| 蜜桃婷婷丁香五月天狠狠久久综合| 中文AV网站| 狠狠色综合网| 99re这里只有| 91色色色| 大香蕉手机视频| 在线天堂9| 26uuu另类| 六月色婷婷欧美| 久久久精品AV| 久久综合爱| 综合九色| 日本久久99久久| 激情亚洲五月| 综合网五月| 精品成人在线观看| 五月丁香久久综合| 九九色影视| 伊人深爱综合| 丁香五月天在线| 色亚洲色宗合| 五月综合婷婷久久在线| 久久欧洲综合网| 婷婷五月色丁香在线看| 都市激情五月婷婷亚洲| 丁香五月激情婷婷婷婷在线观看| 天天草天天爱| 九九热99熟女| 五月丁香啪啪激情| 国产亚洲99| 九九九日本熟女| 丁香五月777| www.久久婷婷| 任我肏| 婷婷99狠狠躁天天躁中文| 淫五月停停| 成人精品视频99在线观看免费| 亚洲综合另类| 日本99视频| 色爱综合网| 综合色色婷婷| 精品一区二区三区免费毛片爱| 日韩99视频| 人人摸人人| 色婷婷五月天在线| 五月丁香性| XX色综合| 久久久久9| 激情床戏| 日日操天天操| 665566 无码| 殴美97色| 激情人妻综合| 欧美婷婷五月无砖| 激情色色色| 99热| 亚洲综合激情五月久久| 国产乱子轮XXX农村| 五月天福利影院导航| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 日本久久婷婷| 五月天激日本色情在线| 激情五月亚洲| 六月婷婷av| 婷婷俺去也| 无码人妻精品一区二区蜜桃色欲| 91狠狠综合久久| 99国产精品白浆在线观看免费 | 新激情五月天色播| 九九热免费视频| 婷婷五月天激情网| A片试看50分钟做受视频| 欧美性生交XXXXX无码小说| 日韩成人影片网站| 日本天堂爱爱| 色婷婷最爱五月| 五月丁香青草综合啪啪| 97五月久久丁香婷婷| 人妻AV在线| 91操人| 啪啪啪五月天| 五月丁香成人| 婷婷五月激情四射手| 亭亭五月基地在线| 丁香五月婷婷色综合基地| 伊人久久五月天综合| 婷婷成人视频| 丰满人妻妇伦又伦精品国产| 91久久五月天| 丁香丝袜五月| 婷婷六月色| 99操碰| 日本va欧美va国产激情| 这里只有精品视频看看| 亚洲热热视频| 色99久草在线| 91色吧网| 亚洲综合视频一下| 久久色天堂| 蜜桃五月天| 成人在线免费网址| 五月婷婷成人网首页| 九九这里都是精品| 精品9197碰| 在线另类视频| 五月天成人小说网| 欧美成人AAA片一区国产精品| 五月丁香久久网| 免费无码毛片一区二区A片| 绿色小导航AV| 丁香婷婷啪啪啪| 婷婷丁香激情综合色情| 色色色色色日韩午夜激情 | 五月婷婷综合潮喷| 五月天播播| 日本久碰| 91碰碰碰| 99九九热视频| 人人摸人人干| 婷婷深爱五月天在线| 国产综合色婷婷精品久久| www.97视频| 9999三级片| 九色色| 99热在这里只有精品| 日韩五月婷婷| 天天摸色吧天天摸色吧| 久久久天堂国产精品女人| 国产1区2区3区| 九九精品在线网| 五月色综合| A级毛片高清免费不卡播放谢谢谢谢| 99热主页日本| 开心激情婷婷| 在线亚洲综合| 丁香五月开心五月激情| 大香蕉在九| 日本三久久| 人妻操操色| 色婷婷久久综合| 影院久久久| 久久最新色色色| 丁香五月五月婷婷| www.九月婷婷丁香.com| 久久这里只| 久久久com| 色欲九区| 丁香六月婷婷综合| 九九色99| www.99热精品| 99热丁香五月| 狠狠色97| 91精品91久久久中77777久久玖玖九九 | 999热这里只有美国精品| 色欲Av五月天| 天天操综合网| 五月丁香WWW| 直接看的AV| 99热在线精品播放| 99在线视频精品| 六月丁香婷婷色狠狠久久| 可以看的AV| 色欲久久99精品久久久久久| 五月色无码| 国产亚洲在线观看| 怕怕視頻| 风流少妇A片一区二区蜜桃 | 久久日韩婷婷五月| 欧美Va日本Va| 色婷婷aV四虎| 婷婷五月丁香综合激情| www91精品| 综合久久99| 色综合久网| 丁香五月天五码婷婷| 激情内射人妻1区2区3区| 免费AV在线网址| 青草五月天| 久久探花91swag| 岛国av电影网站| 五月花婷婷| www.婷婷网| 9久视频| 九九久久精品| 国产在线aaa片一区二区99| 国产色色网站网址| 大香蕉AV电影在线| 国产偷人妻精品一区| 色月丁| 综合网啪| 激情丁香九九五月综合网| 五月天天综合| 丁香六月AV| 激情五月综合| 色婷婷激情五月天| 波多野结衣AV无码Porn| 六月激情综合| 色婷婷丁香中文在线播放| 国产免费一区二区三州老师F1…… | 九久热| 日日杆天天| 日本成人综合| 婷婷丁香五月综合| 成人视频婷婷| 日本精品99| 97五月天| 五月婷婷丁香狠狠撸久久| 五月花激情网| 亚洲五月花| 激情五月丁香色婷婷| 婷婷中合| 91久久精品无码一区二区三区| 91性人人| 天天干天天做| 色婷婷五月天偷拍| 性色播| 国产精品国产成人国产三级| 青青草视频福利| 亚洲AV另类| 91久操| 久久婷婷五月激情网站| 无码A片一区二区免费| 五月丁香亭亭操逼| 99热这里只有精品50| 99精品视频推荐| 国产激情综合五月久久| 五月天久久综合婷婷丁香| www、丁香五月天| 久久精彩视频| 天天日日综合| 精品99这里有| 91操屁股| 人妻体体内射精一区二区 | 久久综合五月天| 操久久网| 在线日韩av| 99热日本| 欧美成人性爱网| 丁香五月天啪啪| 99色热综合| 九色PORNY自拍成人精彩视频| 99久久精品色老| 日本人妻伦在线中文字幕| 久久人人妻| 五月丁香婷婷无码A∨| 久re在线| 亚洲欧洲另类图片| 丁香五月偷拍| 狠狠五月激情丁香六月| 97色色色视屏| 综合AV在线| 蜜桃人妻无码AV天堂三区| 五月婷婷啪| 国产夫妻操逼内射视频| 婷五月天影院| 色五月综合网| 欧美狠狠色| 日操五月婷| 99碰网站| 亚洲成人无码片| 色色色色五月天| yazhouzonghesese| 亚洲最大在线| 综合超碰熟| 久久A极片| 久久婷婷五月综合色丁香| 五月五丁香婷婷| www.zbzhongsen.com| 色色色9 9 9| 成人亚洲精品久久久久 | 婷婷欧美综合| 人人妻久久妻| 开心五月激情婷婷| 天天爽天天爽夜夜爽| 九九色色| 先锋五月婷婷丁香草草| www.色婷婷.com| 色综合久久无码| 亚洲春色奇米影视| 熟妇无码乱子成人精品| 久久婷综合| 久久激情五月婷婷| 九色视频91疯狂| 五月婷婷之综合激情| 天天操夜夜夜拍拍拍| 狠狠爱综合网| 五月婷婷三级| 久热9| 夜色综合网| 国产女生爱爱AA| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | 激情久久综合网| 午夜理论片最新午夜理论剧 | 超碰成人av| 色五月激情婷婷| 丁香激情六月天婷婷| 天天噜天天插| 人人人人人人人人人草| 夜夜躁狠狠| 久久欧洲久久| 婷婷在线五月天观看| 香蕉久久国产AV一区二区| 五月婷婷久久久| 亚洲免费观看高清完整版AV线| 无码人妻精品一区二区蜜桃色欲| 色色五月天丁香| 婷婷五月丁香五月| 亚洲欧美成人在线| 天天操天天操天天操天天操天天操| 婷婷丁香五月高清| 青草五月天| 人妻操逼视频| 日本久久人人| 久久免片| 欧美色五月| 大香蕉综合网| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 亚洲丁香五月天在线视频| 色色色99韩| 狠狠艹狠狠艹| 天天射综合网天天插| 激情五月色综合国产精品| 思思re视频在线| 激情五月综合免费| 九九色综合视频| 天天操人人干| 99ri在线| 中文成人在线| 久久激情婷婷| 色一情一乱一乱一区91| 六月激情久久婷婷| 79色色免费| 婷婷五月天干干| 99色热| 九九这里是免费的视频5| 九九色播五月丁香| 激情六月天| 五月婷婷婷| 亚洲亚洲人成综合网络| 偷拍99在线视频观看| 色色丁香五月天社区| 夜色综合网| 综合视频久久| 69er小视频| 天天做天天爱天天要| 婷婷 伊人 久久| 婷婷综合网站| 欧美精品在线观看| 久久综合伊人77777蜜臀| 超碰在线观看99| 2020久久婷婷五月| 开心网五月色婷婷| 99热在线精品观看| 人人操9| 99ri精品在线| 五月婷婷丁香| 婷婷五月丁香四射| 婷婷久久大香蕉| 中文字幕丁香五月| 日本九婷婷| 丁香五月电影| 大香蕉在线99热| 丁香五月另类色婷婷麻豆| 99这里只有免费的精品| 五月婷激情| 欧美色婷婷| 新激情五月天| 久久婷婷五月综合97色一本| 99视频网| 五月天成人综合| 偷拍九九热| 综合激情在线| 五月丁香六月合| 久热这里| 激情五月婷婷| 影音先锋色婷婷| 亭亭五月天黑人2014| 另类激情五月| 99五丁香月| AA丁香综合激情| 激情性五月天免费小说视频| 99爱精品| 好看的国产精品| 久久久99精品| 狠狠干天天日| 狼人婷婷久久| 色99热| 在线观看中文字幕| 九九re视频在线视频| 激情五月丁香综合蜜桃| www.日韩国产| 开心婷婷五月综合| 激情播丁香| 五月天婷婷基地综合网| 人人操大| 伊人六月丁香婷婷| 深爱激情六月天| 午夜九九九九九九| 五月丁香亭亭天天舔| 九月婷婷久久久| 99色网站| 熟妇人妻中文字幕无码老熟妇| 欧美性生交xXxX久久久| 影音先锋色色色资源色资源色| 五月婷婷综合色啪| 99自拍视频| 99在线小视频| 色人妻五月| 日日噜噜夜夜狠狠久久丁香六月| 亚洲五月六月婷婷| 色五月激情问网站| 99色五月| 大香蕉大香蕉在线影院| 激情五月丁香综合网站| 内射在线CHINESE| 九九99精品视频在线观看| 草综合14| 欲色人妻| 操熟女成人网| 色爽干| 色爱99| 久热九九| 夜夜爱伊人| 久久视频这里有精品99| 超碰A V在线| 天堂婷婷五月色| 天天干夜夜想| 91超级碰碰碰| 日韩人妻无码专区| 九九香蕉网| 日韩啪| 激情国产综合| 婷婷六月天激情| 丁香婷婷久久综合在线| 常久最新免费的色吊丝| 婷婷日韩| 丁香六月婷婷综合啪啪| 亚洲成人AV电影网| WWW五月| 亚洲正能量欧美| 亚洲激情五月丁香久久久久| 色婷婷狠狠禁18久久| tingtingzonghewang| 蜜桃人妻无码AV天堂三区| 五月丁香啪啪| www,欧美干干干干干干| 婷婷五月天成人网| 色综合爱综合| 91 欧美| 亚洲综合婷婷五月天| 538在线精品| 99热精品综合| 超碰人人摸AV| 日本婷色| 91视频一起草| 婷婷中文字幕| 国产1区2区3区在线观| 六月天婷婷| 夜夜涩涩涩| 国产精产国品一二三在观看| 99 这里只有精品| av首页在线| 久热这里只有精品99re| 色播五月综合网| 在线天堂9| 香蕉婷婷| 欧美精品99久久久| 99视频在线观看欧| 婷婷五月天渟渟| 亚洲午夜一区二区| 综合婷婷| 精品影院| 999热在线视频| jiujiujiuwuyuetian| 久久9久| 久久五月天婷婷视频| 亚洲V国产V欧美V久久久久久| 婷婷五月小说色综合| 久久99网站| 五月天四色房丁香| 婷婷综合九月| 五月综合久久| 婷婷五月天激情诱惑| 99亚洲视频| 激情开心五月天| 久久人人人人妻| 婷婷久久天堂网| 色色丁香婷婷综合| 婷婷六月婷婷| 黑人无码一区| 99激情| 色5月婷婷| 激情五月丁香六月综合AVXXXX| 久9热视频| 色情五月丁香| 99精品无码网站| 99九九热视频免费| 天天做天天爽| 人人爱人人摸人人澡| 五月婷婷色播| 国产美女无遮挡裸体毛片A片 | 大香蕉五月天| 久久婷婷网站| 色婷婷综合久久| 五月丁香花视频| 色情·com| 97超碰欧美中文字幕| 九九婷婷网五月天| 丁香五月婷婷激情中文| 99热欧美| 丁香婷婷五月人体| 亚洲天堂热| 一级性爱视频| 久久99热这里| 丁香五月欧美激情| 精品热九九| 五月丁香六月婷| 丁香五月天婷婷中文| 丁香五月婷婷综合精品素人| 色婷婷成人做爰A片免费看网站| 天天色,天天操,天天射| 综合久久9| 九九精品9| 丁香六月婷婷久久综合| 国产五月天欧美色| 激情纯色婷婷五月天在线不卡视频| 9精品久久999| 涩五月婷婷| 久久九九视频| 婷婷中文字幕版| 五月丁香精品| 激情婷婷。| www.yw尤物| 91肏| 五月婷婷开心综合| 丁香五月 综合| 天天色丁香| 第四色色六月色综合| 六月激情网| 囯产精品久久欠久久久久久九大| 视频综合网| 97色色综合| 2025神马午夜福利| 综合激情网| 国产成人AV在线| 综合久久8| 午夜成人片400| 亚洲av综合网| 五月天狠狠| 天天综合亚洲综合| 国内裸舞二区| 色欲婷婷夜夜| 婷婷久久大香蕉| 丁香五月大香蕉AV| 婷婷色色丁香| 有码一区二区三区| 日本黄色三级片内射| 99热这里只有精品5| 婷婷五月丁香欧洲| 五月丁香六月激情| 久久九九免费视频| 五月草影视| 五月丁香激情综合六月涩涩爱| 婷婷 伊人 久久| 99艹精品在线观看| 色婷婷狠狠久久综合五月| 97 A I色色| 五月丁香六月香香蕉| 99热综合| 狠狠人人婷婷| 久久精彩免费视频| 俺去也综合| 婷婷五月中文在线视频| 色婷婷丁香| 丁香五月激情无码视频| 色婷婷五月综合网| 亭亭五月激情亚洲在线| 亚洲噜色| 99热中国| 亚洲天堂aaa| 激情内射p| 色99热| 超碰狠狠色| 激情婷婷狠狠干| 大香蕉院线| 婷婷综合六| 丁香五月天堂网| 九九热这里只有精品一| 色情五月天视频网| 色播婷婷大香蕉| 中字幕视频在线永久在线观看免费| 九九五月天| 综合色99| 5月丁香啪啪啪| 丁香五月天综合| 青青草五月天| 777米奇影视第四色| 中国女人内射6XXXXX| 日本不卡高字幕在线2019| 国产午夜精品一区二区三区四区| 日韩操人| 婷婷五月天色色| 风流少妇A片一区二区蜜桃| 国外亚洲成AV人片在线观看| 九九热123| 99久99久| 一起草无码| 超碰在线国产| 成人婷婷桔色| 久久婷婷五月综合伊人| 五月婷婷激情网| 日本WWW九九九| 美欧成人视频| 九九精品热| 婷婷五月 丁香六月| 五月丁香在线偷拍视频| 色色色综合色| 亚洲另类电影| 国产乱妇无乱码大黄AA片| 第九色区AV在线| Caop在线| 五月天狠狠网站| 五月婷婷六月激情网| 五月婷婷色激情| 丁香九月综合激情| 九九热精品| 无遮羞AV| 百度4399有码精品V在线观看| 久9草在线观看视频| 亚洲视频操| 五月综合亚洲色| 丁香五月婷婷俺也要去| 欧美影院| 久久久久久久人妻| 九九re视频在线视频| 67194成I人在线观看线路1| 丁香狠狠| 99九九视频| 激情色色| 大香伊人婷婷| 伊人五月天日日夜夜久久久天天| 激情综合4月| 国产一二三四五六七八视频| 六月激情久久| 婷婷午夜| 欧美日本高清视频99| 噜噜色天天开心| 激情五月婷婷综合色播小说| 91精品婷婷国产综合久久| 婷婷色五月91啪啪| 久久资源网五月婷| 婷婷综合在线观看视频| 另类激情五月| 91色性感五月婷婷丁香| 欧美久久婷婷| 深爱激情九九五月天| 激情五月久久| 国产亚洲精品久久久久久郑州| 日本精品人妻无码77777| 欧美偷偷操| 婷婷五月综激情| 亚洲精品久久久久久久久久吃药| 99视频这里有精品免费观看| 天天日夜夜爽| 97在线观视频免费观看| 婷婷色九月| 五月丁查人人| 五月丁香婷婷色色色| co超碰在线观看| 91久久免费| 99精品视频在线观看| 婷婷综合在线网| 热久久99视频| 久久久这里有精品| 丁香五月天欧美成人| 91青娱乐青青草| 久久人妻视频| 日本免费91| 五月婷六月丁香| AV性爱网| 96精品久久久久久久久| 九色视频这里只有精品| 狠狠干综合| 大香蕉啪啪啪啪啪啪| 婷婷五月天天| 99re思思热久久| 色99久草在线| 日批在线看| 色色丁香五月天| 丁香婷婷久久综合在线| 亚洲综合五月天综合| 国产亚洲在线观看| 婷婷五月精品中文字幕| 五月婷精品| 嫩草AV久久伊人妇女超级A| 、激情六月天| 色婷婷亚洲| 丁香五月激情网| 日本色色视频| 色婷婷精品视频在线播放| 狠狠色狠狠干| 色欲色香综合网| www.99热这里精品| 亚洲AV色婷婷人禽五月天| 免费看欧美成人A片无码| 99er这里只有精品视频| 激情综合啪啪| 丁香五月九九| 天天日,天天插| 亚洲精品第一国产综合亚AV | 99热日韩| 亚洲网站观看视频| 99干视频| 色色色五月婷| 99热 日韩| 五月丁香激情六月| 激情综合丁香六| wwccc久久久| 亚洲精品又粗又大又爽A片 | 丁香五月天天哦| 这里只有精品免费视频| 久99| 91色综合| 丁香六月啪| 亚洲激情综合网| 激情四射网| 深爱激情五月婷婷| 亚洲区,视频区,视频区免费| 丁香五月天激情| 亚洲色图五月丁香| 91久久综合| 99热最新| 九热电影av| 色五月亚洲| 大香蕉 伊人夜| 99在线视频精品| 99热综合网| 婷婷五月综合网| 97碰碰视频在线观看免费| 91九色熟女| 99日本黄站| 五月婷婷影| 五月婷婷激情综合在线| 乱岳熟女50岁| 欧美综合五月丁香六月婷| 99性爱| 蜜乳A√| 深夜婷婷 丁香| 色女伊人| 9热在线观看| 一起草Av| 激情五月天噢美| 精国产品一区二区三区A片| 五月婷丁香花| 成人无码免费一区二区中文| 丁香六月亭亭久久综合| 大香蕉九九热| 99热18| 激情深爱婷婷网| 伊人丁香在线| 久久五月天综合| 91日本在线| 九九色色| 五月丁香无码| 欧美乱码国产一级A片| 九九色色网| 色婷丁香五月| 97久久综合网| 激情五月天视频| 久久婷婷青草五月天| 国产午夜成人AV在线播放| 99日这里只有精品| 色综合九九色综合88| 激情丁香五月天| 玖玖资源天天无码| 夜夜躁婷婷AV| 91Chinese在线| 99色最新在线视频网站| 久久99精品久久久久久噜噜| 色婷婷综合网| 99热在线中文字幕| 婷婷婷久久| 性色婷婷| 九月婷婷综合八月丁香在线观看 | 日韩色五月| 日本久久视频| 午夜69成人做爰视频| 色五月激情婷婷| 国产免费AV网站| 激情综合丁香六| 色五月婷婷91| 蜜乳人妻一区二区三区| 婷婷五月激情图片| 五月丁香操亭亭网| 思思热国产视频| 国产九月婷婷| 99在线精品观看99| 人人爽欧美婷婷久久久五月丁香| www,久久久人人| WWW.婷婷| 日日操天天| www.激情| 丁香五月婷婷综合激情啪啪啪| 欧美美美女性色视频| 成人色五月天婷婷| 婷婷九月丁香中文| 99爱这里只有精品免费视频| 五月丁香婷婷俺| 91精品久久久久久77777| 五月婷在线| 色婷婷综合网| 五月婷婷综合色啪| 色碰干| 婷婷五月天免费99| 五月噜噜噜色综合| 国产亚洲av片| 超碰在线91| 青青草原福利在线| 亚洲小视频免费观看| 99国产欧美视频| 久碰视频| 色偷偷色婷婷| 婷婷五月天综合小说网| yellow视频在线观看91| 色五月婷婷网| 91肏| 五月婷婷综合精品| 五月综合激情图片 | 日日干综合| 久久综合播放| 狠狠操狠狠色| 天天日天天舔| 五月天综合激情网| 五月婷婷色激情| 五月色情婷婷开心五月色情| 色噜噜狠狠色综合成人99| 91久女| 婷色五月天| 中文字幕不卡+婷婷五月| 久久久久久五月天| 婷婷五月天国产手机在线视频观看| 国产九月婷婷| 777精品久无码人妻蜜桃| 91超级碰在线视频| 99热6精品| 色高清无码视频| 这里只有精品视频222| 99ri视频在线播放| 99热这里精品| 丁香五月综合婷婷| 丁香五月婷婷香| 亚州精品久久久久AV无码| 婷婷激情五月天天天开心| 成人版视频在线观看| 天天透天天干| 五月婷视频| 亚洲精品久久久久久久久久吃药| 色情五月综合婷婷| 色婷婷久久综合丁香五月| 激情伊人六| 婷婷欧美激情综合| a在线观看| 日韩在线视频网站| 婷婷九月综合| 99日精品视频| 99精品97| 97久久五月丁香婷婷| 综合亚洲AV| 久久久久久18| 日本久碰| 热99热久| 婷婷九九色| 蜜乳AV成人| 高清a片基地| 5月丁香美女影院| 国产精品久久久爽爽爽麻豆色哟哟| 五月丁香六月情亚洲| 激情五月丁香激情综合网| 五月婷庭丁香在线| 亚洲XX日本| 欧美综合婷婷欧美综| 国产永久一二一起草| www.99久| 色噜噜综合网| 五月天日日操夜夜操| 五月丁香婷婷在线| 丁乡久久| 伊人狠狠丁香婷婷综合尤物| 五月丁香婷草| 九月激情综合| 久9精品视频在线| 久草免费福利视频| 亚洲色情网站| 婷婷激情五月天激情| 99热这里只有精品66| 大香蕉欧美在线| 婷婷六月天| 人妻视频在线| 色综合久久天天综合网| 五月婷婷在线综合| 99免费在线视频| 色久影院| 五月婷婷天| 国产成人+综合亚洲+天堂| 日本久久网| www狠狠| 九九9久九9国产视频| 91日在线视频| 99久久超级| 婷婷丁香黄色| 伦乱人妻| 9l视频自拍9l九色9l成人| 久久人人超| 99惹在线精品免费观看| www.色婷婷。com| 日本在线噜噜| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 欧美日韩成人高清在线| 婷婷五月综激情| 天天狠狠干| 欧美日韩成人在线网| 伊人久久99| 婷婷久草| 嫩草免费视频| 色天堂A| 国产精品社区| 天天肏天天插| 婷婷开心久久| 中文字幕人妻在线| 亚洲超碰在线| 99久久婷婷综合| 骚五月婷婷| 国产免费一区二区三区三州老师F1F1.CC| 婷婷干六月综合旧址| www.五月天婷婷| 国产夫妻操逼内射视频| 天天天天做夜夜夜夜做| 丁香五月天资源网| 色屌丝中文字幕| 亚洲综合色婷| 日本WWW九九九| 开心婷婷五月激情网小说| 五月丁香婷婷中文网| 99热免费| 操碰97| 色五月大| 热热久久精品视频| 久久成人精品视频| 欧美成人va| 色一情一乱一乱一区91Av| 五月婷久久综合| 色香蕉影院| 久久久久久综合五月婷婷| 伊人久久大香线蕉av一区| 图片区 小说区 区 亚洲五月| 偷偷与邻居做爰完整视频| 成片免费观看大全| 亚洲精品视频在线| 色婷婷社区| 26UUU欧美| 成人中文网| 色五月偷偷| 青青草六月丁香| 激情综合在线观看| AV中文网| 久久久91| 丁香五月婷婷成人网| 庭庭久久内射| 久久这里只有精品视频15 | 在线五月色播| 天天日天天插| 亚洲乱码精品久久久久..| 久久婷婷的综合色丁香五月| 五月天色狠狠| 色五月五月婷婷| 久久久久久久人妻| 精品99在线看| 亚洲婷婷乱乱丁香| 色色色色色网| 色婷婷AⅤ| 五月丁香激情综合欧美| 婷婷涩涩五月天| 亚洲综合色成丁香五月色| 另类图片天天影视在线观看| 亚洲aV写真天天综合网久久 | 99在线观看| 岛国AV网| 中日韩美欧成人一区二区精品在线| 五月婷婷黄网站大全| 99日逼视频| 亚洲综合在线丁香五月| 久9热| 性生活视频98791| 99热这里只有精品国产精品| 欧美一级色| 成人 视频免费观看网站| 色婷婷丁香五月综合| 最近中文字幕大全免费版在线 | 日韩日比视频在线| 色婷婷五月丁香在线观看| 成人短视频在线| 9久热在线视频| 婷婷舔| 女人天堂AV| 狠狠色噜噜狠狠亚洲A∨| 婷婷久久六月费| 夜夜谢天天干| 99热在线精品播放| 天天操婷婷| 婷婷基地成人五月天| 五月天婷爱综合| 日本天天色| 日韩性视频| 久久视频婷婷| 2021日韩无码| 婷婷五月天开心激情网| 久久黄色片| 天天做天天要天天爽| 开心激情综合| 91欧美日韩综合| WWW.桔色成人.COM| 色97啪啪| 五月丁香久久精品在线观看| 久久9久久| 热99.com婷婷| 午夜无码精品色综合久久| www.色综合| 日本99久久| 色吧婷婷| 五月婷婷丁香大陆免费| 日日操日日爽| 色欲色欲久久宗合网| 久久五月丁香激情综合| 国产精品色色| 六月丁香婷婷视频综合在线观看| 这里只有精品在线播放| 九九碰九九爱97超碰| 日日骑夜夜撸| 色丁香五月婷婷| 天天狠狠婷婷在线| 99爱这里只有精品免费视频| 久久网日本| 色婷五月天| 黄色片区子| 久久综合五月天| 天天久综合网永久入口17v| AV在线免费网站| 色综合久久综合中文综合网| 91日本在线| 婷婷五月亚洲综合| 亚洲中文乱字字幕在线永久| 五月开心婷婷极品激情| av狠狠操| 色婷婷成人影片| http:色情日本com| 久久成人精品视频| 婷婷五月性感| 26uuu最新地址| ...婷婷五月综合不卡,国产在线手机| 欧爱综合视频| 五月婷婷综合在线亚洲视频| 开心五月丁香啪| 亚洲人人操| 蜜乳A√| 99在线看视频| 婷婷无码五月天| 日本激情91| 99爱在线精品视频免费观看| 大香蕉手机视频| 色综合天天| 综合激情伊人影视在线| 丁香六月婷婷久久综合| 五月婷婷视频啪啪美女| 青青久久五月| 欧美五月丁香| 五月天开心色情网| 在线只有精品| A色色| 久久99免费视屏| www.精品99| 五月丁香网视频| 国产亚洲成AV人片在线观黄桃| 色情婷婷| 丁香婷婷91在线观看视频| 丁香婷婷六月激情文学 | 日韩色五月| 国产白丝在线一区| 五月天六月色| 亚洲综合五月天综合| 综合色、色综合| 五月天影院| 久婷婷色| 天天插天天爽| 爱婷婷久久视频| 99在线热视频| 亚洲操B| 99视频色在线观看| 久久久久久99日本| 久久久精品人妻| 久久伊人大香蕉| 思思久久久婷婷| 伊人五月综合网| 婷婷成人网五月天| 开心婷婷五月| www,天天干| 人妻自慰在线| 99九九这里有免费视频| www.91婷婷| 婷婷成人综合免费视频| 丁香五月婷婷av影院| 丁香五月激情网| 五月婷婷丁香五月亚洲色| se.久久视频在线观看| 亚州操人在线视频| 色久五月天| 久99热在线观看| 内射干少妇亚洲69XXX| 婷婷五月六月丁香| www.粉嫩av.com| 亚洲精品另类| 日韩无码色色| 涩婷婷五月天| 激情 五月 婷婷 丁香| 丁香婷婷婷婷十二月在线观看视频| 五月丁香综合网| 丁香五月婷婷综合视频| aaaa.黄| 99啪啪| 华人在线免费| 狠狠香婷婷五月| 碰人人97| 无码99| 久久久精品色色色| 激情综合五月婷| 久久香蕉婷婷| 婷婷97狠狠成人网站| 五月天偷拍| 五月丁香六月婷婷免费视频| 久久久久亚洲AV无码网影音先锋| 国产无套精品一区二区| 五月婷婷之美女图片| 精品99这里有| 国产免费一区二区三州老师F1…… | 丁香五月天堂亚洲社区| 激情小说五月天| 中文国产五月天| 亚洲国产色婷婷| 九九99精品视频| 91久女| 九九色播五月丁香| 激情网开心网| 国产精品久久99| 九月影院義母在线播放| 丁香五月亚洲综合| 日本片日本片祼观看网站在线看中文版网页在线看 | 影音先锋 萱萱| 日本婷婷| 免费播放片大片| 欧美激情-区二区三区| 五月丁香六月婷婷综合在线| 啪啪 综合网| 玖玖婷婷免费| 五月综合激情|