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

Jmh基準測試,看我怎么用它來測試Mongodb的數據加載性能

開發 前端 MongoDB
最近我們這邊引入了mongodb,不過沒有實際上測試過性能如何,只是聽說讀寫比mysql快,你今天沒有什么排期,測試一下,然后今天內給我個答案吧!

 [[410165]]

本文轉載自微信公眾號「稀飯下雪」,作者帥氣的小飯飯 。轉載本文請聯系稀飯下雪公眾號。

「主管小肥肥:」 最近我們這邊引入了mongodb,不過沒有實際上測試過性能如何,只是聽說讀寫比mysql快,你今天沒有什么排期,測試一下,然后今天內給我個答案吧

「小飯飯:」 好的,接下來就是測試性能的一天了。

到了這里,可能大部分人的第一想法應該是直接用這種方式:

  1. public void test() { 
  2.     long start = System.currentTimeMillis(); 
  3.     // 執行邏輯 
  4.     long end = System.currentTimeMillis();   
  5.     System.out.println(end - start); 

no,我這次使用的是JMH

無論出自何種原因需要進行性能評估,量化指標總是必要的,那么如何量化呢?

這就需要我們的主角 JMH 登場了!

先給你們看個效果圖

性能對比圖

什么是JMH

JMH(Java Microbenchmark Harness)是用于代碼微基準測試的工具套件,主要是基于方法層面的基準測試,精度可以達到納秒級。

該工具是由 Oracle 內部實現 JIT 的大牛們編寫的,他們應該比任何人都了解 JIT 以及 JVM 對于基準測試的影響。

當你定位到熱點方法,希望進一步優化方法性能的時候,就可以使用 JMH 對優化的結果進行量化的分析。

JMH 比較典型的應用場景如下:

  • 想準確地知道某個方法需要執行多長時間,以及執行時間和輸入之間的相關性
  • 對比接口不同實現在給定條件下的吞吐量
  • 查看多少百分比的請求在多長時間內完成

下面我們以mongodb、hibernate、jdbc數據加載性能對比為例,使用 JMH 做基準測試。

怎么做JMH基準測試?

  • 加入依賴

因為 JMH 是 JDK9 自帶的,如果是 JDK9 之前的版本需要加入如下依賴:

  1. <dependency> 
  2.     <groupId>org.openjdk.jmh</groupId> 
  3.     <artifactId>jmh-core</artifactId> 
  4.     <version>1.29</version> 
  5. </dependency> 
  6. <dependency> 
  7.     <groupId>org.openjdk.jmh</groupId> 
  8.     <artifactId>jmh-generator-annprocess</artifactId> 
  9.     <version>1.29</version> 
  10. </dependency> 
  • 編寫基準測試

接下來,創建一個 JMH 測試類,具體代碼如下所示:

  1. @BenchmarkMode({Mode.AverageTime}) 
  2. @Warmup(iterations = 1, time = 5) 
  3. @Measurement(iterations = 3, time = 5) 
  4. @Threads(1) 
  5. @Fork(1) 
  6. @OutputTimeUnit(TimeUnit.MILLISECONDS) 
  7. @State(Scope.Benchmark) 
  8. public class ReadBenchMarks { 
  9.     @Benchmark 
  10.     public void loadMongoTemplate(){ 
  11.         // mongoTemplate數據加載 
  12.     } 
  13.  
  14.     @Benchmark 
  15.     public void loadMongoDriver(){ 
  16.         // mongoDriver數據加載 
  17.     } 
  18.  
  19.     @Benchmark 
  20.     public void loadHibernate(){ 
  21.         // hibernate數據加載 
  22.     } 
  23.  
  24.     @Benchmark 
  25.     public void loadJdbc(){ 
  26.         // jdbc數據加載 
  27.     } 
  28.  
  29.     public static void main(String[] args) throws RunnerException { 
  30.         Options options = new OptionsBuilder() 
  31.                 .include(ReadBenchMarks.class.getSimpleName()) 
  32.                 .output("db.log"
  33.                 .build(); 
  34.         new Runner(options).run(); 
  35.     } 

「核心關注點:」

類上加了注解

  • 需要測試的方法用 @Benchmark 注解標識
  • 啟動的方式

這些注解的具體含義將在下面介紹。

大家有興趣可以看下官方提供的 jmh 示例 demo:http://hg.openjdk.java.net/code-tools/jmh/file/tip/jmh-samples/src/main/java/org/openjdk/jmh/samples/

  • 執行基準測試

準備工作做好了,接下來,運行代碼,等待片刻,測試結果就出來了

  1. # JMH version: 1.29 
  2. # VM version: JDK 1.8.0_251, Java HotSpot(TM) Client VM, 25.251-b08 
  3. # VM invoker: C:\soft\Java\jdk1.8.0_251\jre\bin\java.exe 
  4. # VM options: -javaagent:C:\soft\idea\IntelliJ IDEA Community Edition 2020.1.1\lib\idea_rt.jar=53895:C:\soft\idea\IntelliJ IDEA Community Edition 2020.1.1\bin -Dfile.encoding=UTF-8 
  5. # Blackhole mode: full + dont-inline hint 
  6. # Warmup: 2 iterations, 5 s each 
  7. # Measurement: 10 iterations, 5 s each 
  8. # Timeout: 10 min per iteration 
  9. # Threads: 1 thread, will synchronize iterations 
  10. # Benchmark mode: Average timetime/op 
  11. # Benchmark: com.db.jmh.write.WriteBenchMarks.writeHibernate 
  12. # Parameters: (info = 10031,1,5) 
  13.  
  14. # Run progress: 0.00% complete, ETA 00:06:00 
  15. # Fork: 1 of 1 
  16. # Warmup Iteration   1: 7.743 ms/op 
  17. # Warmup Iteration   2: 9.433 ms/op 
  18. Iteration   1: 7.854 ms/op 
  19. Iteration   2: 8.638 ms/op 
  20. Iteration   3: 8.579 ms/op 
  21. Iteration   4: 8.213 ms/op 
  22. Iteration   5: 8.843 ms/op 
  23. Iteration   6: 9.178 ms/op 
  24. Iteration   7: 7.739 ms/op 
  25. Iteration   8: 9.608 ms/op 
  26. Iteration   9: 10.152 ms/op 
  27. Iteration  10: 9.461 ms/op 
  28.  
  29. Result "com.db.jmh.write.WriteBenchMarks.writeHibernate"
  30.   8.827 ±(99.9%) 1.182 ms/op [Average] 
  31.   (minavgmax) = (7.739, 8.827, 10.152), stdev = 0.782 
  32.   CI (99.9%): [7.645, 10.008] (assumes normal distribution) 
  33.  
  34. # Run complete. Total time: 00:06:38 
  35.  
  36. REMEMBER: The numbers below are just data. To gain reusable insights, you need to follow up on 
  37. why the numbers are the way they are. Use profilers (see -prof, -lprof), design factorial 
  38. experiments, perform baseline and negative tests that provide experimental control, make sure 
  39. the benchmarking environment is safe on JVM/OS/HW level, ask for reviews from the domain experts. 
  40. Do not assume the numbers tell you what you want them to tell. 
  41.  
  42. Benchmark                           (info)  Mode  Cnt   Score   Error  Units 
  43. WriteBenchMarks.writeHibernate   10031,1,5  avgt   10   8.827 ± 1.182  ms/op 
  44. WriteBenchMarks.writeHibernate   10032,5,6  avgt   10   8.783 ± 1.478  ms/op 
  45. WriteBenchMarks.writeHibernate  10033,5,20  avgt   10  12.574 ± 0.928  ms/op 
  46. WriteBenchMarks.writeMongo       10031,1,5  avgt   10   5.057 ± 0.358  ms/op 
  47. WriteBenchMarks.writeMongo       10032,5,6  avgt   10   7.392 ± 0.651  ms/op 
  48. WriteBenchMarks.writeMongo      10033,5,20  avgt   10  12.590 ± 0.795  ms/op 

下面對結果做下簡單說明:

  1. # JMH version: 1.29 
  2. # VM version: JDK 1.8.0_251, Java HotSpot(TM) Client VM, 25.251-b08 
  3. # VM invoker: C:\soft\Java\jdk1.8.0_251\jre\bin\java.exe 
  4. # VM options: -javaagent:C:\soft\idea\IntelliJ IDEA Community Edition 2020.1.1\lib\idea_rt.jar=53895:C:\soft\idea\IntelliJ IDEA Community Edition 2020.1.1\bin -Dfile.encoding=UTF-8 
  5. # Blackhole mode: full + dont-inline hint 
  6. # Warmup: 2 iterations, 5 s each 
  7. # Measurement: 10 iterations, 5 s each 
  8. # Timeout: 10 min per iteration 
  9. # Threads: 1 thread, will synchronize iterations 
  10. # Benchmark mode: Average timetime/op 
  11. # Benchmark: com.db.jmh.write.WriteBenchMarks.writeHibernate 
  12. # Parameters: (info = 10031,1,5) 

該部分為「測試的基本信息」,比如使用的 Java 路徑,預熱代碼的迭代次數,測量代碼的迭代次數,使用的線程數量,測試的統計單位等。

  1. # Warmup Iteration   1: 7.743 ms/op 
  2. # Warmup Iteration   2: 9.433 ms/op 

該部分為每一次熱身中的性能指標,預熱測試不會作為最終的統計結果。預熱的目的是「讓 JVM 對被測代碼進行足夠多的優化」,比如,在預熱后,被測代碼應該得到了充分的 JIT 編譯和優化。

  1. Iteration   1: 7.854 ms/op 
  2. Iteration   2: 8.638 ms/op 
  3. Iteration   3: 8.579 ms/op 
  4. Iteration   4: 8.213 ms/op 
  5. Iteration   5: 8.843 ms/op 
  6. Iteration   6: 9.178 ms/op 
  7. Iteration   7: 7.739 ms/op 
  8. Iteration   8: 9.608 ms/op 
  9. Iteration   9: 10.152 ms/op 
  10. Iteration  10: 9.461 ms/op 
  11.  
  12.  
  13. Result "com.db.jmh.write.WriteBenchMarks.writeHibernate"
  14.   8.827 ±(99.9%) 1.182 ms/op [Average] 
  15.   (minavgmax) = (7.739, 8.827, 10.152), stdev = 0.782 
  16.   CI (99.9%): [7.645, 10.008] (assumes normal distribution) 

該部分顯示測量迭代的情況,每一次迭代都顯示了當前的執行速率,即一個操作所花費的時,在進行 10 次迭代后,進行統計。

最后的測試結果如下所示:

  1. Benchmark                           (info)  Mode  Cnt   Score   Error  Units 
  2. WriteBenchMarks.writeHibernate   10031,1,5  avgt   10   8.827 ± 1.182  ms/op 
  3. WriteBenchMarks.writeHibernate   10032,5,6  avgt   10   8.783 ± 1.478  ms/op 
  4. WriteBenchMarks.writeHibernate  10033,5,20  avgt   10  12.574 ± 0.928  ms/op 
  5. WriteBenchMarks.writeMongo       10031,1,5  avgt   10   5.057 ± 0.358  ms/op 
  6. WriteBenchMarks.writeMongo       10032,5,6  avgt   10   7.392 ± 0.651  ms/op 
  7. WriteBenchMarks.writeMongo      10033,5,20  avgt   10  12.590 ± 0.795  ms/op 

看這些數據也能看出個大概,不過我不大可能直接將這個數據扔給老大, 因此用了以下兩個網站

  • JMH Visual Chart:http://deepoove.com/jmh-visual-chart/
  • JMH Visualizer:https://jmh.morethan.io/

生成了一開始看到的那張圖形化界面。

補充下,JMH 基礎

為了能夠更好地使用 JMH 的各項功能,下面對 JMH 的基本概念進行講解:

  • @BenchmarkMode

用來配置 Mode 選項,可用于類或者方法上,這個注解的 value 是一個數組,可以把幾種 Mode 集合在一起執行,如:@BenchmarkMode({Mode.SampleTime, Mode.AverageTime}),還可以設置為 Mode.All,即全部執行一遍。

  1. Throughput:整體吞吐量,每秒執行了多少次調用,單位為 ops/time
  2. AverageTime:用的平均時間,每次操作的平均時間,單位為 time/op
  3. SampleTime:隨機取樣,最后輸出取樣結果的分布
  4. SingleShotTime:只運行一次,往往同時把 Warmup 次數設為 0,用于測試冷啟動時的性能
  5. All:上面的所有模式都執行一次
  • @State

通過 State 可以指定一個對象的作用范圍,JMH 根據 scope 來進行實例化和共享操作。@State 可以被繼承使用,如果父類定義了該注解,子類則無需定義。由于 JMH 允許多線程同時執行測試,不同的選項含義如下:

  1. Scope.Benchmark:所有測試線程共享一個實例,測試有狀態實例在多線程共享下的性能
  2. Scope.Group:同一個線程在同一個 group 里共享實例
  3. Scope.Thread:默認的 State,每個測試線程分配一個實例

@OutputTimeUnit

為統計結果的時間單位,可用于類或者方法注解

  • @Warmup

預熱所需要配置的一些基本測試參數,可用于類或者方法上。一般前幾次進行程序測試的時候都會比較慢,所以要讓程序進行幾輪預熱,保證測試的準確性。參數如下所示:

  1. iterations:預熱的次數
  2. time:每次預熱的時間
  3. timeUnit:時間的單位,默認秒
  4. batchSize:批處理大小,每次操作調用幾次方法
  • @Measurement

實際調用方法所需要配置的一些基本測試參數,可用于類或者方法上,參數和 @Warmup 相同。

  • @Threads

每個進程中的測試線程,可用于類或者方法上。

  • @Fork

進行 fork 的次數,可用于類或者方法上。如果 fork 數是 2 的話,則 JMH 會 fork 出兩個進程來進行測試。

  • @Param

指定某項參數的多種情況,特別適合用來測試一個函數在不同的參數輸入的情況下的性能,只能作用在字段上,使用該注解必須定義 @State 注解。

在介紹完常用的注解后,讓我們來看下 JMH 有哪些陷阱。

回答個疑問,為什么需要預熱?

因為 JVM 的 JIT 機制的存在,如果某個函數被調用多次之后,JVM 會嘗試將其編譯為機器碼,從而提高執行速度,所以為了讓 benchmark 的結果更加接近真實情況就需要進行預熱。

如何將測試結果 可視化

其實很簡單,將main函數改成

  1. public static void main(String[] args) throws RunnerException { 
  2.     Options opt = new OptionsBuilder() 
  3.             .include(WriteBenchMarks.class.getSimpleName()) 
  4.             .result("db_read.json"
  5.             .resultFormat(ResultFormatType.JSON).build(); 
  6.     new Runner(opt).run(); 

就可以了,再將生成的json格式文件扔進以下網站:

  • JMH Visual Chart:http://deepoove.com/jmh-visual-chart/
  • JMH Visualizer:https://jmh.morethan.io/

就可以了啦。

「小飯飯:」 我測完啦,還生成了柱形圖給你看看

「主管小肥肥:」 不錯,mongodb的性能確實ok,你做的也不錯,還以為你會用System.currentTimeMillis()這種low的手段呢,沒想到用上了JMH,做的不錯,快調薪了,必須給你加一筆。

原文鏈接:https://mp.weixin.qq.com/s/hTRa-eOSvSns0sm2P2BMVg

 

責任編輯:武曉燕 來源: 稀飯下雪
相關推薦

2023-10-20 11:24:25

JMH基準測試

2021-12-29 10:30:15

JMH代碼Java

2016-09-23 16:36:25

LinuxPCPhoronix

2023-07-31 09:13:13

ValidatorGolang

2024-03-06 18:09:06

Linux性能工具

2021-07-17 15:25:05

PHP 8.1基準測試開發

2009-10-10 11:11:40

服務器測試

2013-05-07 09:47:30

測試MySQLMySQL測試

2012-07-31 09:02:49

Apworks

2023-01-06 08:31:53

數據庫基準測試

2011-09-27 10:11:14

MongoDBR

2011-03-03 10:32:07

Mongodb億級數據量

2022-03-29 11:48:40

Go泛型測試

2023-05-12 13:21:12

JMHJava程序

2023-10-08 16:28:36

數據庫DuckDB

2015-05-19 16:52:13

企業網D1Net

2010-05-13 15:43:34

MySQL宣布

2020-06-10 10:40:03

JavaJMH字符串

2022-07-06 09:29:40

JMH性能測試

2011-02-23 11:18:48

MongoDBMySQL性能測試
點贊
收藏

51CTO技術棧公眾號

91精品国产高清一区二区三区蜜臀| 日本一区二区三区四区在线视频| 欧美精品18videosex性欧美| 一出一进一爽一粗一大视频| 日韩欧美一区二区三区在线观看| 国产精品色哟哟网站| 亚洲精品免费一区二区三区| 日韩伦理在线视频| 日韩精品久久久久久久电影99爱| 日韩一区二区三区电影在线观看 | 天堂√在线中文官网在线| 久久精品首页| 久久久成人精品| 亚洲精品理论片| 国产精品麻豆| 91极品视觉盛宴| 日本久久久网站| 久久免费看毛片| 人人妻人人添人人爽欧美一区| 午夜黄色小视频| 久久99久久久久久久久久久| 高清欧美性猛交xxxx黑人猛交| 免费看的黄色网| 黄色美女久久久| 欧美日本高清视频在线观看| 欧美日韩国产精品激情在线播放| 麻豆视频网站在线观看| 91亚洲精品久久久蜜桃| 亚洲专区在线视频| www.av88| 久久精品麻豆| 51午夜精品视频| 国产一级大片在线观看| 日韩久久精品网| 亚洲视频欧美视频| 无码成人精品区在线观看| 国语精品视频| 欧美日韩久久久| 熟女人妇 成熟妇女系列视频| 欧美黄色视屏| 亚洲免费资源在线播放| 日韩精品极品视频在线观看免费| 少妇av在线播放| 国产精品亚洲第一| 91视频88av| 国产又粗又长视频| 久久99深爱久久99精品| 国产精品美女在线| 久久久久久久亚洲| 免费视频一区| 51色欧美片视频在线观看| www.国产成人| 精品电影一区| 久久久亚洲国产天美传媒修理工| 欧美三根一起进三p| 亚洲成人三区| 欧美国产日韩一区二区在线观看| 欧美黄色aaa| 一本精品一区二区三区| 久久视频精品在线| 91麻豆精品成人一区二区| 婷婷综合久久| 久久视频在线直播| 国产这里有精品| 欧美不卡一区| 久久免费观看视频| 精品91久久久| 性色av一区二区怡红| 国产国语刺激对白av不卡| 亚洲天堂五月天| 久久精品国产网站| 91麻豆国产语对白在线观看| a级片在线播放| 国产.欧美.日韩| 精品乱子伦一区二区三区| 日本一卡二卡四卡精品 | 亚洲一区二区三区在线免费观看| 一二三区中文字幕| 国产成人自拍网| 国产精品污www一区二区三区| 黄色av网站免费在线观看| 91在线视频在线| 日韩精品伦理第一区| 免费在线观看av| 一区二区免费看| 欧美日韩亚洲一| 久久爱.com| 日韩美女一区二区三区| 中国av免费看| 日韩欧美字幕| 久久久久在线观看| 国产亚洲久一区二区| 国产乱码精品一区二区三区忘忧草| 国产精品二区在线| 每日更新av在线播放| 中文在线一区二区| 欧美一级欧美一级| 欧美xnxx| 亚洲成年网站在线观看| 成人免费无遮挡无码黄漫视频| 欧美激情国产在线| 91国内在线视频| 中文字幕一区二区三区免费看 | 捆绑凌虐一区二区三区| 精品国产精品国产偷麻豆| 久操成人在线视频| 91porny九色| 国产不卡在线播放| 天堂一区二区三区| 都市激情国产精品| 欧美精品色一区二区三区| 超碰男人的天堂| 亚洲精品888| 国产成人欧美在线观看| 韩国av免费在线| 国产精品传媒入口麻豆| 男人用嘴添女人下身免费视频| 国产成人免费精品| 日韩av在线免费| 久久免费看少妇高潮v片特黄| 香蕉国产精品偷在线观看不卡| 亚洲一区二区久久久久久| 日本福利在线观看| 亚洲成人777| 国产乱女淫av麻豆国产| 免费视频国产一区| 久久免费视频在线| 亚洲国产精品久久久久久6q| 国产精品久久久久永久免费观看| 日本精品www| 欧美成人午夜77777| 欧美成在线观看| 91亚洲国产成人精品一区| 91蜜桃免费观看视频| 成年人网站国产| 日本一区二区三区电影免费观看| 色爱av美腿丝袜综合粉嫩av| 亚洲精品男人的天堂| 成年人网站91| 日韩久久久久久久久久久久| 国产95亚洲| www国产精品视频| 最近中文字幕免费在线观看| 久久久无码精品亚洲日韩按摩| 精品久久一二三| 欧美日韩夜夜| 欧美一区第一页| 欧美色综合一区二区三区| 狠狠躁夜夜躁人人爽超碰91| 亚洲啪av永久无码精品放毛片| 欧美网站在线| 国产一区二区无遮挡| av丝袜在线| 亚洲福利视频在线| 日韩和一区二区| 97久久超碰国产精品| 毛片一区二区三区四区| 国产精品片aa在线观看| 国产精品白嫩初高中害羞小美女 | 久热精品在线视频| 97超碰国产在线| 亚洲欧美日韩电影| 男插女视频网站| 好看不卡的中文字幕| 国产欧美日韩综合精品二区| 国产精选在线| 亚洲视频第一页| 91麻豆国产视频| 伊人开心综合网| 精品国产一区在线| 久久国产精品亚洲77777| 水蜜桃亚洲一二三四在线| 色综合视频一区二区三区44| 欧美高清视频在线观看| 日日躁夜夜躁白天躁晚上躁91| 欧美日韩在线视频观看| 国产99在线 | 亚洲| 国内精品在线播放| 成人黄色av片| 欧洲福利电影| 51成人做爰www免费看网站| 九色91在线| 亚洲色图国产精品| 国产在成人精品线拍偷自揄拍| 依依成人综合视频| 中文字幕第4页| 国产综合成人久久大片91| www.射射射| 成久久久网站| 国产精品国产亚洲精品看不卡15| 一二三四视频在线中文| 久久久av免费| 欧美男男激情freegay| 666欧美在线视频| 日日摸天天添天天添破| 成人免费一区二区三区视频| 亚洲天堂美女视频| 美女视频黄免费的久久| www插插插无码视频网站| 精品国产乱码久久久| 99re在线国产| 国产亚洲人成a在线v网站| 欧美大片在线看免费观看| 大胆av不用播放器在线播放| 精品999在线播放| 亚洲一二区视频| 色综合一区二区三区| 欧美片一区二区| 国产欧美一区二区精品性色| 蜜桃色一区二区三区| 久久成人免费网站| 无码人妻丰满熟妇区五十路百度| 欧美精品日韩| 正在播放亚洲| 美女精品一区最新中文字幕一区二区三区| 96精品久久久久中文字幕| 日本成人片在线| 海角国产乱辈乱精品视频| 欧美69xxx| 国产亚洲视频中文字幕视频| 人成网站在线观看| 日韩视频不卡中文| 国产影视一区二区| 欧美综合一区二区| 黄色在线免费观看| 精品成人在线视频| 精品小视频在线观看| 亚洲精品成人悠悠色影视| 免费观看特级毛片| 国产三级精品三级在线专区| 欧美性xxxx图片| 97久久久精品综合88久久| 九色91porny| 国产一区二区在线电影| 欧美成人福利在线观看| 日韩影院精彩在线| 免费看a级黄色片| 久久精品亚洲| 久久精品香蕉视频| 免费视频一区| 久久国产乱子伦免费精品| 另类av一区二区| 国产精品沙发午睡系列| 99人久久精品视频最新地址| 又大又硬又爽免费视频| 影音先锋亚洲一区| 国产精品专区在线| 亚洲一区黄色| 超碰97人人射妻| 奇米一区二区三区| 日韩av片网站| 久久99久久久久久久久久久| 一区二区久久精品| 国产一区二区三区精品视频| 国产精品嫩草影院8vv8| 精品一区二区三区的国产在线播放 | 国产精品久久久久久久龚玥菲 | 岛国中文字幕在线| 成人97在线观看视频| 四虎影院观看视频在线观看| 欧美激情一级精品国产| 678在线观看视频| 欧美一乱一性一交一视频| 欧亚一区二区| 91精品国产综合久久香蕉最新版 | 亚洲成人精品视频在线观看| 天天射天天色天天干| 亚洲人成电影网站色| 青青影院在线观看| 久精品免费视频| 爱情电影社保片一区| 国产精品丝袜视频| 麻豆精品一区| 精品无人乱码一区二区三区的优势| 日韩最新在线| 日韩精品另类天天更新| 午夜国产欧美理论在线播放| 欧美成人三级在线视频| 日本麻豆一区二区三区视频| 五月天婷婷影视| 99久久久久免费精品国产| 91精品国自产在线| 最好看的中文字幕久久| 亚洲精品77777| 欧美日韩免费不卡视频一区二区三区| 性欧美18一19性猛交| 亚洲美女福利视频网站| 超碰在线免费播放| 日本一区二区在线播放| 99精品国产九九国产精品| 国产精品一区免费观看| 成人无号精品一区二区三区| 日韩精品久久一区二区| 日本一区中文字幕| 老女人性生活视频| 国产日产欧美一区二区视频| 亚洲欧美一区二区三区四区五区| 福利一区福利二区微拍刺激| 国产精品热久久| 日韩精品在线观看网站| av片在线观看| 国产精品成久久久久三级 | 日韩免费观看高清完整版在线观看| 神马电影在线观看| 欧美成人激情在线| av在线日韩| 国内精品久久久久久久果冻传媒| 四虎成人精品永久免费av九九| 日韩欧美视频网站| 国产精品白丝jk黑袜喷水| 免费黄色在线网址| 狠狠躁夜夜躁人人爽天天天天97| 精品人妻一区二区三区蜜桃| 中国china体内裑精亚洲片| 草草视频在线| 99高清视频有精品视频| 欧美激情另类| 天美星空大象mv在线观看视频| 99久久久久久99| 免费无码毛片一区二区app| 欧美老女人第四色| jizz亚洲| 国产成人啪精品视频免费网| 久久丝袜视频| 男人天堂av片| 成人性生交大片免费看中文| 超碰手机在线观看| 欧美日韩免费在线视频| 成年人在线视频| 青青精品视频播放| 天海翼亚洲一区二区三区| 免费看毛片的网址| 国产99久久久精品| 免费中文字幕在线| 91精品免费在线| 黄网站在线免费看| 国产色视频一区| 日韩精品诱惑一区?区三区| 青青草av网站| 国产日产欧产精品推荐色| 精产国品一区二区| 亚洲女人天堂视频| 成人小电影网站| 蜜桃999成人看片在线观看| 亚洲欧美日本国产专区一区| 亚洲观看黄色网| 日韩欧美国产黄色| 日本人妖在线| 国产精品xxx视频| 欧美色就是色| 五月花丁香婷婷| 亚洲人成网站色在线观看| 99久久婷婷国产一区二区三区| 久久九九免费视频| 久久久久久亚洲精品美女| 97超碰在线视| 成人涩涩免费视频| 日韩伦理在线视频| 亚洲深夜福利在线| 久久久久久一区二区三区四区别墅| 在线观看一区二区三区三州| 国产一区二区看久久| 久久精品视频8| 亚洲激情视频在线播放| 亚洲va中文在线播放免费| 亚洲国产高清国产精品| 极品少妇xxxx精品少妇偷拍| 久久久全国免费视频| 日韩精品一区二区三区第95| 制服诱惑亚洲| 青青在线免费视频| 不卡视频免费播放| 欧美男人亚洲天堂| 日韩在线小视频| 国产欧美三级电影| 无遮挡又爽又刺激的视频| 中文字幕一区二区三区不卡 | 国产精品主播直播| 日本一级黄色录像| 中文字幕精品视频| 中文字幕久久精品一区二区| 久久久久久久久久久久久久国产| 国产精品三级久久久久三级| 风流老熟女一区二区三区| 青青精品视频播放| 欧美/亚洲一区| 无码人妻精品一区二区三应用大全| 欧美性猛片xxxx免费看久爱| 50度灰在线| 欧美资源一区| 国产suv精品一区二区883| 无码视频一区二区三区| 久久这里有精品| 蜜乳av综合| 男插女视频网站| 欧美视频中文字幕| av小说在线播放| 天天操天天干天天玩| 久久天堂av综合合色蜜桃网| 国产福利视频导航|