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

ARTICLE DETAIL

資訊詳情

深耕商務建站與企業(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)場。適合正在做服務端開發(fā)、需要處理線上性能問題或者準備面試想真正搞懂 JVM 工作原理的人。1. 先把 JVM 內(nèi)存模型捋直調(diào)優(yōu)才有坐標系我見過太多“調(diào)優(yōu)”是這么做的上來就-Xmx4g然后看 GC 日志里 Full GC 次數(shù)少了就完事。這種做法能碰對是運氣碰不對就是埋雷。真正動手前必須把內(nèi)存模型這張地圖在腦子里畫出來否則你連參數(shù)改的是哪塊區(qū)域都不知道。1.1 運行時數(shù)據(jù)區(qū)到底分幾塊JDK8 改了什么JVM 在運行時會把自己管的內(nèi)存切成幾塊每塊職責不同回收策略也完全不同。按線程私有和線程共享來分理解起來最快。線程私有的三塊程序計數(shù)器記錄當前線程執(zhí)行到哪條字節(jié)碼指令。唯一不會拋 OOM 的區(qū)域占用的內(nèi)存可以忽略不計。虛擬機棧每個方法調(diào)用創(chuàng)建一個棧幀棧幀里放局部變量表、操作數(shù)棧、動態(tài)鏈接、方法出口。平時說的“棧溢出”絕大多數(shù)就是這里由-Xss控制單個線程棧大小。本地方法棧給 native 方法用的HotSpot 里和虛擬機棧合并實現(xiàn)一般不單獨關心。線程共享的兩塊堆對象實例和數(shù)組的主要存放地也是垃圾回收的主戰(zhàn)場。調(diào)優(yōu) 90% 的參數(shù)都在動這塊。方法區(qū)存放類元信息、常量、靜態(tài)變量、即時編譯后的代碼緩存。JDK7 及以前叫永久代PermGen由 JVM 堆管理JDK8 開始改成元空間Metaspace挪到了本地內(nèi)存由操作系統(tǒng)管。這個改動的影響被嚴重低估了。以前永久代容易OutOfMemoryError: PermGen space因為類加載多了會把堆里那塊固定區(qū)域撐爆JDK8 換成元空間之后元空間默認不設上限能一直吃到操作系統(tǒng)內(nèi)存耗盡報錯變成OutOfMemoryError: Metaspace而且更容易連帶觸發(fā)機器層面的不穩(wěn)定。所以-XX:MaxMetaspaceSize在 JDK8 里是必須顯式設置的參數(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默認開啟線程會先在 Eden 里劃一小塊私有區(qū)域避免多線程分配時爭搶指針。這塊優(yōu)化不顯眼但對高并發(fā)分配的影響很大。Eden 滿了觸發(fā)Minor GC。存活對象被復制到 Survivor 區(qū)From 到 To 來回復制對象年齡加 1。年齡達到閾值后晉升老年代閾值由-XX:MaxTenuringThreshold控制Parallel 和 G1 下默認是 15。這里有個很多人不知道的機制動態(tài)年齡判定。不是非得熬到 15 歲才能晉升。如果 Survivor 區(qū)中某一批同齡對象的總大小超過了 Survivor 空間的一半那么年齡大于等于這批對象年齡的所有對象會直接晉升老年代。這就是為什么有時候你把MaxTenuringThreshold調(diào)到 15實際對象三四歲就進老年代了——參數(shù)沒生效是動態(tài)判定提前觸發(fā)了。還有兩個特殊通道大對象直接進老年代。-XX:PretenureSizeThreshold可以設置這個閾值但它只對 Serial 和 ParNew 生效Parallel Scavenge 不認這個參數(shù)G1 里則用 Humongous Region 處理一個對象超過單個 Region 大小的一半就算大對象。長期存活對象。老年代滿了觸發(fā) Full GC這個代價通常比 Minor GC 高一到兩個數(shù)量級。反向看回收一個對象要經(jīng)過兩次標記第一次可達性分析從 GC Roots 出發(fā)掃描引用鏈不可達的對象被標記第二次檢查對象是否重寫了finalize()且未被調(diào)用過如果是就放進 F-Queue 等待執(zhí)行執(zhí)行完還沒被引用才真正回收。finalize()這個方法在實際項目里基本不該用它的執(zhí)行時機不確定還容易拖慢 GC。1.3 一次 Minor GC 的現(xiàn)場還原假設堆是 4G用 Parallel Scavenge默認新生代和老年代是 1:2那新生代約 1.33GEden 和兩個 Survivor 按 8:1:1 分Eden 約 1.06G每個 Survivor 約 133M。當 Eden 被填滿觸發(fā) Minor GC暫停所有應用線程Stop-The-World。從 GC Roots 出發(fā)標記 Eden 和當前 From Survivor 里的存活對象。把存活對象復制到 To Survivor年齡 1。清空 Eden 和 From Survivor然后 From 和 To 角色互換。關鍵點來了如果 To Survivor 裝不下所有存活對象多余的對象會通過“分配擔?!睓C制直接進老年代。這是最隱蔽的問題來源之一很多人看到老年代莫名其妙漲得快其實就是 Survivor 太小導致的提前晉升。提示如果你觀察到 Minor GC 之后老年代占用明顯上升先別急著調(diào) GC 策略先把-XX:SurvivorRatio和新生代大小重新算一遍。Survivor 太小是提前晉升最常見的原因。2. JDK8 里的垃圾回收器怎么挑JDK8 這個版本的好處是選擇多壞處也是選擇多。很多人上手就查“哪個回收器最好”這個問題問法本身就錯了——沒有最好的只有適配當前內(nèi)存規(guī)模、延遲要求和吞吐要求的。2.1 分代收集器的組合關系與適用邊界先搞清楚哪些回收器能配對。新生代和老年代各有各的實現(xiàn)必須成對使用。新生代回收器老年代回收器啟用方式特點SerialSerial Old-XX:UseSerialGC單線程客戶端模式或小內(nèi)存場景ParNewCMS-XX:UseConcMarkSweepGC低延遲響應優(yōu)先Parallel ScavengeParallel Old-XX:UseParallelGC吞吐優(yōu)先JDK8 默認G1自身管理整堆-XX:UseG1GC可預測停頓大堆首選補充一點容易搞混的JDK8 的默認回收器在服務端機器上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的核心目標是吞吐量也就是用戶代碼運行時間 / (用戶代碼時間 GC 時間)。它的設計取向是少停頓次數(shù)、多干活適合后臺批處理、離線計算、數(shù)據(jù)同步這類對單次停頓不敏感、但對整體算力敏感的場景。可調(diào)參數(shù)主要是兩個-XX:MaxGCPauseMillis設置最大停頓時間-XX:GCTimeRatio設置吞吐量目標默認 99即 GC 時間不超過 1%。注意MaxGCPauseMillis調(diào)小之后JVM 會自動縮小新生代代價是 GC 更頻繁、吞吐量下降。這是個蹺蹺板不能兩頭都要。CMS是 JDK8 時代低延遲的代表目標是縮短停頓代價是犧牲吞吐量并占用額外 CPU。它把老年代回收拆成四個階段初始標記STW很短、并發(fā)標記、重新標記STW、并發(fā)清除。最長的并發(fā)標記和并發(fā)清除階段是和應用線程同時跑的所以停頓短。但 CMS 有幾個硬傷這也是它后來被 G1 取代的原因浮動垃圾并發(fā)清理期間應用還在產(chǎn)生新垃圾這些只能等下一次。所以 CMS 不能等老年代滿了才動手默認老年代使用到 92% 就觸發(fā)-XX:CMSInitiatingOccupancyFraction通常要調(diào)到 70 到 80 留出余量。并發(fā)模式失敗Concurrent Mode Failure如果在并發(fā)清理期間老年代就被填滿了CMS 會退化成 Serial Old 做一次單線程 Full GC那個停頓就是災難級的。這是 CMS 線上事故的第一大來源。內(nèi)存碎片CMS 用的是標記-清除不做壓縮跑久了老年代全是碎片大對象分配不下又觸發(fā) Full GC。G1是 JDK8 里唯一兼顧吞吐和停頓、并且能處理大堆的通用回收器。JDK9 之后它成了默認但 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 需要精細調(diào)參G1 相對省心。堆大于 8G直接 G1別猶豫。CMS 在這個量級上的碎片和并發(fā)失敗風險太高。堆超過 16G、停頓要求 10ms 級JDK8 里 G1 也吃力這時候應該考慮升級 JDK 版本用 ZGC。2.3 G1 的 Region 模型與停頓預測原理G1 的參數(shù)里有個容易被忽略的-XX:G1HeapRegionSize。如果不設JVM 會自動推算規(guī)則大致是把整堆除以 2048 得到一個目標值然后向上取到 2 的冪且限制在 1M 到 32M 之間。比如 4G 堆4G/2048 2M那 Region 就是 2M16G 堆是 8M32G 堆是 16M。這個值為什么重要因為它決定了大對象的標準。超過 Region 一半的對象會被標記為 Humongous直接分配在連續(xù)的 Region 里且回收時機比較尷尬——如果它被判定為全垃圾會立刻回收否則要等并發(fā)標記周期結(jié)束。所以如果應用里有大量 1M 到幾 M 的緩存對象Region 設小了會產(chǎn)生一堆 HumongousGC 效率反而下降。我遇到過一個案例16G 堆沒設 Region 大小推算出來是 8M但業(yè)務里有大量 6M 左右的圖片緩存對象每個都觸發(fā) Humongous 分配GC 日志里全是Humongous字樣調(diào)大-XX:G1HeapRegionSize16m之后問題就沒了。G1 的停頓預測靠的是-XX:MaxGCPauseMillis默認 200ms。這里必須提醒一句這個值是目標不是承諾。G1 通過歷史回收數(shù)據(jù)估算哪些 Region 值得回收選出能在目標時間內(nèi)搞定的集合Collection Set。如果你把目標設成 10msG1 會幾乎收不動老年代最后堆積到并發(fā)模式失敗。經(jīng)驗值3 到 8G 堆設 100 到 200ms8G 以上設 200ms 就夠了別貪心。3. 參數(shù)怎么定從機器規(guī)格倒推 JVM 參數(shù)參數(shù)不是背下來的是算出來的。而且必須從機器規(guī)格和容器限制倒推不能拍腦袋設個大值。3.1 堆內(nèi)存、元空間、線程棧的賬要算清楚先說默認值很多人不知道默認堆是多少。JDK8 里-Xms默認是物理內(nèi)存的 1/64-Xmx默認是 1/4。真跑在生產(chǎn)上8G 的機器默認堆上限只有 2G而且初始堆小會經(jīng)歷一段不斷擴堆的過程每次都觸發(fā) Full GC。關于-Xms和-Xmx是否要一樣我的觀點很明確生產(chǎn)環(huán)境必須設成一樣。堆動態(tài)擴縮容本身是有代價的而且初始堆小會在啟動階段頻繁 GC。唯一例外是你確定這個應用是低頻的、內(nèi)存占用極小的邊緣服務那可以省點內(nèi)存。算賬的順序是這樣的以一臺 8G 內(nèi)存、8 核的機器為例第一步確定 JVM 總的可用內(nèi)存上限。這臺機器如果只跑這一個 Java 進程可以給到 6G留 2G 給操作系統(tǒng)和可能的外部依賴。如果是容器那容器 limit 才是硬邊界。第二步從這 6G 里扣掉堆外開銷元空間按類加載數(shù)量估。一般業(yè)務系統(tǒng) 200 到 300M 足夠用 Spring 全家桶加上動態(tài)代理的大項目給 512M 也是合理的。設-XX:MetaspaceSize256m -XX:MaxMetaspaceSize512m。直接內(nèi)存-XX:MaxDirectMemorySize256m用 Netty 或者大量 NIO 的項目要按實際連接數(shù)和緩沖區(qū)大小估算。線程棧-Xss默認 1M如果線程數(shù)峰值 500那就是 500M。線程數(shù)乘以棧大小是實打?qū)嵉拈_銷這就是為什么-Xss512k在這種場景下很有必要。代碼緩存-XX:ReservedCodeCacheSize默認 240MJDK8JIT 編譯的代碼放這里一般夠用。第三步剩下的才是堆。6G 減掉 512M 元空間、256M 直接內(nèi)存、512M 線程棧、240M 代碼緩存大約 4.5G那-Xmx4g是個穩(wěn)妥的取值。第四步劃分新生代。如果不用 G1新生代大小用-Xmn或-Xmn配合-XX:NewRatio控制。NewRatio是“老年代 : 新生代”的比值默認 2也就是新生代占整堆 1/3。對于短生命周期對象多的 Web 應用可以把比例調(diào)到 1:1 甚至新生代更大減少晉升壓力。注意-Xmn一旦顯式設置-XX:NewRatio就失效了而 G1 里-Xmn會被忽略需要用-XX:G1NewSizePercent和-XX:G1MaxNewSizePercent默認 5% 和 60%來控制新生代占比。這幾個參數(shù)互相覆蓋的關系是調(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輸出詳細日志包含各代容量變化PrintGCDateStamps加絕對時間戳排查問題必須要有PrintGCTimeStamps加相對 JVM 啟動的時間PrintHeapAtGC在每次 GC 前后打印堆布局量很大一般排查期開穩(wě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 三檔常見規(guī)格的參數(shù)模板下面這三套是我自己在項目里反復用過的可以直接作為起點再根據(jù) GC 日志微調(diào)。4C8G堆 4GWeb 服務延遲敏感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默認 45意思是老年代占用達到整堆 45% 就啟動并發(fā)標記周期。如果日志里經(jīng)常出現(xiàn)to-space exhausted或者Evacuation Failure說明這個值太高標記得太晚要往下調(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默認是按 CPU 核數(shù)算的約等于核數(shù)超過 8 核時按公式縮減顯式設置成 8 是為了避免容器里 CPU 配額識別不準導致線程數(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ā)線程只在字符串重復度高的場景比如大量 JSON 解析才值得開。ConcGCThreads是并發(fā)標記線程數(shù)默認是ParallelGCThreads/4設太大反而搶業(yè)務 CPU。4. 工具鏈命令行四件套加 Arthas 的組合拳工具不在多在于知道什么時候用哪個。我的習慣是現(xiàn)場診斷先用命令行四件套需要動態(tài)追蹤再上 Arthas需要看趨勢圖才開 VisualVM。4.1 jps、jstat、jmap、jstack 的準確用法與坑jps用來找進程號最基礎的入口。jps -l # 輸出主類全名 jps -lv # 加上 JVM 參數(shù)確認啟動參數(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是總耗時。判斷標準很簡單FGC 一直漲就是有問題正常穩(wěn)定的服務 FGC 應該長期不變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 # 導出堆快照第一個坑jmap -histo:live帶live會先觸發(fā)一次 Full GC 再統(tǒng)計線上執(zhí)行就是一次幾十秒的停頓除非萬不得已別在生產(chǎn)上用。用jmap -histo不帶 live 時統(tǒng)計的是所有對象包括待回收的會虛高但沒停頓風險先粗看足夠了。第二個坑jmap -dump在堆大的時候非常慢而且會 STW。8G 堆導出一次可能要一兩分鐘甚至更久業(yè)務直接受影響。正確的做法是配置-XX:HeapDumpOnOutOfMemoryError讓它自動在 OOM 時 dump或者從負載均衡摘掉節(jié)點再手動導。jstack用來看線程棧jstack -l 12345 /tmp/stack.log-l會額外打印鎖信息Locked ownable synchronizers排查死鎖必須加。想找死鎖也可以直接用jstack輸出后搜Found one Java-level deadlockJVM 會自動檢測并打印出來。排查 CPU 飆高的標準流程是先用top -Hp pid找出占 CPU 最高的線程 ID把它轉(zhuǎn)成十六進制再到 jstack 輸出里搜nid0x加那個十六進制值定位到具體代碼行。top -Hp 12345 printf %x\n 12346 # 假設高 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 # 導出堆快照 trace com.xxx.Service method # 追蹤方法內(nèi)部調(diào)用耗時 watch com.xxx.Service method {params, returnObj} -x 2 # 觀察入?yún)⒑头祷刂祎hread -b這個命令救過我好幾次它能直接告訴你哪個線程持有鎖不放導致別的線程全卡住了比翻 jstack 快得多。但trace和watch在高頻方法上有明顯性能損耗用完一定要stop掉我見過有人忘了 stop第二天發(fā)現(xiàn)接口 P99 漲了三倍。dashboard里還有個細節(jié)值得看GC 那一欄會顯示各代的使用率曲線和 GC 次數(shù)。如果老年代使用率穩(wěn)定在 90% 以上且 FGC 緩慢增長就是內(nèi)存不夠或者有輕微泄漏的信號。4.3 一次 Full GC 頻繁的完整排查記錄說個真實場景。一個訂單查詢服務8G 堆用 Parallel上線兩周后監(jiān)控報 FGC 每小時從 0 漲到 20 多次每次約 1.5 秒高峰期接口超時。排查步驟第一步jstat -gcutil看趨勢。確認 YGC 正常每秒幾次每次 20ms 左右但老年代占用在 GC 后從 40% 一路爬到 95%然后 Full GC 打回 40%。GC 后老年代能回落到 40%說明沒有嚴重泄漏只是對象產(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顯式設為 15 防止被過早抬高。老年代從 5.3G 縮小到 4.6G。第五步觀察。改完后 FGC 從每小時 20 多次降到每天 1 到 2 次YGC 頻率略升但單次耗時沒變整體 P99 從 800ms 降到 120ms。這個過程里最關鍵的一步其實是第二步——加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、反射、腳本引擎設 MaxMetaspaceSize檢查是否每次調(diào)用都創(chuàng)建新類加載器Direct buffer memory直接內(nèi)存NIO 緩沖區(qū)未釋放、Netty 池配置不當設 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)進程被 OOM Killer 殺掉容器內(nèi)存配額不足或堆外內(nèi)存超限Compressed class space元空間壓縮類指針空間耗盡調(diào)-XX:CompressedClassSpaceSize這里重點說兩個最容易被誤判的。GC overhead limit exceeded經(jīng)常被當成“內(nèi)存不夠”于是加堆結(jié)果只是把崩潰時間推遲。它的本質(zhì)是垃圾產(chǎn)生速率超過了回收速率加堆不能降低產(chǎn)生速率。正確姿勢是先用jmap -histo看對象分布如果是某個業(yè)務對象數(shù)量異常就去查對應的業(yè)務邏輯如果是HashMap$Node或者byte[]占了大頭八成是某個緩存容器沒有上限。unable to create new native thread的詭異之處在于堆內(nèi)存可能還很空但就是創(chuàng)建不了線程。原因通常是三種一是操作系統(tǒng)ulimit -u限制了單用戶進程數(shù)二是線程棧 1M 乘以線程數(shù)吃掉了大量內(nèi)存堆又開得大兩邊一起把物理內(nèi)存擠爆三是線程池創(chuàng)建了太多核心線程。我遇到過Executors.newCachedThreadPool()在突發(fā)流量下創(chuàng)建了上萬個線程的情況改成有界隊列的ThreadPoolExecutor之后就好了。順帶說一句線程池和 JVM 的關系線程池里每個線程都要占用一份??臻g所以最大線程數(shù)乘以-Xss是必須從內(nèi)存預算里扣掉的。有人算過“最大線程數(shù) JVM 剩余可用線程”這個思路是對的但實際約束往往來自操作系統(tǒng)限制而不是堆內(nèi)存。合理的做法是把最大線程數(shù)控制在幾百這個量級配合有界隊列和合適的拒絕策略。5.2 CPU 飆高、GC 停頓、內(nèi)存泄漏怎么查CPU 飆高的三種典型模式第一種業(yè)務線程在跑密集計算或者死循環(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很高一般是鎖競爭嚴重。用jstack搜BLOCKED狀態(tài)的線程或者用 Arthas 的thread -b。GC 停頓的排查要區(qū)分是 Young GC 還是 Full GC 的停頓。判斷方式看PrintGCApplicationStoppedTime的輸出里面會列出每次 STW 的持續(xù)時間。如果 STW 時間遠大于 GC 日志里標注的 GC 時間那說明停頓另有原因——可能是在做偏向鎖撤銷、類加載、或者 JIT 反優(yōu)化。這個坑很深見過一次線上停頓 300ms 但 GC 日志顯示只停了 20ms 的情況最后查出來是 JVM 在做大量偏向鎖批量撤銷用-XX:-UseBiasedLocking關掉偏向鎖才解決。內(nèi)存泄漏的定位流程我固定這么走先用jstat -gcutil觀察老年代在 Full GC 后能否回落。能回落說明只是壓力大不能回落才是泄漏。然后用jmap -histo看對象排名對比兩次相隔幾分鐘的輸出看哪個類的實例數(shù)在持續(xù)增長。這一步不需要 dump 文件開銷小適合線上。鎖定可疑類之后再找個低峰期導 heap dump用 MAT 或者 JProfiler 打開看這個類的 GC Roots 引用鏈。MAT 的Dominator Tree視圖能直接告訴你誰占內(nèi)存最多Path to GC Roots能告訴你為什么這個對象回收不掉。常見的原因就那么幾個靜態(tài) Map 只增不減、ThreadLocal 用完沒 remove、監(jiān)聽器注冊后沒注銷、連接池/線程池未關閉。注意ThreadLocal 泄漏是重災區(qū)。線程池里的線程是復用的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。默認堆上限通常只有 750M 到 1G對于大型項目多模塊、大量索引根本不夠。-Xms1g -Xmx4g -XX:ReservedCodeCacheSize512m -XX:UseG1GC -XX:SoftRefLRUPolicyMSPerMB50 -XX:CICompilerCount2ReservedCodeCacheSize調(diào)大到 512M 是因為 IDEA 的索引和插件代碼量巨大默認 240M 經(jīng)常觸發(fā) JIT 代碼緩存滿表現(xiàn)就是 CPU 突然飆高、卡頓日志里能看到CodeCache is full的提示。SoftRefLRUPolicyMSPerMB50讓軟引用更快被回收減少內(nèi)存壓力。注意如果你開了大量插件導致 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 及以后默認開啟-XX:UseContainerSupport能正確讀取容器限制。更早的版本要么升級要么老老實實手動寫死-Xmx。即使在 8u191 之后容器里也建議顯式設堆。因為在容器里堆外內(nèi)存元空間、直接內(nèi)存、線程棧、JVM 自身都算在容器配額內(nèi)堆設成 limit 的 70% 到 75% 是比較穩(wěn)的比例剩下的留給堆外。見過太多“容器 limit 4G堆設 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 遠大于 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 日志只關心兩個有 STW 的階段CMS Initial Mark和CMS Final Remark。這兩個的耗時才是真正影響業(yè)務的。中間的concurrent-mark、preclean、sweep都是并發(fā)的耗時再長也只影響吞吐。如果 Final Remark 時間很長通常是新生代對象多導致重新標記工作量大可以調(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 關鍵指標與判讀閾值我整理了一張自己常用的閾值表長時間越界就要動手了。指標獲取方式健康范圍越界含義YGC 頻率jstat 里 YGC 變化率每秒小于 5 次新生代太小或?qū)ο蠓峙渌俾蔬^高YGC 單次耗時YGCT / YGC小于 50ms存活對象太多Survivor 不夠FGC 頻率jstat 里 FGC 變化率每天少于 2 次老年代不夠或有泄漏FGC 單次耗時FGCT / FGC小于 1s堆太大或回收器選擇不當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ù)下跑。我一般的做法是準備一組參數(shù)組合在同一臺機器、同一份壓測流量下逐個跑收集 GC 日志后用腳本對比。先寫個提取腳本把日志里的關鍵指標算出來#!/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})然后準備三到四組參數(shù)比如新生代 2G、2.7G、3.2G 三檔每組用同樣的壓測流量跑 30 分鐘收集日志之后橫向?qū)Ρ取簻y工具用什么不重要關鍵是流量模型要貼近真實——尤其是對象創(chuàng)建速率和對象存活時間這兩個特征必須和線上一致否則調(diào)出來的參數(shù)沒有參考價值。我自己踩過的一個坑是在壓測環(huán)境用簡單的接口壓對象創(chuàng)建快、存活短調(diào)出來的參數(shù)是新生代越大越好但線上業(yè)務的對象存活時間明顯長兩個環(huán)境的最優(yōu)參數(shù)完全不同。后來我改成從線上拉一份真實的請求采樣做流量回放參數(shù)才有參考意義。還有個實用技巧參數(shù)不要一次改多個。有人喜歡一次改五六項跑出來效果好也不知道是哪項起的作用效果差更不知道是哪項搞壞了。一次改一到兩項觀察至少半小時記錄下變化這才是可積累的調(diào)優(yōu)經(jīng)驗。最后再分享一個我自己的做法把每次調(diào)優(yōu)的參數(shù)、機器規(guī)格、前后 GC 指標記錄在一個表格里。跑的項目多了之后這張表就成了自己的經(jīng)驗庫新項目上手時直接找規(guī)格相近的那一行做起點比從零開始試快得多。尤其是內(nèi)存規(guī)格在 4G 到 16G 這個區(qū)間很多業(yè)務形態(tài)的參數(shù)其實高度相似復用率相當高。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
搡老女人老91二区| 九九热免费国产视频婷婷伊人| 欧洲人妻视频| 91亚洲精品青草| 九九精品无码专区免费| 色97干| 99热 按摩 日韩| 六月丁香久久| 免费a在线播放v| 亚洲欧美不卡线| 亭亭丁香激情| 凹凸视频特色日本特黄| 亚洲男人久久综合天堂| 色97干| 中文字幕久久亚州无码| 蜜臀久久99精品久久久久久久久| 一二三区视频在线观看| 亚洲妇色| 天天插天天射| 日韩一级成人毛片免费观看| 亚洲一区在线观看欧洲| 亚洲啪啪综合?v一区综合精品区| 激情综合久久| 美国人人操人人操| 久久青青草原免费视频| 久夜视频| 少妇久久久久久久久| 丝袜视频一区二区在线播放国产中文| 人人操 欧美| 老司机午夜精品福利视频一区二区| 深夜福利黄片| 国产视频第二页| 校园春色中文字幕AV| 91美女中出| 久久毛卡| 色婷婷九月| 午夜激情成人在线观看| 国产又黄又粗的视频| 亚洲激情视频| 99这里只有精品国产| 超碰在线在公开超碰在线在公开| av国产无码| ji熟女.com| 被窝影院午夜看片无码| 免费观看网黄| 国产精品美女视频诱惑| 一级人妻性爱视频| 一区不卡在线观看av| 91在线视频国产网站| 丰满人妻-区二区三区免费看| 大香蕉啪啪啪| 久久男女激情视频网站| 在线v中文字幕一区二区三区| 欧美第五页| 中文字幕女同在线| 亚洲激情深爱文学小说网站| 亚洲日本天堂| 亚洲图片偷拍欧美| 天天综合网在线观看| 98久久超碰| 欧美激情精品| 性爱视频免费网址| 国产亚洲色婷婷久久99精品91葵花宝典 | 欧美日产国产在线成人第一区| 欧美婷婷久久| 天天看高清麻豆| 亚洲av热热色| 精品少妇一区二区三区| 夜夜黄| 国产精品伦理| 国内一区二区免费| 中文字幕第9页萱萱影音先锋| 综精品久久久aaaa| 久久华人网| 色综合99999| julia中文字幕在线观看| 另类专区加勒比| 亚洲国产中文字幕| 天美传媒婬乱在| 色婷婷国产精品一区在线观看| 一区二区蜜臀| 午夜操操操| 亚洲综合嫩| 色欧美综合| 日本 色 导航| 日韩无码嘿咻黑热久| 色婷五月天| 亚洲瓯美色图| 欧亚日韩中文在线| 操迟操逼在巾线Fre看| 人妻中文字幕日韩电影| 96精品在线| 国产亚卅97| 二级毛片| 国产精品麻豆成人av| 午夜精品五区| 超碰午夜在线| 精品国产乱码久久久影院| 日本一区二区三区四区五区六区七区八区九区| 伊人网免费视频| 操高情无码| 国产亚洲人妻综合日韩 久久| 无码人妻丰满热妇又大又粗| 天美国产精品| 四虎精品亚洲| 麻豆国产精品午夜视频| 国产成人+综合亚洲+天堂| 91麻豆天美传媒HD| 加勒比综合88| 国产传媒操逼视频| 91天天综合网,天天综合网| 欧美日韩一二三| 伦激情人妻另类人妻| 国产男女无套视频免费观看| 少妇第一页| 日韩成人性日韩成人性爱视频在线免费观看 | 韩国三级一线观看久| 免费αⅴ在线观看| 歐美性天天| 男人在线天堂| 五月婷婷激情| AV色女综合| 巨爆乳一区二区爆乳区| 撸撸成人在线视频| 中国国产精品一区视频| 亚洲精品丝袜| 久久久久九九九| 中文字幕在线观看丝袜| 精品十八在线观看| 大香蕉黄色一区| 欧美日韩亚洲天堂网| 91亚洲欧美| 69人妻精品一区二区绯色| 天操天操夜操夜月月年年操操| 九九九草| 不卡免费av在线播放| 欧美A√综合网 | 超碰天天久久79| 韩国黄片aaaa| 成人AV素股で擦久久| 亚洲无码日韩电影| 日韩欧美国产高清视频| 哈哈操 大香蕉| 亚洲夜夜欢无码一区二区| 99福利社| 99热这里只有精品9| 后入合集| 国产精品久久久三级无码| 超碰97极品9| 色女网日韩| 欧美双插| 91欧美长吊| 欧美性爱免费短视频| 色哟哟-国产专区| 翔田千里A片一区二区| 六月婷激情福利天堂69| 特级特黄一级毛片免费| 99久久综合| 久久成人国产| 麻豆成人AV| 一区二区 韩日AV| 亚洲中文字幕精品一区| 美欧老女人97| 成人丁香五月| 日本1区2区不卡视频| 欧美日本天堂| 久久久久久久久久久免费精品| 中文字幕在线免费观看 | 久久111| 日韩中文字幕人妻视频| 超碰在线成人电影| 亚洲精品一区二区三区新线路| AV丝袜东京热| 丁香五月偷拍| 自拍偷拍亚洲熟女妇人精品| 另类欧美| 97欧美色资源| 激情第四色| 欧洲黄色网| 91久久久久久久| 韩日精品四区| 中文字幕日本久久| 欧美视频边做饭边橾| 丰满少妇一区二区三区免费看| 26uuu性| 上床啊啊啊| 99九九久久| 91操人视频| 三级日韩一区二区三区| 国产2.3.4区| 欧美日综合| 国产v片在线免费观看| 人妻激情视频| 欧美国产操逼| 亚洲影院小综合| 精品人妻二区三区| 亚洲国产精品久久久久久久久久| 国产激情在线| 素人无码中文字幕| 天天日日日射| 国厂麻豆77q4| 欧美亚综合色图| 国产亚洲日韩在线三区黑人| 91在线视频国产网站| 亚洲人妻熟妇三十三区| 秋霞成人做爱| 国产无码精品成人| 91视频精品| 亚洲综合20p| 日韩97超碰| 九九九九97| 国产乱人妻精品入口| 亚洲限制级在线| 欧美少妇一区二区三区| 亚洲AO在线| 蜜臀AV一区二区三区激情综合| 98超碰欧美| 欧美色图在线视频少妇| www欧美91| 精品一区二区三区蜜桃| 久久产精品一区二区三区电影| 国产欧美日韩臀| 91九色丨国产丨爆乳| 大香蕉AV丝袜| 天堂射| 999熟女精品| 精人妻无码一区二区三区伊人直播| 成年女人18级毛片毛片免费观看| 91欧洲国产成人久久精品网站| 91视频成人福利网站在线一区| 中日亚韩免费视频| 强奸乱伦大香蕉| 色翁荡息又大又硬又粗又爽| 婬女免费一二三区A片| 性一交一乱一交A片久久四色| 青娱乐欧美激情一区二区| 国产日韩手机视频在线| 久久人人爽人人爽人人片Ⅴ| 青青草自拍视频在线播放| 97超久碰| 自拍第一页| 精品久| 26uuu性| 91丨九色丨国产打屁股| 日本三级人妻a人妻一在线| 97超级欧美| 人妻蜜桃臀| 日本国产欧美一区三区二区| 欧美人妻精品一区二区| 久久香蕉国产传媒一区剧情天美| 男人的天堂亚洲| 亚洲欧美天堂在线| 少妇特黄一区二区三区| 国产精品96久久久久久| 亚洲乱码国产乱码精网站| 色噜噜狠狠色综合日日| 日日黄色三级网站| 九九久久玖玖| 日韩欧美经典在线观看| 少妇三P| 亚洲天堂少妇| 亚洲天堂AV在线播放| 亚州色图第三区| 久久综合久色欧美综合狠狠 | 操淫穴亚洲五月丁香 | 国产精品久久久久无码Av网曝门 | 色色色综合网| 日日嗷| 成年人黄色视频免费| 综合一区中亚洲国产成人综合精品 | 亚洲字幕一区二区| 天天操天天射青青草| 久草婷婷| 久9re热视频这里只有精品| 乱伦3P视频| 67914在线精品观看| 亚洲一区中文字幕| 综合操逼| 久久骚| 色色色日本| 天综合网| 五月天伊人网| 婷婷五月成人| 亚洲AV色图| 超碰成人免费| 600国产精品视频| 日韩精品在线观看网站| 韩国嫰模上门援交视频| 国产精品无码久久久久2025| 人人超碰在线观看黄| 日本精品五区| 91N欧美| 九九九九九精品| 女人高潮大叫一级毛片| 997色在线| 日韩乱插| 美女91| 日韩精品99999| 亚洲成成熟女人综合一区二区| 激情小说亚洲色图| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 大香蕉92| 日韩在线观看中文字幕视频| 久操免费电影| 伊人久久88国产女| 九九九九九九综合| 久久人妻丝袜一区二区三| 极品色综合| 熟女啪啪视频| 岛国黄色短视频| 天天综合麻豆视频| 超碰国产在线| 久久精品国产亚洲AV清纯| 97人亚洲综合字幕| 福利在线观看一区二区| 96久久久久久久| 伊人成人中文字幕久久网| 欧美美女视频| 午夜天堂精品久久| 午夜福利在线合集| 97爱爱爱| 97 九色| 911粉嫩人妻| 午夜福利合集| 黄色成品网站| 日韩成人网址| PMv在线观看| 超碰伊人在线| 夜夜高潮夜夜爽高清视频一 | 97亚洲精品| 330Dv国产女人终合视频极品人与兽| 亚洲精品 欧美97色色| 97超碰jingpin| 日韩性爱1级片视频| 五月天人妻综合| 亚洲一区中文字幕久久,果冻传媒一区二区天美传媒 | 欧美狠狠弄| 亚洲中文一区二区三区| 五十路一区无码| 一区| 嗯嗯啊操我| 精品中文字幕第一页| 97久久久久| 九九成人精品| 干B视频伊人网| 国产AV高清AV无码| 制度丝袜99| 亚州性9| 天天躁狠狠躁av| 另类小说五月天| 国产黄色在线播放观看| 91观看 国产白丝| 97精品97| 久久久久密| 插欧洲美女欧美精品| 国产精品盗摄 偷窥盗摄| 花花AV导航| 不卡六六在线91| 中文字幕日韩精品一区二区三区| 约操熟妇| 张柏芝国产一区在线观看| 伊人午夜福利视频| 久操| 人妻熟女一区二区| 精品999日本| 热天堂一区二区| 色欧美天天| 亚洲高清无码免费观看视频| 强奸乱伦av电影| 伦激情人妻另类人妻| 日本一二区不卡| 蜜臀AV一区二区三区| 欧美色图人妻| 欧美中字不卡| 国产欧美后入| 一本大道久| 97精品中文字幕| 动漫片子网站3黄| 亚洲情色第一页| 久热无码| 亚洲天天艹| 老女人爆菊| 91亚洲人电影| 欧美欲色| 天天色怡春院| 四虎在线免费视频| 中文字幕午夜精品久久久| a片亚洲一本通视频| 小骚逼被操的爽不爽| 夜夜综合| 老熟妇一区二区三区| 久久9精品网站| 最新9久久久9免费视频| 51一区二区三区| 亚洲猛交| 日韩三级伦理中文字幕| 欧美日韩亚洲一区二区在线观看| 久艹免费| 国产久久久久久| 78超碰| 亚洲色人| 色哟哟综合| 天天看天天在线精品| 最新日产中文在线麻豆| 伊人99热| 殴美日韩m| 天美精品一区二区三区四区在线观看| 97色婷婷| 欧美激情片一区二区| 亚洲资源网| 国产97在线播放| 欧美精品97| 熟女这里只有精品6| 国产成人bd在线观看| 午夜福利成人免费视频| 九色97| 精品然女一区二区| 少妇色欲综合网2| 翔田千里A片一区二区| 欧美性爱免费短视频| 人、人、摸,人、人、草| 五月婷婷六月丁香| 青春草A| 懂色av中文字幕| 91九九| 99久久e免费热视| 久久午夜伦| 九九综合网| 人人操,操人人| 免费视频无码| 久久影视二区三区行押| 91在线免费精品视频| 久久精品国产亚洲AV嘿嘿| 操久久久久久| 任我爽在线视频免费观看 | 1级黄色夫妻对换性交免费看| 人妻精品一区二区| 亚洲欧美自拍偷拍| 78综合网| 日日干日日摸| 色婷婷九月天天综合| 欧美少妇第一页| 久久久极品| 黄色av网站在线播放| 香蕉在线一区二区三区| 蜜区区视频79| 福利在线观看一区二区| 天天享受天天看| 91精品国产91熟女| 久久久国产成人一区二区三区在线| 久热香蕉精品在线视频| 性色中出| 天天射天天操天天干天天吃2018| 国产在线观看91精品一区| 99久久9| 国产中午字一暮区| 综合五月婷婷亚洲一区| 蜜桃久久精品一区二区三区| 国产又黄又爽| 好吊色在线观看| 亚洲人妻五月丁香婷婷| 国产成人无码久久精品| 一区二区播放| 久久免费精品视频免一| 在线观看午夜婷婷久久久久清性观看| 久久久九精品| 操逼操逼逼操操逼91| 日韩少妇在线视频| 性色av蜜臀av色欲aV| 欧美内射少妇| 国产无码久久高清| 青青色综合| 老熟女乱伦片| 欧美一区二区日韩传媒搭讪精品| 日本熟妇自慰性高潮一区二区三区| 国产超碰欧美| 午夜色婷婷| 97久久久网站| 成人婷婷丁香| 中文字幕国产在线天堂| 丝袜AV一二三区| 超碰97精品| 亚洲一二三精品久久网 | 国产精品久久久久无码Av网曝门| 人人操,操人人| 亚洲熟女一区| 十八禁视频网站| 亚洲狠狠入| 韩日精品四区| 天天综合亚洲综合| 久久99999| 另类 日韩 熟女| 五月天人妻综合| 五月婷婷色| 人人操,人人液| 天操老女人| 欧美在线观看综合国产| 婷婷久月| 超碰色综合| 精品人妻一区二区免费蜜桃| 婷婷午夜成人色中色| 97色欧洲| 澳门成人网站久国产日韩| 成人无码在线超碰网| 超碰久久精品| 精品国产乱码久久久久A| 无遮挡男女激烈动态图| 人妻熟女一区二区| 97色在线观看| 国产精品免费美女视频| 97视频免费在线观看| 女人的天堂大香蕉网| 成人在线视频网| 欧美人人操人人插| 九九九九热只有精品| 欧插网站| 中文字幕性感少妇av| 无码天堂| 91女日逼| 青青草久久| 啊啊啊啊视频免费| 五月天大香蕉| 中文字幕亚洲永久精品| a'v在线资源| 亚洲双插| 九九九九一级| 久久九七| 蜜臀在线免费观看在线免费观看| 七月丁香婷婷| 91美女视频直播| 97资源欧美| 九九激情网| 亚洲最新中文字幕免费| 欧美亚洲图片| 激情小说激情视频| 黄色一区三区| 亚洲和欧美裸体美女双飞视频| 人人操我人人干| 色九久| 亚洲中文字幕久久无码精品| 91性感网站| 91色黑人少妇| 久九九九九九九热| 亚洲黑丝在线| 五月天婷婷影院| 一级久久性爱视频| 亚洲欧综合另类无码一区| 欧美一级美片在线观看免费| 2017天天操| 国产97色在线 | 亚洲| 欧美在线第五页| 欧美熟女丝袜| 亚洲综合69| 久久鲁夜| 亚洲一本色码中文字幕| 狠狠热这里都是精品| 国产精品经典一卡久久久| 91大胆欧美| 玖玖综合.com| 天天操女人| 日本三级久| 女同性恋中文字幕| 日韩人人精品| 欧美日韩中国x| 亚洲色人| 日韩av在线播放不卡| AV天天综合| 人妻大香蕉| 国产丝袜欧美在线视频| 国内精品久久久久影院亚洲| 97一本大道亚洲一区| 性色A∨91| 久热婷婷| 黑白配性爱AV成| 黄片免费久久久久久久| 人人摸人人干| 2024年最新色情网站在线观看| 婷婷丁香五月天综合东京热| 丁香五月影院| 综合五月天| 丁香婷婷啪啪| 91亚洲综合在线| 天天干天天拍| 小说区 图片区色 综合区| 69超碰综合| 亚洲人成在线放东京热| 欧美一区91大爱| 日韩97| 中文伊人大香蕉视频| 亚洲中文字幕在线视频一区二区| 这里都是精品| 96久久久精品| 老熟女中文字幕高清| 亚洲 无码 有码 中文字幕| 久久久久国色αv免费观看| 97亚洲精品| 中文精品一区二去| 99只有精品| 亚91亚洲网| 国内91熟女人妻丝袜天天精品视频在线| 桃花色综合影院| 大香蕉欧美国产日韩高潮| 中文字幕高清精品一区| 国产丝袜高跟美女av免费观看| 操久久久久| 91久久国产综合久久| 91爱啪| 蜜乳性色无码专日粉嫩骚逼AV| 91大神精品长腿在线观看网站| 日韩熟女乱伦中出| 97色97干| 欧美国产精品久久九九| 日日骚 av| 在线二区不卡| 无码99| 欧美 亚洲 综合 制服 另类| 91性| 久久精品女同亚洲女同13| 欧美亚洲一级在线观看| 蜜臀久久99精品久久久久久成人小说| 精品制服美女中文一区二区三区| 热99这里有精品综合久久| 99re热| 国产欧美后入| 男人的天堂在线| 色综和网| 自拍视频大全亚洲专媒视频/一区二区三区 | 免费av高清无码| 97精品人妻一二三四| 天天天天天超碰| 精品一区二区三区四区外站| 日韩AV中文字幕电影| 97天天爽| 天天插天天干| 男人亚洲91首页在线| 无码人妻一区二区一牛影视| 欧美激情总合网| 久久久一级| 视频在线观看一二三区| 色婷婷综合久久久久中文一区二区| 97精品久久| 三级日韩一区二区三区| 久久AV无码AV| 国产中文字幕在线点播| 口爆吞精在线观看| 一区三区啪啪| 国产伦精品一区二区三区视频女| 亚洲午夜未满十八勿入网站日本又色又爽又黄 | 91无码西班牙视频在线| 天天看天天日天天操| 国产辣妈在线视频福利| 99re公开精品免费视频| 天天色综合天天操| 麻豆久久久久久久久丝袜| 蜜臀精品1区2区| 少妇内射视频| 亚洲色婷婷久久91| 一区二区三区四区免费视频| 综合网欧美在线| 日本一久是| 精品视频一区二区| 中文字幕午夜精品久久久| 丁香五月综合| 91足交| 男人天堂资源| 久热最新在线杭州| 天天拍夜夜| 1204金沙人妻懂旧版免费| 亚洲精品久久久久毛片A片拉屎| 综合五月婷婷| 97超碰总站| 欧美呦呦性爱| 99久久久无码国产精品性男| 亚洲激情视频| 久久熟妇五十路一区| 亚91网| 免费在线黄片视频| 色欲日韩欧美在线一区| 熟妇艹鸡八| 亚洲无码久久久久久久| 少妇久久| 激情第四色| 正在播放国产精品一区| 国产女人9999| 九月婷婷综合| 国产乱子伦一区二区三区免看| 国模吧 一区二区三区| 99久久综合| 日韩免费福利在线观看| 九九热男人天堂| 中国AAAAAA黄色片| 伊蕉97蜜桃97狠狠综合干| 色视频蜜乳| 狠肏骚人妻| 乱伦图av| 日韩99999| 国产在线不卡导航| www.黄色在线| 久久久久96| 国产精品一区二区 尿失禁| 青青草久久在线| 日韩精品一区二区三区色欲 | 五月天人妻综合| 日韩中文字幕精品一区在线| 麻豆天美传媒在线视频天堂| 色欲三区| 台湾佬激情综合| 蜜乳AV.COM| 麻豆人妻偷人精品无码视频| av天堂手机版追回 | 亚洲综人网| · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 中文字幕在线免费观看 | 国产精品成人午夜福利| 加勒比大香蕉视频在线| 成人精品视频| 亚洲情色五月天 | 台欧久久精品视频| 超碰国产精品无码| AV中文字幕三四五| 亚洲第一男人天堂| 色悠久久久av| yw尤物av无码点击进入麻豆| 在线综合 亚洲 欧美中文字幕| 校园春色之综合网| 久久精品人妻一区二区| 国产精品久久| 色小视频蜜乳| 青青草久草AV| 久久亚洲色图中文字幕| 69精品人人人人| 91伊人大香蕉| 蜜臀99999| 中文字幕人乱码中文字的预防方法| 狠狠亚洲| Julia Annxxxxx| 91麻豆天美国产| 大香蕉AV丝袜| 亚洲天堂东京热| 日韩视频啪啪| 中字幕人妻一区二区三区| 九九九999久久久网站| 精品九九九九九九九九九| 日夜伊人网| 麻豆伊人网| 欧美一级国产一级| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 国产精品久久久久久久无码AV| 日本精品第一视频在'| 国产热av| 97se综合| 精品人妻视频一区二区在线播放 | www成人啪啪18秘 免费| 日韩性爱啪啪视频| 大肥女高潮bbwbbwhd视频| 综合网欧美| 欧亚无码视频| 东京热男人的天堂精品| 国产高清精品福利| 天天色播亚洲综合网站| av婷婷色婷婷色六月| 91|九色|国产熟女| 欧美一区二区三区大综合| 91日日| 日韩av情韩国爱禁区av一区二区| 久色网| 毛片视频白嫩| 蜜臀99999| 久久久久久中文| 亚洲资源一区| 91N综合网| 成人激情无码在线视频| 国产福利影视| 99www.bibizy香蕉资源国产一区二区三区高清 | 在线观看国产黄色| 屌逼麻豆| 欧美极品色| 久久只有精品| 操逼逼无码| 蜜臀在线免费观看在线免费观看| 999久久久九九九九| 日韩无码a片| 欧亚综合一卡二卡中文字幕| 亚州综合AⅤ| 加勒比综合| 色色五月婷| 日韩欧美偷拍美女视频| 91老司机在线| 婷婷五月色| 久久超碰天天| 国产h片在线观看视频| 亚洲AV无码| 美女诱惑一区| 人人人人人人少妇| 综合五月天| 嗯嗯啊啊视频在线看| 亚洲黄色电影| **一级毛片国产| 综合色久欲| 色99视频| 国产在线76页| 亚洲另类在线观看| 久久婷五月天| 伊人网av| 欧洲Au麻豆| 欲色影视综合吧| 97日视频| 天天干天天中出av| 亚洲影视综合网| 91操操操操| 九九九九久久久| 黄片色区软件| nuu12国产麻豆精品| 91c色| 欧美少妇高潮久久91| 亚洲码专区| 午夜精品久久久久久久久久久久久 | 国产91 丝袜在线播放00-百度| 噜噜噜亚洲精| 成人三级片无码| 黑人嘿嘿嘿超爽免费视频| 国产做?爰片久久毛片?片美国| 欧美性爱在线无码| 视频在线观看青青99国产| 丁香五月电影| 豆花视频操逼网址| 亚洲美腿丝袜香蕉影视欧美成人| 91在线视频国产网站| 99re不伦| 五月天色五月| 囯产操逼片| 国产精品福利资源在线尤物| 长久操视频| 久久中日麻豆| 人妻少妇久久久| 日韩欧美亚洲自拍偷拍| 快播久久人人aV| 久久超碰98| 综合激情97 | 91爱欧美| 91xingse| av在线资源| 久久久久亚洲Aⅴ无码| 九九视频黄色片| 农村少妇久久久久久久| 欧美日韩青操| 超碰天天操| 欧美精品偷拍| 日韩无码AB| 综合天天。| 玖玖综合视频| 久久精品女同亚洲女同13| 久久大精品乱码视频人妻熟女| 操高情无码| 操操操五月天婷婷丁香影院| 欧美日韩1234| 老司机午夜精品视频| 免费A片三p视频| 国产精品ww久久| 久久直播国产| 操逼日韩无码| 激情婷婷五月天| 国产久久一区二区午夜| 75大香蕉| 是还免费视频1727我| 国产日韩中文字幕欧美| 久久一二三四五六七八九区| 天美av在线| 亚洲熟伦熟妇AV无码春色| 亚洲色图尤物视频 | 五月天AV资源| 97操碰| 精品午夜福利国产一区二区在线观看| 啊啊啊啊,啊啊好多水| 亚洲图片 欧美电影| 青娱乐国产剧情av一区| 午夜福利精品| 亚洲视频1区| 久久久999日本大片| 色男人色天堂东京热| 成人无码欧美一级A片狼牙直播| 青娱乐大香蕉| 你懂的在线观看区国产| 青青草影视蜜久久| 色综合91| 人妻精品视频一区二区| 无码不卡八戒| KK色在线影院| 台湾肥佬网一区二区三区| 人人操人人摸人人看人人干| 东京热av男人的天堂| 色综合加勒比| 超碰人人色| 亚洲 欧美 综合 91| 中文字幕在线第二页| 欧美性爱91| 99re6国产精品99re在线| 青青草一本道福利视频| 国产黄色 A 片免费看| 亚洲91网站| 2017大香蕉| 亚洲 欧美日韩 另类| 亚洲无码超碰免费| 青青草天天亲夜夜操网| 久久一区无码| 人人做人人妻人人夜视频| 日本免费中文一区二区三区四区| 日本999精品| 又大又大又大又粗爽高潮观看| 在线一区| 中文字幕精品一区二| 五月天综合| 99re28在线观看| 美女自卫慰黄网站免费| 久湿久久| 亚洲国产精品成人无码久久久| 国产精品无码论坛| 91路www| 美女尤物人人操| 日日噜噜夜夜久久亚洲一区二区 | 狠狠干狠狠色| sewuyueav| 国产原创自拍| 老司机午夜精品视频| 亚洲欧洲日产国产综合网| 日本成人A片网站| 中文字幕文字幕无码一区二区三区电影99| 秋霞一区二区三区四区五区六区七区| 动漫av中文| 国产真实野战在线视频| 97国产精品一区| 台欧久久精品视频| 人妻81p| 亚洲天天自拍| 操逼内射干逼白丝91| 白嫩国模丰满一二三区| 91白虎| 欧美最大综合网| 中国国国产一级特黄毛片| 97天天| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 免费黄色片子| 神马麻豆福利院| 啊啊啊不要啊啊受不了了视频在线 | 夜夜躁狠狠躁日日躁av| 中文伊人大香蕉视频| 黄色区免费观看中文字幕| 97在线视频网站| 天天综合麻豆视频| 大香蕉男人的天堂| 99热66| 久久精品国产亚洲AV无码做| 国产精品久久久| 花花AV导航| 天天躁日日躁狠狠狠躁| 欧美论理片| 9999亚洲精品| 日韩精品99久久久久久中文字幕| 人妻熟女一区二区三区视频| 精品97久久综合| av操操不卡| 久久精品72| 美国久久一二三四| 人妻在线大香蕉| 久久久久久波多野吉衣高潮| 91ise欧美| 六月丁操逼| 99国产精品免费| 人妻丝袜肏逼| 女人天堂网| 精品9999| 超碰在线91| 天天躁日日躁狠狠狠躁| 日本男人天堂| 亚洲色宗合| 国产又猛又粗又爽又黄| 亚洲字幕一区二区| 亚洲中文字母在线播放| 日本色婷婷| 久久97资源 网| 国产蜜臀在线| 久久产精品一区二区三区电影| 九九热九九热| 欧美少妇性乱| 精品免费囯产一区二区三区| 九九综合九九综合| 人人操人人插人www| 亚洲经典啪啪| 男人干美女| 亚洲综合在线91| 亚洲色综合| 特级毛片特黄久久免费看| 久久性爱视频| 中亚黄色三级大片| 欧美一级黄色免费专区| 99久久久er直播网址| 欧美美女啪啪视频| 青青草依人大香蕉| 久久精品日韩| 国产自产91区13区| 一区二区视频在看| 一区二区三区精品视频| 婷婷15月天青娱乐| 中文字幕蜜乳av| 国产精品一区二区黄片| 99热8| 亚洲中文一区二区三区| 91国产大片| 亚洲一区二区三区在线激情| 婷婷五月av| 4虎在线观看| 亚洲色诱惑| 嗯嗯不要 视频| 99这里只有精品| 后入国产| 精品国产网站| 青娱乐二区免费| 男人的天堂.com| 国产日韩欧美中文在线播放| 另类av天堂| 欧美成人四级在线播放| 亚欧美色图| 人妻99p| 久久精品熟女亚洲AV麻豆软件| 国产精品久久久久久久AV大片| 欧美强奸乱能| 无码人妻毛片丰满熟妇精品区| 友优传媒精品在线一区二区| 日韩精品国产精品五码一区二区| 色噜噜人妻丝袜AV资源| 93人人操人人| 78超碰| 久久精品人妻一区二区| 性开放中文AV高清无码免费看| 欧美亚洲中文字幕| 上特色A在线| 日韩欧美天天爽爽爽天天爽爽| 97色在线视频| 啊啊啊在线观看免费视频| 中文字幕一区电影在线观看| 欧洲亚洲人妻无码高清久久三区四区| 亚洲无992tv| 久久精品六区| 欧洲小说色图视频另类| 成人片在线播放| 一区二区三区黄片免费观看| 日韩精品人妻| 亚洲熟妇A V黑人| …中文字幕亚洲乱,97人妻无码费视…| 呦呦一区| 一卡二卡三卡| 99国产精品自在自在| 99啪啪视频| 欧美综合自拍成人自拍第二十页| av橘色网站| 久久风骚城市| 亚洲色图 图片| 欧美精品久久| 在线观看A啊啊啊| 91扒丝袜综合在线| 夜夜操天天肏| 精品国产自在在线99| 99热这里只有精品9| 67914亚洲精品| 亚洲av在线免费观看| 日韩啪啪啪啪啪| WWW4虎| 97爱亚洲综合色| 久久一二三四不卡| daxiangjiao你懂的| 亚洲天堂电影网| 五月天欧美色图| 97久操| 思思热国产高清| 亚洲国产一区二区日韩专区| 操逼片国产| 国产免费一区二区在线A片视频| 蜜臀久久99精品久久久久久成人小说| 国产精品91一样| 日韩啪啪啪视频| 国产风韵犹存熟妇三区| 国产精品乱码久久| 成在线人在线观看视频| 黄色性爱网网| 宗合情欲网| 91热色| 看免费一级在线播放毛片| 黄片无码在线制服| 91人妻视频在线| 九一国产精品| 日本成a人v网站在线观看| 91成人久久 | 乱伦强奸区日韩| 大屁股人妻女教师撅着屁股| 18禁精品网站在线看| 青青国产精品在线| 国产精品视频在线播放| 欧美亚洲今日在线| 国产吞精a级片激情电影| 综精品久久久aaaa| 加勒比综合在线| 1769精品一区二区三区| xxx亚洲午夜天堂| 97欧美日韩综合| 天天日夜夜爽| 97超碰精品图片| 亚洲高清在线| 久草电影网| 99热超碰| 免费在线视频97| 亚洲欧美经典一区二区| 国产蜜臀精品一区二区尤物| 国产一区二区三区影片| 97视频免费在线| 99在线精品观看99| 亚洲人妻日日日| 九九无码视频| 欧美激情 亚洲色图| 一区二区 韩日AV| 精品无码秘 人妻一区二区| 国产精品麻豆成人AV艾秋| 香蕉视频精品亚洲一区二区三区在线播| 97亚洲在线| 国产成人www免费人成看片| 中文日韩欧美熟| 黑丝少妇| 中文字幕av亚洲精品| 亚洲色综合| 欧美色老汉| 国产激情在线| 色97干| 久久久久久中文版| 色五月婷婷色| 超碰97人人cao| 碰人碰碰人人开房人肉| 99re视频在线观看这里只有精品| 中文字幕超碰CAO| 人妻丰满熟妇一区二区三| 中文字幕视频免费| 天天插天天插| jk白丝没脱就开始啪啪| 9精品久久久久| 中文字幕视频免费| 国产传媒美日韩av| 色婷婷色99国产综合精品| 国产一区二区免费福利片| 97美日韩视频| 国产麻豆一区二三区| 天天操女人| 丁香六月激情| www.色操逼| 国产精品嫩草影院免费| 国产拍偷精品网站| 麻豆成人影音在线| 久久99九九九九6666免费观看软件| 影音先锋视频在线| 91AV入口| 人人操人人摸avav| 6080YYY午夜理论片在线观看| 97亚洲一区|