精品欧美一区二区三区在线观看 _久久久久国色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)

少妇高潮一区二区三区69| 国精品无码一区二区三区| 性xxxxfreexxxxx欧美丶| 26uuu精品一区二区三区四区在线| 热门国产精品亚洲第一区在线| 黄色片网站免费| 欧美影院在线| 亚洲一区自拍| 这里只有精品在线播放| 国产在线a视频| 电影在线观看一区| 中文字幕国产精品一区二区| www国产亚洲精品| 久久久精品毛片| 欧美日韩 国产精品| 亚洲人成网7777777国产| 日本在线观看视频一区| 最近高清中文在线字幕在线观看1| 亚洲产国偷v产偷v自拍涩爱| 在线日韩成人| 欧美在线观看视频一区二区| 加勒比成人在线| 女女色综合影院| 99久久国产综合精品女不卡| 91久久嫩草影院一区二区| 国产精品一区无码| 一区视频在线| 久热精品在线视频| 国产又粗又硬视频| 亚洲精品一级二级三级| 欧美精品一区二区久久婷婷| 亚洲激情在线看| 播放一区二区| 日韩欧美福利视频| 99精品一级欧美片免费播放| аⅴ资源新版在线天堂| 91浏览器在线视频| 蜜桃传媒视频麻豆一区| 少妇精品高潮欲妇又嫩中文字幕| 国产成人精品影视| 91九色国产在线| 亚洲天堂视频网| 蜜臀av一区二区在线观看| 国产91久久婷婷一区二区| 九一国产在线观看| 亚洲激情视频| 国内伊人久久久久久网站视频 | 99a精品视频在线观看| 91精选在线观看| 亚洲色图欧美自拍| 精品网站999| 日韩一区二区三区观看| 女王人厕视频2ⅴk| 日韩视频一二区| 日韩精品一区二| 国产伦精品一区二区三区精品| 国产suv精品一区二区四区视频| 欧美成人女星排名| 国产黑丝一区二区| 思热99re视热频这里只精品| 日韩精品高清视频| 制服 丝袜 综合 日韩 欧美| 青青草成人影院| 一区二区三区美女xx视频| 国产第一页精品| 91九色精品国产一区二区| 久久精品夜夜夜夜夜久久| 亚洲色图综合区| 黄色工厂这里只有精品| 欧美一级黑人aaaaaaa做受| 无码人妻丰满熟妇精品| 美腿丝袜在线亚洲一区| 亚洲a∨日韩av高清在线观看| 国产高清免费在线观看| 成人白浆超碰人人人人| 久久久久无码国产精品一区| 国产黄色在线播放| 亚洲精品免费在线播放| 久久综合999| 欧洲精品久久| 国产成人在线视频免费观看| 亚洲国产另类av| 色诱视频在线观看| 日韩三区四区| 亚洲第一男人av| 亚洲无人区码一码二码三码的含义 | 亚洲天堂久久新| 999久久久免费精品国产| 亚洲精品国产成人| 又色又爽的视频| 亚洲三级色网| 国产欧美日韩免费看aⅴ视频| www.国产三级| 久久精品这里都是精品| 日本一二三区视频在线| 午夜伦理福利在线| 91精品国产免费| 成年人免费观看视频网站| 综合久久99| 国产精品99一区| 亚洲精品久久久久久无码色欲四季 | 欧美日韩视频在线一区二区| 岛国av免费观看| 久久五月天小说| 亚洲欧美激情一区二区| 亚洲男人av在线| 国产视频精品免费| 一本色道久久综合亚洲精品不卡 | 91视频在线视频| 国产69精品一区二区亚洲孕妇| 欧美精品一区二区三区久久| 污污在线观看| 欧美日韩亚洲高清一区二区| 免费看黄色aaaaaa 片| 久久久久久久久丰满| 精品三级av在线| 纪美影视在线观看电视版使用方法| 国产一区二区中文| 国产在线视频91| 免费在线一级视频| 亚洲高清在线精品| 中文字幕久久久久久久| 精品国产午夜| 亚洲图片欧洲图片av| 青青草成人免费| 麻豆免费看一区二区三区| 久久久久久久久久久久久久一区| jizz性欧美10| 欧美私模裸体表演在线观看| 国产福利短视频| 亚洲黄色视屏| 国产精品一区二区三区免费观看| 成人免费在线| 欧美日韩国产天堂| 91麻豆精品国产91久久综合| 久久精品系列| 免费久久久一本精品久久区| 成年女人在线看片| 亚洲第一男人av| 成年人午夜视频| 9i在线看片成人免费| 水蜜桃色314在线观看| 大香伊人久久精品一区二区| 欧美激情一区二区三区久久久| jizz国产视频| 亚洲在线中文字幕| 伊人久久精品视频| 黄大色黄女片18免费| 三级影片在线观看欧美日韩一区二区| 乱一区二区三区在线播放| 在线观看爽视频| 国产亚洲精品va在线观看| 高潮毛片又色又爽免费 | 国产麻豆日韩| 8x8ⅹ拨牐拨牐拨牐在线观看| 精品国产凹凸成av人导航| 国产午夜精品无码| 99热这里都是精品| 欧美少妇性生活视频| 成人一二三区| 91免费福利视频| 免费毛片在线看片免费丝瓜视频 | 欧美日韩一区二| av一区在线| 久久精品久久久久久| av免费观看在线| 亚洲午夜精品在线| 成人影视免费观看| 蜜臀av一区二区在线免费观看| 在线视频一区观看| 亚洲乱码一区| 奇米4444一区二区三区| 岛国在线大片| 56国语精品自产拍在线观看| 69精品久久久| 国产性做久久久久久| 图片区乱熟图片区亚洲| 樱桃成人精品视频在线播放| 欧美日韩一区在线观看视频| 色综合视频一区二区三区44| 欧美精品久久久久久久| 欧美美女搞黄| 欧美一区二视频| 国产一区二区99| 国产精品国产a级| jjzzjjzz欧美69巨大| 视频一区中文字幕国产| 日本在线视频www色| 日本国产精品| 91亚洲午夜在线| av综合电影网站| 久久躁狠狠躁夜夜爽| 神马精品久久| 6080日韩午夜伦伦午夜伦| 六月丁香婷婷综合| 亚洲精选视频在线| 亚洲自拍偷拍图| 丰满岳乱妇一区二区三区| 黄色一级大片在线观看| 国内精品99| 亚洲一区二区不卡视频| 美女一区二区在线观看| 91精品国产综合久久男男| 男人皇宫亚洲男人2020| 欧美日本亚洲视频| 3p视频在线观看| 日韩国产欧美精品一区二区三区| 国产又粗又猛视频免费| 日韩欧美精品免费在线| 亚洲一级生活片| 国产欧美精品区一区二区三区| 日韩无码精品一区二区| 国产一区二区美女诱惑| 污片在线免费看| 久久国产精品毛片| 成品人视频ww入口| 中文字幕一区二区三区在线视频| 色涩成人影视在线播放| 香蕉国产成人午夜av影院| av成人午夜| 在线免费成人| 国产伦精品免费视频| 天天综合网站| 欧美在线视频免费| 182在线视频观看| 伊人网综合在线| 成人一二三区视频| 国产传媒免费观看| 免费av成人在线| 无码少妇一区二区三区芒果| 99精品视频免费| 日韩欧美猛交xxxxx无码| 国产精品久久久久久久久久10秀| 欧日韩一区二区三区| 丝袜久久网站| 精品伦精品一区二区三区视频| 日韩在线视频一区二区三区 | 欧美狂野激情性xxxx在线观| 天天影视天天精品| 亚洲一区二区三区精品动漫| 日韩电影免费网站| 亚洲一区二区三区精品视频| 三级电影一区| 在线视频福利一区| 羞羞答答成人影院www| 中文精品一区二区三区| 五月天久久久| 在线观看18视频网站| 欧美午夜国产| 亚洲熟妇无码另类久久久| 99精品视频网| av观看免费在线| 丝袜诱惑亚洲看片| 免费看污黄网站| 久久精品久久久精品美女| 色噜噜狠狠一区二区| 国产综合色产在线精品| 免费欧美一级片| 成人免费av在线| jizz日本免费| 国产清纯白嫩初高生在线观看91 | 亚洲欧美日韩精品永久在线| 精品视频在线播放| 福利片在线看| 久久久999国产| 免费影视亚洲| 国产aⅴ夜夜欢一区二区三区| 成人午夜亚洲| 91黄在线观看| 先锋影音国产精品| 爱爱爱视频网站| 黄色日韩在线| 一本久道综合色婷婷五月| 看电视剧不卡顿的网站| 色综合久久久无码中文字幕波多| 波波电影院一区二区三区| 强伦人妻一区二区三区| 亚洲人成影院在线观看| 国产小视频在线免费观看| 色综合网站在线| 国产精品视频在线观看免费| 亚洲国产精品成人一区二区| 成人精品一区二区三区免费 | 国产在线看一区| 国产精品嫩草av| 国产精品久久久久久久第一福利| 国产盗摄x88av| 日本韩国视频一区二区| 四虎成人免费影院| 亚洲日本一区二区| 青青草免费观看视频| 4438x亚洲最大成人网| 手机福利小视频在线播放| 久久久99免费视频| 成人av观看| 成人情视频高清免费观看电影| 你懂的一区二区三区| 欧洲精品视频在线| 日韩成人一区二区| 人妻av一区二区| 亚洲天堂网中文字| 日韩精品一区不卡| 精品日韩在线一区| 国产欧美久久久久久久久| 欧美中文字幕在线观看| 日韩精品一级| 亚洲视频精品一区| 麻豆亚洲精品| 男人网站在线观看| 一区二区三区四区乱视频| 中文字幕精品在线观看| 日韩黄在线观看| 美女精品视频| 亚洲xxxx做受欧美| 日韩免费特黄一二三区| 国产亚洲精品网站| 成人精品免费视频| 青青操国产视频| 欧美一区二区日韩| av在线电影网| 国产精品91久久久| 亚洲成a人片77777在线播放| 黄色激情在线视频| 国产激情一区二区三区桃花岛亚洲| 天天干天天操天天拍| 日本韩国欧美三级| 免费人成黄页在线观看忧物| 亚洲2020天天堂在线观看| aaa国产精品视频| 国产日产欧美一区二区| 国产一区在线精品| 国产suv精品一区二区68| 欧美日韩一区三区| 视频一区二区三区不卡| 国产精品自在线| 99tv成人| 激情在线观看视频| 亚洲乱码中文字幕| 精品国产伦一区二区三| 久久成人18免费网站| 国产亚洲高清一区| 糖心vlog在线免费观看| 国产麻豆91精品| 看片网站在线观看| 欧美本精品男人aⅴ天堂| 麻豆av在线免费观看| 国产伦精品一区二区三区免| 99精品福利视频| 性久久久久久久久久| 色综合天天综合网天天看片| 欧美大片aaa| 国产精品色婷婷视频| 99久久国产综合精品成人影院| 小早川怜子一区二区三区| 亚洲色图一区二区| 黑人精品一区二区三区| 91国内产香蕉| 教室别恋欧美无删减版| 亚洲久久中文字幕| 一区二区三区精品视频在线| 丰满熟妇乱又伦| 欧美一区二区三区精品电影| 欧美猛男男男激情videos| 性chinese极品按摩| 中国黄色一级视频| 最近2019中文字幕大全第二页 | 欧美午夜精品久久久久久孕妇 | 亚洲视频免费观看| 亚洲av无码乱码国产精品| 午夜精品久久久久久久99黑人| 在线看成人短视频| 中文字幕第38页| 亚洲自拍偷拍九九九| 日本国产在线| 国产一区深夜福利| 在线播放精品| 摸摸摸bbb毛毛毛片| 日韩一区二区电影网| 黄色激情在线播放| 日韩欧美三级一区二区| 精品一区二区三区久久久| 精品无码久久久久久久| 亚洲人精品午夜在线观看| 4438五月综合| 免费成人午夜视频| 国产精品国产三级国产aⅴ原创| 欧洲精品久久一区二区| 国产成人在线播放| 欧美日韩福利| 久久精品无码一区| 日韩欧美aaaaaa| 国产在线|日韩| 国产va亚洲va在线va| 不卡视频一二三四| 97人人爽人人爽人人爽 | 91精品麻豆| 国内自拍在线观看| 亚洲精品五月天| 国产大片在线免费观看 | 日韩av二区|