精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

億級流量系統(tǒng)如何玩轉(zhuǎn) JVM

云計算 虛擬化
相信你看到這里 , 應該對高并發(fā)系統(tǒng)中 對象如何吃 JVM 內(nèi)存 頻繁 遇到 gc 如何解決 已經(jīng)有所了解了 。

 [[340168]]

本文轉(zhuǎn)載自微信公眾號「Shooter茶杯」,作者Shooter。轉(zhuǎn)載本文請聯(lián)系Shooter茶杯公眾號。  

抱歉很久沒寫新文章了 , 這段時間一直在學習擴大自己的知識盲區(qū) , 工作上也挺忙的 , 拖更了好久

答應了朋友要出個 JVM 系列 , 應該會有幾篇文章 , 我會努力在保證質(zhì)量的前提下進行輸出~

So 進入今天的主題

前言

有被 JVM 相關(guān)問題刁難過嗎?

上個月朋友去面某東說被 JVM 難哭了

面試官上來就是素質(zhì)三連:

有沒有 高并發(fā)項目經(jīng)驗、頻繁 gc 怎么解決、有沒有搞過 JVM 調(diào)優(yōu)

我那個朋友公司做的是 to b 方向 , 系統(tǒng)流量不是很大 , 加上才工作 2 年直接被問懵逼

回來就問我高并發(fā)系統(tǒng)怎么玩 , 為了避免重復勞動 , 遂有此文~

一、億級流量系統(tǒng)回顧

接下來做個回顧:

OTA 平臺 4億 用戶

高峰期 百萬 訂單

高峰期 12 小時 1.8億 訪問量

每小時的流量是:1.8億 / 12 = 1250w

每分的流量是:1250w / 60 = 20.8w

每秒的流量是:20.8w / 60 = 3472

2 個集群 32 臺 8C/16G 的機器

一次核心接口查詢平均占用 5mb 內(nèi)存

每秒鐘 JVM 會有 550mb 的新生代堆內(nèi)存空間被占用

二、系統(tǒng)的 JVM 參數(shù)

基于G1垃圾收集器

這里我截取了這個服務生產(chǎn)環(huán)境的 JVM 參數(shù):

  1. -Xmx12288m 初始堆大小.
  2. -Xms12288m 最大堆大小
  3. -Xss256k 每個線程的棧內(nèi)存大小
  4. -XX:MetaspaceSize=256m 元空間初始大小
  5. -XX:MaxMetaspaceSize=1g 元空間最大大小
  6. -XX:MaxGCPauseMillis=200 每次YGC / MixedGC 的最多停頓時間 (期望最長停頓時間)
  7. -XX:+UseG1GC java8 指定使用G1垃圾回收器
  8. -XX:-OmitStackTraceInFastThrow 對異常做的一個優(yōu)化,拋出異常非常快,但是看不到異常的堆棧信息(僅供參考)
  9. -XX:MinHeapFreeRatio=30 GC后java堆中空閑量占的最小比例,小于該值,則堆內(nèi)存會增加
  10. -XX:MaxHeapFreeRatio=50 GC后java堆中空閑量占的最大比例,大于該值,則堆內(nèi)存會減少
  11. -XX:CICompilerCount=4 設(shè)置的相對較大可以一定程度提升JIT編譯的速度,默認為2
  12. -XX:SoftRefLRUPolicyMSPerMB=0 任何軟引用對象在下一次 GC 都盡快釋放掉,給內(nèi)存釋放空間。
  13. -XX:+PrintGC 輸出GC日志
  14. -XX:+PrintGCDetails 輸出GC的詳細日志
  15. -XX:+PrintGCDateStamps 輸出GC的時間戳(以基準時間的形式)
  16. -XX:+UseGCLogFileRotation 開或關(guān)閉GC日志滾動記錄功能
  17. -XX:NumberOfGCLogFiles=5 設(shè)置滾動日志文件的個數(shù)
  18. -XX:GCLogFileSize=32M 設(shè)置滾動日志文件的大小,當前寫日志文件大小超過該參數(shù)值時,日志將寫入下一個文件
  19. -XX:+HeapDumpOnOutOfMemoryError JVM會在遇到OutOfMemoryError時拍攝一個堆轉(zhuǎn)儲快照,并將其保存在一個文件中

注意

-XX:SoftRefLRUPolicyMSPerMB=0 這個參數(shù)在某些情況下會造成元空間 OOM ,一般最好給個 2000 / 5000,

0 是經(jīng)過調(diào)優(yōu)確認不會引起這個問題才用。

為什么會造成 OOM 我會在以后的文章會中提到。

三、高并發(fā)下 JVM 是怎么玩的?

堆空間怎么分配內(nèi)存?

雖然給堆空間分配了 12G 的內(nèi)存,但新生代并不是一開始就把這 12G 一下就占滿了,老年代還得占一部分。

也不是一開始就將新老生代按個比例分配好空間,新生代一開始只會分配 5% 的堆內(nèi)存空間,然后慢慢的增大,

這個是可以通過 -XX:G1NewSizePercent 來設(shè)置新生代初始占比的,其實維持這個默認值就可以了

同樣老年代也是,并不是以開始就分配幾個G ;因為 G1 是基于 Region 的邏輯來分區(qū)的。

到底多久會觸發(fā)一次新生代的 YoungGC(ygc)?

有人說:新生代的 Eden 區(qū)空間不夠用了就會觸發(fā) ygc 那到底 Eden區(qū)使用多少了才是內(nèi)存不夠呢?

有一個參數(shù) -XX:G1MaxNewSizePercent 默認值:60% ,限定了新生代最多占用堆內(nèi)存 60% 的空間,

那就是是 12G * 60% = 7.2G,然后 新生代又有 Eden 和 兩個 Survivor 組成 默認比例是: 8:1:1,

7.2G * 0.8 = 5.76G , 是 Eden 區(qū)快到 5.7G 就觸發(fā) ygc 么?

并不是,G1 有個很重要的參數(shù) -XX:MaxGCPauseMillis 這個參數(shù)的默認值是 200

意味著每次 進行垃圾回收,最長的停頓時間不超過 200ms。這也是為什么 G1 號稱它造成的 STW 是停頓可控的。

做個大膽的假設(shè): 200ms G1可以回收 300個Region 區(qū)域!

因為 G1 是在邏輯上區(qū)分 老年代和新生代的,整個堆被分成了 2048 個 Region 區(qū)域,12G 的堆內(nèi)存平均每個 Region 的大小是 6MB

但 Region 的大小必須是 2的 N次冪,所以每個 Region 的大小會是 8mb

之前算出來了這個系統(tǒng)每秒鐘往新生代輸送的對象大小是 550mb ,550mb / 8mb = 68 ,平均每秒會有 68 個 Region 被占滿,

回收 300 個 Region 需要 200ms , 300 / 68 = 4.5ms ,

大概 4.5ms 就會進行一次 ygc ,一分鐘就會進行 13 次 ygc ,每次 ygc 200ms

這樣分析就會發(fā)現(xiàn) G1 的垃圾回收其實是很動態(tài),很靈活的,它會根據(jù)你對 GC 的預期停頓時間來進行回收。

G1 哪些對象會進入老年代?

  1. 一個對象在年輕代里躲過15次垃圾回收,年齡太大了,壽終正寢,進入老年代
  2. 大對象直接送到老年代 參數(shù) XX:PretenureSizeThreshold 來控制多大的對象才算大。XX:PretenureSizeThreshold=100000000 單位為btye
  3. 動態(tài)年齡判定規(guī)則,如果一旦發(fā)現(xiàn)某次新生代 GC 過后,存活對象超過了 Survivor 50%
  4. 一次 ygc 過后存活對象太多了,導致 Survivor 區(qū)域放不下了,這批對象會進入老年代

這個接口的耗時一般在 200ms 左右,但在高并發(fā)情況下,內(nèi)存資源這么吃緊,CPU 和 線程資源都會有很高的負載,這時候就很有可能出現(xiàn)一些性能抖動的情況

相應的表現(xiàn)就是接口的響應時間延長,甚至會出現(xiàn)超時,在頻繁的 fgc 情況下:

  1. 一些對象在 Survivor區(qū) 經(jīng)過 15 次 ygc 后,就會晉升到老年代
  2. 很多接口的響應時間都延長,導致觸發(fā)動態(tài)年齡判斷規(guī)則,就會有一大批對象晉升到老年代,

看起來這么大的內(nèi)存,Survivor區(qū) 也足夠大,這個晉升規(guī)則也比較嚴格,但是高并發(fā)的場景下,上面這個流程只要反復的來幾次

老年代的對象就會越來越多

什么是 Mixed GC (混合回收)?

因為 G1 是基于 Region 的,并沒有嚴格的區(qū)分老年代新生代,

G1有一個參數(shù),XX:InitiatingHeapOccupancyPercent ,它的默認值是 45% ,意思就是說,如果 老年代 占據(jù)了堆內(nèi)存的 45% 的 Region 的時候,此時就會嘗試觸發(fā)一個新生代+老年代一起回收的混合回收。

什么時候發(fā)生 Full GC(fgc) ?

異常情況

  1. 大對象太多,對象都跑老年代去了,老年代內(nèi)存吃緊會觸發(fā) fgc ,如果fgc 內(nèi)存還是不夠使用,那再申請內(nèi)存的時候就會拋出 OOM 異常,然后再 fgc 如此往復循環(huán),系統(tǒng)并不會直接掛掉,表現(xiàn)是系統(tǒng)假死,非常卡頓,用戶體驗極差。
  2. 元空間、直接內(nèi)存這些區(qū)域快滿了都會觸發(fā) fgc

后續(xù) 堆空間、元空間、直接內(nèi)存(堆外內(nèi)存) OOM 都會有真實的生產(chǎn)環(huán)境案例 敬請期待

正常情況

  1. fgc 都知道是一個很耗時的操作 , G1 正常的工作狀態(tài)是沒有 Full GC 概念的,老年代垃圾的收集任務全靠 Mixed GC 來處理。
  2. 不過在進行 Mixed 回收的時候,無論是年輕代還是老年代都基于復制算法進行回收,都要把各個 Region 的存活對象拷貝到別的 Region 里去,
  3. 此時萬一出現(xiàn)拷貝的過程中發(fā)現(xiàn)沒有空閑 Region 可以承載自己的存活對象了,就會觸發(fā)一次失敗。一旦失敗,立馬就會切換為停止系統(tǒng)程序,切換到 G1 之外的 Serial Old GC 來收集整個堆(包括 Young、Old、Metaspace )這才是真正的 Full GC(Full GC不在G1的控制范圍內(nèi))
  4. 進入這種狀態(tài)的G1就跟使用參數(shù) -XX:+UseSerialGC 的 Full GC 一樣(背后的核心邏輯是一樣的)。然后采用單線程進行標記、清理和壓縮整理,空閑出來一批 Region ,使用單線程的進行 gc 這個過程是極慢極慢的。
  5. 這也是 JVM 調(diào)優(yōu)的關(guān)鍵所在,務必不要讓你的系統(tǒng)觸發(fā) Full GC !

補充

-XX:MaxGCPauseMillis = 200 是一個默認值,停頓 200ms 也不算久,但一個高并發(fā)系統(tǒng)如果要求低延遲,快速響應

這個值就要再調(diào)低一點了,但是仍然不建議去把這個值改小,

很多時候設(shè)置的 200ms, 實際上也只有 20 - 80ms ,這是我觀察過不下 30 個生產(chǎn)環(huán)境的 GC 得出來的結(jié)論。

跟做性能測試的大佬也討論過這個的原因:G1 是一個 動態(tài)、靈活、自主、性能還不錯 的垃圾收集器

如果設(shè)置太小 ,可能導致每次 Mixed GC or ygc 只能回收很小一部分 Region ,最終可能無法跟上程序分配內(nèi)存的速度

從而觸發(fā) Full GC 所以很多系統(tǒng)并沒有去把這個值改成 50 或是 100

如果設(shè)置太大 ,那么可能 G1 會允許你不停的在新生代理分配新的對象,然后積累了很多對象,再一次性回收幾百個 Region

此時可能一次 GC 停頓時間就會達到幾百毫秒,但是 GC 的頻率很低。

比如說 30 分鐘才觸發(fā)一次新生代 GC,但是每次停頓 500ms ,毫無疑問, 500ms 對于一個高并發(fā)的系統(tǒng)來說實在是太久了

四、JVM 調(diào)優(yōu)該怎么做?

主要優(yōu)化在新生代

新生代gc如何優(yōu)化?

對于G1而言,我們首先應該給整個JVM的堆區(qū)域足夠的內(nèi)存,其次就是給新生代足夠的內(nèi)存,保證:

  • 不要讓對象經(jīng)歷 15 次垃圾回收從而進入老年代
  • 不要讓 Survivor 太小,從而觸發(fā)動態(tài)年齡判斷,也要保證每次 ygc 后 Survivor 都能夠放下存活的對象

之前我們算過,這個系統(tǒng)每分鐘會有 550mb 的對象會進入新生代 , 4.5s 就會來一次 ygc ,

一分鐘會有 13 次左右的 gc , 每次 gc 大概在 200ms 以內(nèi)。

PS : G1 回收只有初始標記和重新標記的階段是 stw,其他階段都是并發(fā)的,

gc 200ms , 真正 stw 的時間可能只是 幾十 ~ 一百ms

不過!每分鐘 13次 的 ygc 頻率,每次接近 200ms 左右耗時 gc 效率實在太低了

新生代優(yōu)化

因為有 記憶集 (RSet) 的存在,在 G1 回收 Region 效率不變的情況下 , 優(yōu)化的點就來了

擴大每個 Region 的大小 , 也就是擴大堆內(nèi)存的大小 , 簡而言之就是升級機器的內(nèi)存 或者是 集群進行擴容增加服務器的數(shù)量

目前這個業(yè)務系統(tǒng)只有 32 臺機器 8C 16G的機器 , 給堆空間的大小只有 12G , 對億級的流量還是不太能抗住 ,

目前階段性的分析后 , 性能瓶頸不在 CPU , 我們只需要升級內(nèi)存即可

升級到 8C 32G 給堆 24~26G 的空間 , 元空間給 1G 則機器數(shù)量不變 升級到 16C 64G 給堆 58~60G 的空間 , 元空間給 1G 還可以下幾臺機器

為什么會發(fā)生 Mixed gc ?

對于 Mixed gc 的觸發(fā),大家都知道是老年代在堆內(nèi)存里占比超過 45% 就會觸發(fā)

再回顧一下:年輕代的對象進入老年代的幾個條件:

  1. 新生代 gc 過后存活對象太多沒法放入 Survivor 區(qū)域
  2. 對象年齡太大
  3. 動態(tài)年齡判定規(guī)則

其中尤其關(guān)鍵的是新生代 gc 過后存活對象過多無法放入 Survivor 區(qū)域 , 以及動態(tài)年齡判定規(guī)則這兩個條件尤其可能 讓很多對象快速進入老年代

一旦老年代頻繁達到占用堆內(nèi)存 45% 的閾值 , 那么就會頻繁觸發(fā) Mixed gc

那我們的目標就是 :

盡量避免對象過快進入老年代 , 盡量避免頻繁觸發(fā) mixed gc , 就可以做到根本上優(yōu)化 mixed gc 了

Mixed gc 優(yōu)化思路

Mixed gc 優(yōu)化的核心還是 -XX:MaxGCPauseMills 這個參數(shù)

大家可以想一下 , 假設(shè) -XX:MaxGCPauseMills 參數(shù)設(shè)置的值很大 , 導致系統(tǒng)運行很久

新生代可能都占用了堆內(nèi)存的 70% 了 , 此時才觸發(fā)新生代 gc

那么存活下來的對象可能就會很多 , 此時就會導致 Survivor 區(qū)域放不下那么多的對象 , 就會進入老年代中

或者是新生代 gc 過后 , 存活下來的對象過多 , 導致進入 Survivor 區(qū)域后觸發(fā)了動態(tài)年齡判定規(guī)則

達到了 Survivor 區(qū)域的 50% , 也會快速導致一些對象進入老年代

所以這里核心還是在于調(diào)節(jié) -XX:MaxGCPauseMills 這個參數(shù)的值 , 在保證新生代 gc 別太頻繁的同時 , 還得考慮每次 gc 過后的存活對象有多少

避免存活對象太多快速進入老年代,頻繁觸發(fā) Mixed gc

五、實際有效的調(diào)優(yōu)參數(shù)

1.-XX:MaxGCPauseMillis: 根據(jù)系統(tǒng)可以接受的響應時長和指標 觀察 JVM 的回收時間來進行修改 單位:ms

太小跟不上分配內(nèi)存的速度 , 太大 gc 的時間太長。

2.-XX:ParallelGCThreads: 在 stw 階段工作的 GC 線程數(shù) , 可以根據(jù)當前機器 CPU 核數(shù)來設(shè)置 , 建議核心數(shù) -1

-XX:ConcGCThreads: 在非 stw 階段工作的 GC 線程數(shù) , 會影響系統(tǒng)的吞吐量 , 畢竟是要跟用戶線程搶 CPU 資源

系統(tǒng)如果是計算密集型的建議是 CPU 核數(shù)的 1/4 ~ 1/3 , iO 密集型建議是 1/2

3.-XX:G1ReservePercent: G1為分配擔保預留的空間比例 也就是老年代留多少空間給 新生代來晉升 , 默認是 10%

如果晉升失敗會觸發(fā)單線程的 old gc 非常恐怖 , 建議高并發(fā)系統(tǒng)加大機器內(nèi)存 提高這個參數(shù)的比例

4.-XX:MaxMetaspaceSize: 元空間最大大小 , 在高并發(fā)且機器內(nèi)存夠的情況 建議增大元空間的大小

稍微大的點系統(tǒng)都會有很多依賴的組件,這些組件底層都有可能會用到一些反射 或者 字節(jié)碼框架 , 會生成一些你看不懂類名的類

一旦第三方框架出現(xiàn)問題 , 你的系統(tǒng)很有可能也會受影響

調(diào)大元空間 , 有監(jiān)控系統(tǒng)的設(shè)置報警機制 , 給自己系統(tǒng)爭取一些緩沖時間也是有必要的

5.-XX:TraceClassLoading -XX:TraceClassUnloading

追蹤類加載和類卸載的情況 , 可以在 Tomcat 的 catalina.out 日志文件中

打印出來JVM中加載了哪些類,卸載了哪些類

6.-XX:SoftRefLRUPolicyMSPerMB: JVM 可以忍受多久 軟引用不被回收

如果是 0 則每次都會把軟引用回收掉釋放內(nèi)存

有一個情況是反射在 15 次后會動態(tài)生成一些軟引用類來提高反射的效率 , 當 ygc 的時候把這些軟應用給回收了

但是它們的類加載器或者一些奇怪名字的類還在元空間 , 那下次要用這個反射對象的時候又得重新創(chuàng)建

就造成了元空間慢慢無限增大從而觸發(fā) OOM , 建議這個參數(shù)設(shè)置 2000 - 5000 單位是: ms

7.-XX:+DisableExplicitGC: 關(guān)閉顯示的調(diào)用 System.gc() , System.gc() 是觸發(fā)類似 full gc 的操作

開啟 or 關(guān)閉 有兩個情況

關(guān)閉: 防止 team 里有剛?cè)肼毜男√觳艑懲暌粋€業(yè)務邏輯就給你來一個 System.gc() 來優(yōu)化內(nèi)存 (別問 問那個小天才就是我)

開啟: 項目里面有 Nio 相關(guān)的操作會用到直接內(nèi)存 , 在 Java 中是 DirecByteBuffer 對象來申請的

在某些不合理的情況下導致控制這塊區(qū)域的 DirecByteBuffer 會晉升到老年代

Nio 在申請堆外內(nèi)存空間不足的時候會手動調(diào)用 System.gc() 去回收 DirecByteBuffer 堆外內(nèi)存

有用到 Nio 的系統(tǒng)把這個參數(shù)關(guān)掉是有一定概率發(fā)生 Direct buffer memory 的

關(guān)閉還是打開取決于你自己的系統(tǒng) , 以及能不能做到 code review 不讓程序員自己去顯示的調(diào)用 System.gc()

8.-XX:G1MixedGCCountTarget: 設(shè)置垃圾回收混合回收階段,最多可以拆成幾次回收

G1 的垃圾回收是分為 初始標記、并發(fā)標記、最終標記、混合回收 這幾個階段的

其中混合回收是可以并發(fā)的反復回收多次 , 這樣的好處是避免單次停頓回收 stw 時間太長

停止系統(tǒng)一會兒 , 回收掉一些 Region , 再讓系統(tǒng)運行一會兒 , 然后再次停止系統(tǒng)一會兒 , 再次回收掉一些 Region

這樣可以盡可能讓系統(tǒng)不要停頓時間過長 , 可以在多次回收的間隙 , 也運行一下

在一定程度上可以防止部分接口相應超時

六、小結(jié)

相信你看到這里 , 應該對高并發(fā)系統(tǒng)中 對象如何吃 JVM 內(nèi)存 頻繁 遇到 gc 如何解決 已經(jīng)有所了解了 。

盡管有效的解決辦法仍然是加機器 , 但是加多少臺機器 , 怎么加機器 , JVM 參數(shù)要如何設(shè)置都有所了解了。

 

責任編輯:武曉燕 來源: Shooter茶杯
相關(guān)推薦

2021-10-14 09:51:17

架構(gòu)運維技術(shù)

2020-01-17 11:00:23

流量系統(tǒng)架構(gòu)

2016-11-23 12:55:09

京東活動系統(tǒng)流量

2021-03-02 07:54:18

流量網(wǎng)關(guān)設(shè)計

2025-10-16 02:11:00

SpingCloudGateway

2018-10-23 09:22:06

2025-07-09 04:00:00

Kafka億級流量高并發(fā)

2021-12-03 10:47:28

WOT技術(shù)峰會技術(shù)

2025-06-13 09:12:28

2025-03-04 08:52:21

2021-10-12 10:00:25

架構(gòu)運維技術(shù)

2024-05-27 08:32:45

2020-12-09 08:12:30

系統(tǒng)架構(gòu)

2020-10-27 07:29:43

架構(gòu)系統(tǒng)流量

2024-11-20 19:56:36

2021-06-28 10:09:59

架構(gòu)網(wǎng)關(guān)技術(shù)

2025-08-22 09:06:57

2025-06-06 01:55:00

2024-10-28 08:01:11

2025-05-09 01:00:00

分布式限流高并發(fā)
點贊
收藏

51CTO技術(shù)棧公眾號

成人在线免费在线观看| 国产在线一区二| 69夜色精品国产69乱| 亚洲啊v在线免费视频| 一区二区三区精品视频在线| 国内精品视频免费| 中文字幕一区二区三区波野结| 香蕉国产精品| 亚洲国产精品成人一区二区| 99草草国产熟女视频在线| 麻豆网站视频在线观看| 成人免费精品视频| 国产精品欧美日韩| 久久精品免费av| gogogo高清在线观看一区二区| 日韩亚洲欧美高清| 日韩av一二三四| 影音先锋男人资源在线| 久久久激情视频| 99久久99久久| 亚洲天堂视频网| 亚洲国产国产亚洲一二三| 国产一区二区三区欧美| 美女扒开腿免费视频| 黄页免费欧美| 欧美午夜精品在线| 欧美黄网在线观看| 成年在线电影| 久久综合久久综合亚洲| 成人黄动漫网站免费| 中文字幕视频一区二区| 亚洲欧美bt| 欧美激情伊人电影| 亚洲精品卡一卡二| av在线不卡免费观看| 精品五月天久久| 久久久久亚洲AV成人网人人小说| 国产精品99精品一区二区三区∴| 都市激情亚洲色图| 国产青草视频在线观看| 成人影院在线看| 国产精品成人一区二区艾草| 日本婷婷久久久久久久久一区二区| 粉嫩小泬无遮挡久久久久久| 国产米奇在线777精品观看| 国产精品美乳一区二区免费 | 国产精品69久久久久| 国产精品1000| 狠狠综合久久av一区二区老牛| 久久久国产一区二区| 美女网站视频色| 欧美一区二区麻豆红桃视频| 亚洲人成电影网站色www| 99久久国产精| 天堂网av成人| 日韩精品中文字幕有码专区| 亚洲av无码一区二区三区观看| 精品国产午夜肉伦伦影院| 精品日韩一区二区三区| 大尺度在线观看| 美女视频免费精品| 日韩激情视频在线| 中文字幕一区二区人妻在线不卡| 色狠狠久久av综合| 亚洲欧美日韩中文在线制服| 白白色免费视频| 成人在线免费小视频| 中文字幕av一区二区| 国产调教在线观看| 久久免费av| 超碰日本道色综合久久综合| 青娱乐免费在线视频| 一区精品久久| 欧洲一区二区视频| 中文字幕你懂的| 国产美女在线观看一区| 国产精品区二区三区日本| 天堂中文在线资| 亚洲国产精品高清| 最新中文字幕久久| 免费不卡av| 福利一区视频在线观看| 在线观看国产中文字幕| 日韩区一区二| 日韩av综合网| 超碰人人人人人人人| 欧美在线网站| 45www国产精品网站| 一级一级黄色片| 国产精品一区二区不卡| 久久99精品久久久久子伦| 国产精品天堂| 亚洲精品亚洲人成人网在线播放| 免费国产黄色网址| 成人在线高清| 精品国产一二三| 少妇无套高潮一二三区| 午夜精品国产| 国产精品久久久久77777| av中文字幕免费在线观看| 久久综合久久综合久久综合| 三年中文高清在线观看第6集| 成人免费高清观看| 欧美日韩精品一区二区三区蜜桃 | 亚洲图片欧美在线| 成人av在线电影| 亚洲精品国产精品久久| 金瓶狂野欧美性猛交xxxx| 欧美探花视频资源| 亚洲欧美日韩偷拍| 首页国产精品| 欧日韩不卡在线视频| h狠狠躁死你h高h| 国产女同性恋一区二区| 亚洲国产精品成人天堂| 久久婷婷五月综合色丁香| 欧美精品一区二区在线播放| 刘亦菲国产毛片bd| 久久美女性网| 国产亚洲福利社区| 成人片在线看| 欧美日韩精品专区| 黄色aaa视频| 99国产精品视频免费观看一公开| 91精品久久久久久久久久| 日韩欧美在线观看一区二区| 一区二区激情视频| 国产无色aaa| 欧美日韩国产免费观看视频| 97久久超碰福利国产精品…| www男人的天堂| 国产精品久久久久影院色老大| 欧美 国产 日本| 极品束缚调教一区二区网站 | 精品国内片67194| 欧美一级特黄高清视频| 日韩精品1区2区3区| 激情伦成人综合小说| 色婷婷在线播放| 欧美一区二区三区喷汁尤物| 国产午夜精品理论片在线| 免费看日韩精品| 亚洲mv在线看| 国产在视频一区二区三区吞精| 亚洲天堂免费观看| 欧美h在线观看| 99re成人精品视频| 九九九九免费视频| 乱亲女h秽乱长久久久| 久久久免费高清电视剧观看| 亚洲成a人片77777精品| 亚洲在线视频免费观看| 韩国三级在线看| 极品尤物久久久av免费看| 成人羞羞视频免费| h片视频在线观看| 日韩成人av网址| 久久久国产高清| xnxx国产精品| www.亚洲天堂网| 精品一区二区三| 国产精品主播视频| 精品国产99久久久久久| 91精品国产品国语在线不卡 | 欧美日韩精品在线| jizz欧美性20| 水蜜桃久久夜色精品一区的特点| 欧美一区二区三区电影在线观看 | 96pao国产成视频永久免费| 精精国产xxxx视频在线| 欧美一区二区三区视频在线观看| 精品少妇爆乳无码av无码专区| 成人综合婷婷国产精品久久蜜臀| 妞干网在线观看视频| 亚洲国产精品嫩草影院久久av| 日韩美女免费线视频| av电影在线网| 日韩一区二区三区电影在线观看 | 欧洲不卡av| 精品久久国产老人久久综合| www.伊人久久| 国产精品视频你懂的| 青娱乐国产精品视频| 日韩视频一区| 性欧美.com| 777久久精品| 日本精品性网站在线观看| 91精品专区| 欧美成人免费网站| 无码人妻精品一区二区三区9厂 | 一区二区三区四区| 国产精品中文字幕制服诱惑| 国产99视频在线观看| 欧美性天天影视| 精品三级在线看| 伦av综合一区| 亚洲欧美日韩精品久久久久| 在线观看国产网站| 狠狠色狠狠色综合| 日韩av片在线看| 91精品天堂福利在线观看 | 国产成人在线综合| 一区在线观看| 亚洲欧洲日韩精品| 久久狠狠久久| 亚洲综合中文字幕在线观看| 台湾佬成人网| 欧美激情一级欧美精品| 午夜免费福利在线观看| 亚洲国产精品大全| h片在线免费看| 欧美日韩黄色一区二区| 日本一级一片免费视频| 亚洲色图都市小说| 国产传媒国产传媒| 99re6这里只有精品视频在线观看| av在线免费看片| 日韩精品视频网| 久久久久免费看黄a片app| 亚洲不卡av不卡一区二区| 欧美日韩高清免费| 日本妇女一区| 国产乱码精品一区二区三区中文| 国产高清亚洲| 国产中文字幕日韩| 日本综合视频| 日本精品视频网站| 日韩脚交footjobhd| 欧美激情视频一区二区| 九色porny在线| 色悠悠国产精品| 国产视频第一页在线观看| 国产视频在线一区二区| 神马一区二区三区| 欧美va日韩va| 亚洲a视频在线观看| 制服丝袜激情欧洲亚洲| 一区二区三区播放| 欧美喷潮久久久xxxxx| 日韩中文字幕高清| 色噜噜狠狠成人中文综合| 欧美亚洲精品天堂| 欧美日韩亚洲视频| 少妇太紧太爽又黄又硬又爽| 亚洲不卡av一区二区三区| 久久久久97国产| 亚洲综合色区另类av| 久久婷婷一区二区| 亚洲午夜av在线| 亚洲精品午夜久久久久久久| 亚洲午夜激情网站| 国产成人免费观看视频| 欧美日韩在线另类| av网站中文字幕| 欧美性做爰猛烈叫床潮| 亚洲视频久久久| 欧美精品日韩综合在线| 一级黄色大片免费观看| 7777精品伊人久久久大香线蕉的| 国产一区二区三区中文字幕| 欧美一区国产二区| 亚洲美女综合网| 日韩电影中文字幕在线观看| 青青青手机在线视频观看| 亚洲香蕉成视频在线观看| av影片在线看| 久久亚洲影音av资源网| 青青草原av在线| 668精品在线视频| 亚洲天堂一区二区| 国产欧美欧洲在线观看| 日韩区一区二| 久久青青草原一区二区| 精品国产欧美日韩| 懂色av一区二区三区四区五区| 亚洲欧美综合| www国产黄色| 美女视频一区在线观看| 无码人妻一区二区三区在线视频| 成人午夜电影网站| 人人人妻人人澡人人爽欧美一区| 国产精品久久久久一区| 欧美三级免费看| 亚洲 欧美综合在线网络| 无码一区二区三区| 欧美一级片在线看| 奇米影视888狠狠狠777不卡| 久久久精品一区二区| 国产理论在线| 国产又爽又黄的激情精品视频| 1204国产成人精品视频| 日韩久久不卡| 国产精品a级| 国产xxxxx视频| 大尺度一区二区| 91麻豆制片厂| 亚洲国产一区二区视频| 中文字幕在线观看高清| 亚洲电影免费观看| 在线视频1区2区| 午夜精品www| 中文成人在线| 欧洲在线视频一区| 国产精品成人一区二区网站软件| 成人免费xxxxx在线视频| 国产99久久久国产精品潘金| 免费黄色片网站| 精品magnet| 国产情侣在线播放| 亚洲天天在线日亚洲洲精| aa级大片免费在线观看| 成人福利免费观看| 九九视频精品全部免费播放| 久久久无码中文字幕久...| 日韩经典中文字幕一区| 一区二区视频观看| 亚洲精品乱码久久久久久久久| 69xxxx国产| 日韩av综合网站| 色女人在线视频| 91久久精品国产| 久久激情电影| av免费中文字幕| 成人精品鲁一区一区二区| 在线免费看av网站| 欧美日韩一区视频| 久久久pmvav| 欧美亚州一区二区三区| 99re热精品视频| 黄色一级大片免费| 国产精品456| 777777国产7777777| 欧美三级日韩三级国产三级| 巨骚激情综合| 国产精品1区2区在线观看| 亚洲精品无吗| 国产女大学生av| 99久久99精品久久久久久 | 嫩草在线视频| 国产日韩欧美黄色| 日韩欧美不卡| 一区精品久久| 少妇久久久久久被弄到高潮| 久久国产精品一区二区| 麻豆视频免费在线播放| 欧美色综合久久| av资源网站在线观看| 国产成人精品最新| 国产不卡一区| 老头吃奶性行交视频| 久久精品人人做| 免费在线观看av的网站| 一区二区三区视频观看| 精品123区| 国产奶头好大揉着好爽视频| 久久99国产精品麻豆| 潘金莲一级黄色片| 欧美一区二区大片| 日韩另类在线| 国产精品一区而去| 国产精品腿扒开做爽爽爽挤奶网站| 日批在线观看视频| 欧美性xxxxx极品| 国产系列电影在线播放网址| 国产噜噜噜噜噜久久久久久久久 | 色av中文字幕一区| www.欧美视频| 国产av熟女一区二区三区| 成人av手机在线观看| 久久久久亚洲av成人毛片韩| 一区二区欧美亚洲| 中文字幕成人| 妞干网在线视频观看| 久久久亚洲高清| 国产精品久久久久久69| 国内精品小视频| 国产乱码精品一区二区亚洲| 无尽裸体动漫2d在线观看| 一区二区三区四区中文字幕| 午夜视频免费看| 国产噜噜噜噜久久久久久久久| 欧美先锋影音| 欧美福利第一页| 日韩欧美久久久| 成人动漫一区| 五月天激情图片| www成人在线观看| 国产日韩在线观看一区| 韩国精品久久久999| 日韩在线观看一区 | 久久久www免费人成精品| 一级黄色大毛片| 欧美专区在线观看| 欧美 日韩 国产精品免费观看| 久久丫精品国产亚洲av不卡| 在线不卡中文字幕| 国产伦精品一区二区三区视频金莲| 天天成人综合网| 久久久.com| 亚洲av色香蕉一区二区三区|