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

高吞吐低延遲Java應(yīng)用的垃圾回收優(yōu)化

開發(fā) 后端 架構(gòu)
高性能應(yīng)用構(gòu)成了現(xiàn)代網(wǎng)絡(luò)的支柱。LinkedIn有許多內(nèi)部高吞吐量服務(wù)來滿足每秒數(shù)千次的用戶請求。要優(yōu)化用戶體驗(yàn),低延遲地響應(yīng)這些請求非常重要。

高性能應(yīng)用構(gòu)成了現(xiàn)代網(wǎng)絡(luò)的支柱。LinkedIn有許多內(nèi)部高吞吐量服務(wù)來滿足每秒數(shù)千次的用戶請求。要優(yōu)化用戶體驗(yàn),低延遲地響應(yīng)這些請求非常重要。

比如說,用戶經(jīng)常用到的一個(gè)功能是了解動(dòng)態(tài)信息——不斷更新的專業(yè)活動(dòng)和內(nèi)容的列表。動(dòng)態(tài)信息在LinkedIn隨處可見,包括公司頁面,學(xué)校頁面 以及最重要的主頁?;A(chǔ)動(dòng)態(tài)信息數(shù)據(jù)平臺(tái)為我們的經(jīng)濟(jì)圖譜(會(huì)員,公司,群組等等)中各種實(shí)體的更新建立索引,它必須高吞吐低延遲地實(shí)現(xiàn)相關(guān)的更新。

圖1 LinkedIn 動(dòng)態(tài)信息

這些高吞吐低延遲的Java應(yīng)用轉(zhuǎn)變?yōu)楫a(chǎn)品,開發(fā)人員必須確保應(yīng)用開發(fā)周期的每個(gè)階段一致的性能。確定優(yōu)化垃圾回收(Garbage Collection,GC)的設(shè)置對(duì)達(dá)到這些指標(biāo)非常關(guān)鍵。

本文章通過一系列步驟來明確需求并優(yōu)化GC,目標(biāo)讀者是為實(shí)現(xiàn)應(yīng)用的高吞吐低延遲,對(duì)使用系統(tǒng)方法優(yōu)化GC感興趣的開發(fā)人員。文章中的方法來自于LinkedIn構(gòu)建下一代動(dòng)態(tài)信息數(shù)據(jù)平臺(tái)過程。這些方法包括但不局限于以下幾點(diǎn):并發(fā)標(biāo)記清除(Concurrent Mark Sweep,CMS)和G1垃圾回收器的CPU和內(nèi)存開銷,避免長期存活對(duì)象引起的持續(xù)GC周期,優(yōu)化GC線程任務(wù)分配使性能提升,以及GC停頓時(shí)間可預(yù)測所需的OS設(shè)置。

優(yōu)化GC的正確時(shí)機(jī)?

GC運(yùn)行隨著代碼級(jí)的優(yōu)化和工作負(fù)載而發(fā)生變化。因此在一個(gè)已實(shí)施性能優(yōu)化的接近完成的代碼庫上調(diào)整GC非常重要。但是在端到端的基本原型上進(jìn)行初 步分析也很有必要,該原型系統(tǒng)使用存根代碼并模擬了可代表產(chǎn)品環(huán)境的工作負(fù)載。這樣可以捕捉該架構(gòu)延遲和吞吐量的真實(shí)邊界,進(jìn)而決定是否縱向或橫向擴(kuò)展。

在下一代動(dòng)態(tài)信息數(shù)據(jù)平臺(tái)的原型階段,幾乎實(shí)現(xiàn)了所有端到端的功能,并且模擬了當(dāng)前產(chǎn)品基礎(chǔ)架構(gòu)所服務(wù)的查詢負(fù)載。從中我們獲得了多種用來衡量應(yīng)用性能的工作負(fù)載特征和足夠長時(shí)間運(yùn)行情況下的GC特征。

優(yōu)化GC的步驟

下面是為滿足高吞吐,低延遲需求優(yōu)化GC的總體步驟。也包括在動(dòng)態(tài)信息數(shù)據(jù)平臺(tái)原型實(shí)施的具體細(xì)節(jié)。可以看到在ParNew/CMS有***的性能,但我們也實(shí)驗(yàn)了G1垃圾回收器。

1.理解GC基礎(chǔ)知識(shí)

理解GC工作機(jī)制非常重要,因?yàn)樾枰{(diào)整大量的參數(shù)。Oracle的Hotspot JVM 內(nèi)存管理白皮書是開始學(xué)習(xí)Hotspot JVM GC算法非常好的資料。了解G1垃圾回收器,請查看該論文

2. 仔細(xì)考量GC需求

為降低應(yīng)用性能的GC開銷,可以優(yōu)化GC的一些特征。吞吐量、延遲等這些GC特征應(yīng)該長時(shí)間測試運(yùn)行觀察,確保特征數(shù)據(jù)來自于應(yīng)用程序的處理對(duì)象數(shù)量發(fā)生變化的多個(gè)GC周期。

  • Stop-the-world回收器回收垃圾時(shí)會(huì)暫停應(yīng)用線程。停頓的時(shí)長和頻率不應(yīng)該對(duì)應(yīng)用遵守SLA產(chǎn)生不利的影響。

  • 并發(fā)GC算法與應(yīng)用線程競爭CPU周期。這個(gè)開銷不應(yīng)該影響應(yīng)用吞吐量。

  • 不壓縮GC算法會(huì)引起堆碎片化,導(dǎo)致full GC長時(shí)間Stop-the-world停頓。

  • 垃圾回收工作需要占用內(nèi)存。一些GC算法產(chǎn)生更高的內(nèi)存占用。如果應(yīng)用程序需要較大的堆空間,要確保GC的內(nèi)存開銷不能太大。

  • 清晰地了解GC日志和常用的JVM參數(shù)對(duì)簡單調(diào)整GC運(yùn)行很有必要。GC運(yùn)行隨著代碼復(fù)雜度增長或者工作特性變化而改變。

我們使用Linux OS的Hotspot Java7u51,32GB堆內(nèi)存,6GB新生代(young generation)和-XX:CMSInitiatingOccupancyFraction值為70(老年代GC觸發(fā)時(shí)其空間占用率)開始實(shí)驗(yàn)。設(shè)置較大的堆內(nèi)存用來維持長期存活對(duì)象的對(duì)象緩存。一旦這個(gè)緩存被填充,提升到老年代的對(duì)象比例顯著下降。

使用初始的GC配置,每三秒發(fā)生一次80ms的新生代GC停頓,超過百分之99.9的應(yīng)用延遲100ms。這樣的GC很可能適合于SLA不太嚴(yán)格要求延遲的許多應(yīng)用。然而,我們的目標(biāo)是盡可能降低百分之99.9應(yīng)用的延遲,為此GC優(yōu)化是必不可少的。

3.理解GC指標(biāo)

優(yōu)化之前要先衡量。了解GC日志的詳細(xì)細(xì)節(jié)(使用這些選項(xiàng):-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime)可以對(duì)該應(yīng)用的GC特征有總體的把握。

LinkedIn的內(nèi)部監(jiān)控和報(bào)表系統(tǒng),inGraphsNaarad,生成了各種有用的指標(biāo)可視化圖形,比如GC停頓時(shí)間百分比,一次停頓***持續(xù)時(shí)間,長時(shí)間內(nèi)GC頻率。除了Naarad,有很多開源工具比如gclogviewer可以從GC日志創(chuàng)建可視化圖形。

在這個(gè)階段,需要確定GC頻率和停頓時(shí)長是否影響應(yīng)用滿足延遲性需求的能力。

4.降低GC頻率

在分代GC算法中,降低回收頻率可以通過:(1)降低對(duì)象分配/提升率;(2)增加代空間的大小。

在Hotspot JVM中,新生代GC停頓時(shí)間取決于一次垃圾回收后對(duì)象的數(shù)量,而不是新生代自身的大小。增加新生代大小對(duì)于應(yīng)用性能的影響需要仔細(xì)評(píng)估:

  • 如果更多的數(shù)據(jù)存活而且被復(fù)制到survivor區(qū)域,或者每次垃圾回收更多的數(shù)據(jù)提升到老年代,增加新生代大小可能導(dǎo)致更長的新生代GC停頓。

  • 另一方面,如果每次垃圾回收后存活對(duì)象數(shù)量不會(huì)大幅增加,停頓時(shí)間可能不會(huì)延長。在這種情況下,減少GC頻率可能使應(yīng)用總體延遲降低和(或)吞吐量增加。

對(duì)于大部分為短期存活對(duì)象的應(yīng)用,僅僅需要控制前面所說的參數(shù)。對(duì)于創(chuàng)建長期存活對(duì)象的應(yīng)用,就需要注意,被提升的對(duì)象可能很長時(shí)間都不能被老年代 GC周期回收。如果老年代GC觸發(fā)閾值(老年代空間占用率百分比)比較低,應(yīng)用將陷入不斷的GC周期。設(shè)置高的GC觸發(fā)閾值可避免這一問題。

由于我們的應(yīng)用在堆中維持了長期存活對(duì)象的較大緩存,將老年代GC觸發(fā)閾值設(shè)置為-XX:CMSInitiatingOccupancyFraction=92 -XX:+UseCMSInitiatingOccupancyOnly。我們也試圖增加新生代大小來減少新生代回收頻率,但是并沒有采用,因?yàn)檫@增加了應(yīng)用延遲。

5.縮短GC停頓時(shí)間

減少新生代大小可以縮短新生代GC停頓時(shí)間,因?yàn)檫@樣被復(fù)制到survivor區(qū)域或者被提升的數(shù)據(jù)更少。但是,正如前面提到的,我們要觀察減少新 生代大小和由此導(dǎo)致的GC頻率增加對(duì)于整體應(yīng)用吞吐量和延遲的影響。新生代GC停頓時(shí)間也依賴于tenuring threshold(提升閾值)和空間大小(見第6步)。

使用CMS嘗試最小化堆碎片和與之關(guān)聯(lián)的老年代垃圾回收full GC停頓時(shí)間。通過控制對(duì)象提升比例和減小-XX:CMSInitiatingOccupancyFraction的值使老年代GC在低閾值時(shí)觸發(fā)。所有選項(xiàng)的細(xì)節(jié)調(diào)整和他們相關(guān)的權(quán)衡,請查看Web Services的Java 垃圾回收Java 垃圾回收精粹。

我們觀察到Eden區(qū)域的大部分新生代被回收,幾乎沒有對(duì)象在survivor區(qū)域死亡,所以我們將tenuring threshold從8降低到2(使用選項(xiàng):-XX:MaxTenuringThreshold=2),為的是縮短新生代垃圾回收消耗在數(shù)據(jù)復(fù)制上的時(shí)間。

我們也注意到新生代回收停頓時(shí)間隨著老年代空間占用率上升而延長。這意味著來自老年代的壓力使得對(duì)象提升花費(fèi)更多的時(shí)間。為解決這個(gè)問題,將總的堆內(nèi)存大小增加到40GB,減小-XX:CMSInitiatingOccupancyFraction的值到80,更快地開始老年代回收。盡管-XX:CMSInitiatingOccupancyFraction的值減小了,增大堆內(nèi)存可以避免不斷的老年代GC。在本階段,我們獲得了70ms新生代回收停頓和百分之99.9延遲80ms。

6.優(yōu)化GC工作線程的任務(wù)分配

進(jìn)一步縮短新生代停頓時(shí)間,我們決定研究優(yōu)化與GC線程綁定任務(wù)的選項(xiàng)。

-XX:ParGCCardsPerStrideChunk 選項(xiàng)控制GC工作線程的任務(wù)粒度,可以幫助不使用補(bǔ)丁而獲得***性能,這個(gè)補(bǔ)丁用來優(yōu)化新生代垃圾回收的卡表掃描時(shí)間。有趣的是新生代GC時(shí)間隨著老年代空間的增加而延長。將這個(gè)選項(xiàng)值設(shè)為32678,新生代回收停頓時(shí)間降低到平均50ms。此時(shí)百分之99.9應(yīng)用延遲60ms。

也有其他選項(xiàng)將任務(wù)映射到GC線程,如果OS允許的話,-XX:+BindGCTaskThreadsToCPUs選項(xiàng)綁定GC線程到個(gè)別的CPU核。-XX:+UseGCTaskAffinity使用affinity參數(shù)將任務(wù)分配給GC工作線程。然而,我們的應(yīng)用并沒有從這些選項(xiàng)發(fā)現(xiàn)任何益處。實(shí)際上,一些調(diào)查顯示這些選項(xiàng)在Linux系統(tǒng)不起作用[1,2]。

7.了解GC的CPU和內(nèi)存開銷

并發(fā)GC通常會(huì)增加CPU的使用。我們觀察了運(yùn)行良好的CMS默認(rèn)設(shè)置,并發(fā)GC和G1垃圾回收器共同工作引起的CPU使用增加顯著降低了應(yīng)用的吞 吐量和延遲。與CMS相比,G1可能占用了應(yīng)用更多的內(nèi)存開銷。對(duì)于低吞吐量的非計(jì)算密集型應(yīng)用,GC的高CPU使用率可能不需要擔(dān)心。

 

圖2 ParNew/CMS和G1的CPU使用百分?jǐn)?shù)%:相對(duì)來說CPU使用率變化明顯的節(jié)點(diǎn)使用G1
選項(xiàng)-XX:G1RSetUpdatingPauseTimePercent=20

 

 

圖3 ParNew/CMS和G1每秒服務(wù)的請求數(shù):吞吐量較低的節(jié)點(diǎn)使用G1
選項(xiàng)-XX:G1RSetUpdatingPauseTimePercent=20

 

8.為GC優(yōu)化系統(tǒng)內(nèi)存和I/O管理

通常來說,GC停頓發(fā)生在(1)低用戶時(shí)間,高系統(tǒng)時(shí)間和高時(shí)鐘時(shí)間和(2)低用戶時(shí)間,低系統(tǒng)時(shí)間和高時(shí)鐘時(shí)間。這意味著基礎(chǔ)的進(jìn)程/OS設(shè)置存 在問題。情況(1)可能說明Linux從JVM偷頁,情況(2)可能說明清除磁盤緩存時(shí)Linux啟動(dòng)GC線程,等待I/O時(shí)線程陷入內(nèi)核。在這些情況下 如何設(shè)置參數(shù)可以參考該P(yáng)PT

為避免運(yùn)行時(shí)性能損失,啟動(dòng)應(yīng)用時(shí)使用JVM選項(xiàng)-XX:+AlwaysPreTouch訪問和清零頁面。設(shè)置vm.swappiness為零,除非在絕對(duì)必要時(shí),OS不會(huì)交換頁面。

可能你會(huì)使用mlock將JVM頁pin在內(nèi)存中,使OS不換出頁面。但是,如果系統(tǒng)用盡了所有的內(nèi)存和交換空間,OS通過kill進(jìn)程來回收內(nèi)存。通常情況下,Linux內(nèi)核會(huì)選擇高駐留內(nèi)存占用但還沒有長時(shí)間運(yùn)行的進(jìn)程(OOM情況下killing進(jìn)程的工作流)。對(duì)我們而言,這個(gè)進(jìn)程很有可能就是我們的應(yīng)用程序。一個(gè)服務(wù)具備優(yōu)雅降級(jí)(適度退化)的特點(diǎn)會(huì)更好,服務(wù)突然故障預(yù)示著不太好的可操作性——因此,我們沒有使用mlock而是vm.swappiness避免可能的交換懲罰。

LinkedIn動(dòng)態(tài)信息數(shù)據(jù)平臺(tái)的GC優(yōu)化

對(duì)于該平臺(tái)原型系統(tǒng),我們使用Hotspot JVM的兩個(gè)算法優(yōu)化垃圾回收:

  • 新生代垃圾回收使用ParNew,老年代垃圾回收使用CMS。

  • 新生代和老年代使用G1。G1用來解決堆大小為6GB或者更大時(shí)存在的低于0.5秒穩(wěn)定的、可預(yù)測停頓時(shí)間的問題。在我們用G1實(shí)驗(yàn)過程中,盡管 調(diào)整了各種參數(shù),但沒有得到像ParNew/CMS一樣的GC性能或停頓時(shí)間的可預(yù)測值。我們查詢了使用G1發(fā)生內(nèi)存泄漏相關(guān)的一個(gè)bug[3],但還不 能確定根本原因。

使用ParNew/CMS,應(yīng)用每三秒40-60ms的新生代停頓和每小時(shí)一個(gè)CMS周期。JVM選項(xiàng)如下:

  1. // JVM sizing options 
  2. -server -Xms40g -Xmx40g -XX:MaxDirectMemorySize=4096m -XX:PermSize=256m -XX:MaxPermSize=256m    
  3. // Young generation options 
  4. -XX:NewSize=6g -XX:MaxNewSize=6g -XX:+UseParNewGC -XX:MaxTenuringThreshold=2 -XX:SurvivorRatio=8 -XX:+UnlockDiagnosticVMOptions -XX:ParGCCardsPerStrideChunk=32768 
  5. // Old generation  options 
  6. -XX:+UseConcMarkSweepGC -XX:CMSParallelRemarkEnabled -XX:+ParallelRefProcEnabled -XX:+CMSClassUnloadingEnabled  -XX:CMSInitiatingOccupancyFraction=80 -XX:+UseCMSInitiatingOccupancyOnly    
  7. // Other options 
  8. -XX:+AlwaysPreTouch -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -XX:-OmitStackTraceInFastThrow 

使用這些選項(xiàng),對(duì)于幾千次讀請求的吞吐量,應(yīng)用百分之99.9的延遲降低到60ms。

參考:

[1] -XX:+BindGCTaskThreadsToCPUs似乎在Linux系統(tǒng)上不起作用,因?yàn)?code>hotspot/src/os/linux/vm/os_linux.cpp的distribute_processes方法在JDK7或JDK8沒有實(shí)現(xiàn)。
[2] -XX:+UseGCTaskAffinity選項(xiàng)在JDK7和JDK8的所有平臺(tái)似乎都不起作用,因?yàn)槿蝿?wù)的affinity屬性永遠(yuǎn)被設(shè)置為sentinel_worker = (uint) -1。源碼見hotspot/src/share/vm/gc_implementation/parallelScavenge/{gcTaskManager.cpp,gcTaskThread.cpp, gcTaskManager.cpp}
[3] G1存在一些內(nèi)存泄露的bug,可能Java7u51沒有修改。這個(gè)bug僅在Java 8修正了。

原文鏈接: linkedin 翻譯: ImportNew.com - hejiani
譯文鏈接: http://www.importnew.com/11336.html

 
 
責(zé)任編輯:王雪燕 來源: ImportNew
相關(guān)推薦

2013-10-11 11:22:14

GraphDBLinux內(nèi)存管理數(shù)據(jù)庫

2019-01-21 09:26:51

數(shù)據(jù)庫NoSQL Oracle

2023-08-08 10:29:55

JVM優(yōu)化垃圾回收

2025-03-04 08:52:21

2020-08-07 14:05:02

垃圾回收器ZGC

2021-01-04 10:08:07

垃圾回收Java虛擬機(jī)

2024-03-20 10:39:52

微軟Garnet緩存存儲(chǔ)

2009-07-06 17:34:22

Java垃圾回收

2022-03-21 11:33:11

JVM垃圾回收器垃圾回收算法

2024-03-27 10:27:35

延遲垃圾收集器

2009-06-25 17:48:24

Java垃圾回收

2010-12-13 11:14:04

Java垃圾回收算法

2022-11-30 08:17:41

JVM調(diào)優(yōu)技巧

2017-08-04 10:53:30

回收算法JVM垃圾回收器

2022-01-20 10:34:49

JVM垃圾回收算法

2011-07-04 16:48:56

JAVA垃圾回收機(jī)制GC

2021-03-03 08:13:57

模式垃圾回收

2020-07-09 08:26:42

Kubernetes容器開發(fā)

2012-05-21 10:35:20

Windows Pho

2009-06-23 14:15:00

Java垃圾回收
點(diǎn)贊
收藏

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

国产内射老熟女aaaa| 国产精品91免费在线| 久久久久亚洲av无码麻豆| 日本动漫同人动漫在线观看| 国产成人日日夜夜| 韩剧1988免费观看全集| 久久国产柳州莫菁门| 国精品产品一区| 亚洲精品菠萝久久久久久久| 国产专区一区二区三区| 中文天堂在线播放| 欧美午夜影院| 国产亚洲精品久久久久久| 国产视频手机在线播放| 天堂8中文在线| 国产亚洲精品bt天堂精选| 国产精品久久久久久久久久| 欧美国产精品一二三| 国产不卡av一区二区| 欧美一卡2卡三卡4卡5免费| www.99热这里只有精品| 成人ww免费完整版在线观看| 久久婷婷久久一区二区三区| 91成人免费看| 无码人妻精品一区二区蜜桃色欲| 综合久久一区| 一区二区三区精品99久久| 无码人妻精品一区二区三区99不卡| 色天使综合视频| 亚洲大片免费看| 黄色a级在线观看| 精品影院一区| 91影院在线观看| 91视频网页| 91在线公开视频| 日本sm残虐另类| 欧美性资源免费| 久久精品久久精品久久| 你懂的国产精品| 中文字幕日韩精品在线| 国精产品一区二区三区| 欧美黑人做爰爽爽爽| 日韩视频在线你懂得| 在线不卡一区二区三区| 久久精品xxxxx| 色视频成人在线观看免| a√天堂在线观看| freexxx性亚洲精品| 亚洲伊人色欲综合网| 中文精品一区二区三区| 日韩精品成人av| 国产精品少妇自拍| 亚洲精品中文字幕在线| 成人在线观看一区| 国产精品网站在线| 色一情一乱一伦一区二区三区| 青青视频在线观| 久久中文字幕电影| 久久资源av| 免费动漫网站在线观看| 久久免费电影网| 美女主播视频一区| 久草福利在线| 国产女主播一区| 天堂精品视频| 欧美成年黄网站色视频| 亚洲色图清纯唯美| 黑人巨茎大战欧美白妇| 欧美xxxx免费虐| 亚洲高清久久久| www.av中文字幕| 亚洲黄色网址| 欧美亚洲一区三区| 国产无遮挡猛进猛出免费软件| 欧美爱爱视频| 欧美成人一级视频| 久久性爱视频网站| 免费成人网www| 在线国产精品播放| 欧美国产日韩在线观看成人| 精品动漫av| 日韩免费视频在线观看| 中文字幕欧美在线观看| 国产精品伊人色| 精品无人区一区二区三区 | 精品成人在线观看| av网站有哪些| 久久性感美女视频| 欧美精品久久久久久久| 日韩综合在线观看| 激情综合色综合久久综合| 国产精华一区| 成人午夜电影在线观看| 一区二区三区中文字幕精品精品| 久久亚洲精品无码va白人极品| 中文字幕一区久| 欧美日韩午夜在线| 岛国av免费观看| 啄木系列成人av电影| 日韩一区二区三区国产| 国产精品19乱码一区二区三区| 久久精品一区二区三区中文字幕 | 日韩欧美中文字幕一区二区三区| 亚洲激情在线视频| 五月天婷婷丁香网| 亚洲日韩成人| 亚洲tv在线观看| 可以在线观看的黄色| 亚洲高清视频在线播放| 黄网站免费久久| 麻豆一区区三区四区产品精品蜜桃| 色开心亚洲综合| 欧美日韩在线视频首页| av噜噜在线观看| 久久99久久人婷婷精品综合 | 久操av在线| 欧美色网站导航| 免费看黄色片的网站| 天天综合网91| 国产成人jvid在线播放| 韩国av免费在线| 中文字幕色av一区二区三区| 国产在线青青草| 视频在线一区| 俺去亚洲欧洲欧美日韩| 日韩精品成人免费观看视频| 国产宾馆实践打屁股91| 一区二区免费电影| 成人欧美一区二区三区的电影| 日韩欧美一区二区视频| 亚洲 欧美 国产 另类| 久久亚洲精选| 久久久久久久久久久一区| 欧美日韩经典丝袜| 日韩一区二区三区在线观看| 亚洲毛片亚洲毛片亚洲毛片| 久久精品一区二区三区中文字幕 | 欧美中文一区二区| 欧美性资源免费| 五月天激情开心网| 亚洲成人一区二区| 日本少妇xxxx| 在线日本高清免费不卡| 国产精品av一区| 男女在线观看视频| 欧美xxxxxxxx| 九九热国产在线| 国产精品影音先锋| 日韩在线视频在线| 在线视频亚洲欧美中文| 欧美老肥婆性猛交视频| 亚洲福利在线观看视频| 亚洲一区二区三区免费视频| 中文字幕人妻一区| 在线日韩欧美| 精品久久久久久亚洲| 漫画在线观看av| 亚洲美女动态图120秒| 在线免费黄色av| 国产欧美一区二区三区网站 | 久久精品国产亚洲av麻豆色欲| 国产ts人妖一区二区| 黄色三级中文字幕| 牛牛精品成人免费视频| 欧美亚洲另类激情另类| 懂色av中文在线| 欧美美女一区二区在线观看| 日韩国产第一页| 国产99久久久国产精品| 无码中文字幕色专区| 蜜臀av免费一区二区三区| 国产精品爽爽ⅴa在线观看| 久久bbxx| 亚洲成人免费在线视频| 国产精品va无码一区二区三区| 国产欧美精品日韩区二区麻豆天美| 三级一区二区三区| 欧美日韩一区二区国产| 精品国产一区二区三区四区vr| 欧美黄色三级| 久久亚洲精品中文字幕冲田杏梨| 亚洲av综合色区无码一区爱av| 欧美日韩国产一区中文午夜| 中文天堂资源在线| 国产成人无遮挡在线视频| 免费在线a视频| 日韩理论电影大全| 国产精品国模大尺度私拍| 视频二区不卡| 欧美精品一二区| 日本精品一区二区在线观看| 欧洲生活片亚洲生活在线观看| 91日韩中文字幕| 91啪九色porn原创视频在线观看| 日韩一区二区三区久久| 亚洲国产专区校园欧美| 亚洲一区3d动漫同人无遮挡| 国产精品传媒| 成人一区二区电影| 欧美大电影免费观看| 欧美理论片在线观看| 可以在线观看的黄色| 日韩欧美高清在线| 久久这里只有精品9| 亚洲福利国产精品| 黄色片子在线观看| 国产亚洲自拍一区| 精品视频站长推荐| 韩国视频一区二区| 成人性做爰aaa片免费看不忠| 激情91久久| 一区二区三区不卡在线| 蜜臀av免费一区二区三区| 成人羞羞视频免费| 欧美在线一级| 国产成人精品优优av| heyzo在线欧美播放| 久久精品国产电影| 成年在线观看免费人视频| 亚洲精品xxxx| 亚洲毛片在线播放| 日韩视频在线你懂得| 国产精品久久777777换脸| 色久综合一二码| 欧美激情黑白配| 亚洲18女电影在线观看| 欧美黄色一区二区三区| 综合av第一页| 美女福利视频网| 亚洲国产成人午夜在线一区| 波多野结衣 在线| av一区二区三区在线| 国产精品成人免费一区久久羞羞| 精品亚洲成a人在线观看| 亚洲免费一级视频| 日韩电影在线观看网站| 日韩a在线播放| 亚洲欧美日本国产专区一区| 美女日批免费视频| 91久久亚洲| 国产自产在线视频| 国内成人在线| 和岳每晚弄的高潮嗷嗷叫视频| 欧美/亚洲一区| 麻豆映画在线观看| 欧美在线三级| 六月婷婷激情综合| 亚洲午夜av| 久激情内射婷内射蜜桃| 国产一区二区三区的电影 | 麻豆精品在线观看| 最新中文字幕2018| 美女免费视频一区| 天天摸天天舔天天操| 国产伦精品一区二区三区免费| 蜜桃福利午夜精品一区| 国产精品影视网| 久久久久无码国产精品一区李宗瑞 | 99精品人妻无码专区在线视频区| 91麻豆精品国产91久久久久久 | 亚洲精品一区二区三区蜜桃久| 欧美人与拘性视交免费看| 欧美日韩三区四区| 日韩av有码| 4444在线观看| 9国产精品视频| 日韩精品免费播放| 久久精品国内一区二区三区| 尤物网站在线看| 粉嫩av一区二区三区在线播放| av电影在线播放| 久久久久久久综合狠狠综合| 久久久久99精品成人| 亚洲老司机在线| 国产成人在线免费观看视频| 色综合久久九月婷婷色综合| 波多野结衣视频免费观看| 在线播放中文一区| 高清毛片aaaaaaaaa片| 亚洲欧美一区二区三区久久| av女优在线| 久久91亚洲人成电影网站| 91美女精品| 国产不卡av在线免费观看| 亚洲精品tv| 精品产品国产在线不卡| 第一会所sis001亚洲| 2021狠狠干| 久久高清免费观看| www.超碰97.com| 波多野结衣一区二区三区 | 一区二区三区日韩| 在线观看免费av片| 在线成人免费视频| 视频一区二区在线播放| 一区二区成人av| 青草av在线| 国产精品爽黄69天堂a| jizz18欧美18| 午夜欧美性电影| 亚洲黄色大片| 国产美女视频免费看| av网站免费线看精品| 久久嫩草捆绑紧缚| 精品久久久久人成| 国产乱码精品一区二区| 国产午夜精品久久久 | 黄色一级片免费的| 99精品在线免费| 日本黄色片免费观看| 色综合视频在线观看| 国产免费久久久| 亚洲一级免费视频| 国产夫妻在线播放| 成人日韩在线电影| 国产亚洲精品美女久久久久久久久久| 天堂а√在线中文在线| 蜜桃av一区二区在线观看| 大黑人交xxx极品hd| 亚洲最大成人综合| 一本色道久久综合熟妇| 亚洲乱码国产乱码精品精| 日本孕妇大胆孕交无码| 国产日韩欧美日韩大片| 国产一区二区三区天码| 天堂…中文在线最新版在线| 国产麻豆精品视频| 18啪啪污污免费网站| 色婷婷香蕉在线一区二区| 全部免费毛片在线播放一个| 欧美大片大片在线播放| 96sao精品免费视频观看| 日韩精品无码一区二区三区| 久久久久久自在自线| 中文字幕在线免费看线人 | 色哟哟亚洲精品一区二区| 三上悠亚国产精品一区二区三区| 精品国产乱码一区二区三区四区 | 亚洲中文字幕久久精品无码喷水| 97精品电影院| 日韩免费视频网站| 精品国产精品网麻豆系列| 欧美xxx黑人xxx水蜜桃| 俄罗斯精品一区二区| 综合色一区二区| 久久久久亚洲av无码专区首jn| 国产精品久久久久久久久免费樱桃| 亚洲 欧美 日韩 在线| 亚洲天堂影视av| 日本电影欧美片| 青青影院一区二区三区四区| 视频一区视频二区中文| 91激情视频在线观看| 在线免费观看日韩欧美| melody高清在线观看| 国产欧亚日韩视频| 欧美影院三区| 做a视频在线观看| 亚洲美女在线一区| 秋霞网一区二区| 91豆花精品一区| 国产在视频线精品视频www666| 宅男噜噜噜66国产免费观看| 欧美极品xxx| 一区精品在线观看| 久久国产精品偷| 白白在线精品| 97成人在线观看视频| 国产欧美精品在线观看| 96日本xxxxxⅹxxx17| 欧美另类暴力丝袜| 果冻天美麻豆一区二区国产| 久久无码高潮喷水| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 99久久精品费精品国产风间由美| 在线观看免费不卡av| 亚洲一区二区精品视频| 视频午夜在线| 国产精品久久久久久久久久久新郎| 天天揉久久久久亚洲精品| 黄色性视频网站| 欧美性黄网官网| 老司机av在线免费看| 春色成人在线视频| 先锋a资源在线看亚洲| 羞羞在线观看视频| 亚洲国产精品久久久久| 国产福利亚洲| 波多野结衣av一区二区全免费观看| 99精品国产99久久久久久白柏| 亚洲视屏在线观看| 久久69精品久久久久久国产越南| 午夜精品影视国产一区在线麻豆| 污网站免费在线| 午夜影院久久久| 在线日本中文字幕| 国产精品综合久久久久久| 青青草精品视频| 日韩精品乱码久久久久久| 自拍偷拍亚洲欧美|