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

并發模擬工具詳解

開發 開發工具
嚴格來說postMan并不是并發請求,而是串行執行的,現在用postMan更多的是用來測試Http連接的一個工具,但是也是一個很實用的工具,也有一些比較強大的功能和優點

[[380130]]

 簡介:

  • 一、Psotman
  • 二、Apache Bench(AB)
  • 三、JMeter
  • 四、代碼

一、Psotman:Http請求模擬工具

嚴格來說postMan并不是并發請求,而是串行執行的,現在用postMan更多的是用來測試Http連接的一個工具,但是也是一個很實用的工具,也有一些比較強大的功能和優點

1.1 下載地址

  1. 1) Postman for MAC:https://app.getpostman.com/app/download/osx64?utm_source=site&utm_medium=apps&utm_campaign=macapp&_ga=2.21151352.2119858274.1527039878-1088353859.1527039878 
  2. 2) Postman for windows X64:https://app.getpostman.com/app/download/win64?_ga=2.201562513.1250696341.1530543681-1582181135.1530543681 
  3. 3) Postman for windows X86:https://app.getpostman.com/app/download/win32?_ga=2.21151352.2119858274.1527039878-1088353859.1527039878 
  4. 4) Postman for linux X64:https://app.getpostman.com/app/download/linux64?_ga=2.96050783.2119858274.1527039878-1088353859.1527039878 
  5. 5) Postman for Linux X86:https://app.getpostman.com/app/download/linux32?_ga=2.96050783.2119858274.1527039878-1088353859.1527039878 
  6. 6) 官網地址:https://www.getpostman.com/ 

1.2 操作說明(以win64為例)

1、打開Postman,輸入我們需要測試的網址,點擊左邊的"+",保存請求


2、點擊"+"后,彈出下面提示,保存鏈接地址生成測試文件夾名稱

3、保存成功后,選擇"collections"后選擇文件夾名為"gbfTest"的,點擊小三角——點擊Run

 

4、這里我們可以設置請求次數和間隔時間,一般間隔時間會設置為0,設置好之后,我們點擊Run gbfTest運行

5、查看結果,從圖中我們可以看到百度的響應速度還是很快的


6、點擊 Run Summary 可以看到運行結果概述


7、測試全部通過


8、測試結果可以通過點擊Export Results按鈕進行導出,方便分析每次的請求時間

 

 

二、Apace Bench(AB):Apache附帶的工具,測試網站性能

2.1 簡介

Apache Bench 是 Apache 服務器自帶的一個web壓力測試工具,簡稱ab。ab又是一個命令行工具,對發起負載的本機要求很低,根據ab命令可以創建很多的并發訪問線程,模擬多個訪問者同時對某一URL地址進行訪問,因此可以用來測試目標服務器的負載壓力。總的來說ab工具小巧簡單,它不僅可以對apache服務器進行網站訪問壓力測試,也可以對或其它類型的服務器進行壓力測試。比如nginx、tomcat、IIS等,上手學習較快,可以提供需要的基本性能指標,但是沒有圖形化結果,不能監控

2.2 原理

ab命令會創建多個并發訪問線程,模擬多個訪問者同時對某一URL地址進行訪問。它的測試目標是基于URL的,因此,它既可以用來測試apache的負載壓力,也可以測試nginx、lighthttp、tomcat、IIS等其它Web服務器的壓力

2.3 Apache Bench安裝

Apache服務器,下載地址:https://www.apachelounge.com/download/

選擇:httpd-2.4.41-win64-VS16 下載目錄結構:

2.4 Apache Bench 使用

運行環境:Windows7 Apache Bench版本:httpd-2.4.41-win64-VS16

1、進入cmd目錄下,進入我們解壓好的Apache Bench目錄下


3 使用命令

  1. ab -c 10 -n 10 http://www.baidu.com/ 或者 ab.exe -n 1000 -c 500 http://www.baidu.com 

ab -c 10 -n 10 http://www.baidu.com/ 或者 ab.exe -n 1000 -c 500 http://www.baidu.com

對百度首頁進行一個請求總數為1000,本次請求并發數為500的測試


參數分析:

  1. C:\Users\Lenovo\Downloads\httpd-2.4.41-win64-VS16\Apache24\bin>ab.exe -n 1000 -c 
  2.  500 http://www.baidu.com/path 
  3. This is ApacheBench, Version 2.3 <$Revision: 1843412 $> 
  4. Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ 
  5. Licensed to The Apache Software Foundation, http://www.apache.org/ 
  6.  
  7. Benchmarking www.baidu.com (be patient) 
  8. Completed 100 requests 
  9. Completed 200 requests 
  10. Completed 300 requests 
  11. Completed 400 requests 
  12. Completed 500 requests 
  13. Completed 600 requests 
  14. Completed 700 requests 
  15. Completed 800 requests 
  16. Completed 900 requests 
  17. Completed 1000 requests 
  18. Finished 1000 requests 
  19.  
  20.  
  21. Server Software:        Apache      #測試服務器的名字 
  22. Server Hostname:        www.baidu.com  #請求的URL主機名 
  23. Server Port:            80        #請求端口 
  24.  
  25. Document Path:          /path      #請求路徑   
  26. Document Length:        222 bytes    #頁面大小 
  27.  
  28. Concurrency Level:      500        #并發量,設置的參數之一 
  29. Time taken for tests:   45.805 seconds  #整個測試所用的時間/秒 
  30. Complete requests:      1000      #完成的請求數 
  31. Failed requests:        0        #失敗的請求數 
  32. Non-2xx responses:      1000      #接收到的HTTP響應數據的頭信息中含有2XX以外的狀態碼,則會在測試結果中顯示另一個名為“Non-2xx responses”的統計項,用于統計這部分請求數(1000) 
  33. Total transferred:      484000 bytes  #表示所有請求的響應數據長度總和 
  34. HTML transferred:       222000 bytes  #表示所有請求的響應數據中正文數據的總和 
  35. Requests per second:    21.83 [#/sec] (mean)    #吞吐率,吞吐率是與并發數相關的,使請求總數相同,但如果并發數不一樣,吞吐率還是很可能有很大差異的 
  36. Time per request:       22902.310 [ms] (mean)    #用戶平均請求等待時間。也就是一次并發總的時間 
  37. Time per request:       45.805 [ms] (mean, across all concurrent requests)    #服務器平均請求等待時間。也就是一次請求(在本例中也就是500中的平均每一次)所需時間 
  38. Transfer rate:          10.32 [Kbytes/sec] received    #這些請求在單位時間內從服務器獲取的數據長度 
  39.  
  40. Connection Times (ms) 
  41.               min  mean[+/-sd] median   max 
  42. Connect:        9   46 460.5     11    9060 
  43. Processing:    25 20066 13796.4  14798   36549 
  44. Waiting:       14 16163 15029.9   8460   36484 
  45. Total:         37 20111 13785.1  22804   36562 
  46.  
  47. Percentage of the requests served within a certain time (ms) 
  48.   50%  22804     #50%用戶請求在22804ms內返回 
  49.   66%  33043    #66%用戶請求在33043ms內返回 
  50.   75%  34181 
  51.   80%  34791 
  52.   90%  35877 
  53.   95%  36416 
  54.   98%  36502    #98%用戶請求在36502ms內返回 
  55.   99%  36512 
  56.  100%  36562 (longest request) 

命令參數參考:

  1. -n requests Number of requests to perform //本次測試發起的總請求數 
  2. -c concurrency Number of multiple requests to make   //一次產生的請求數(或并發數) 
  3. -t timelimit Seconds to max. wait for responses    //測試所進行的最大秒數,默認沒有時間限制。 
  4. -r Don't exit on socket receive errors.    // 拋出異常繼續執行測試任務 
  5. -p postfile File containing data to POST  //包含了需要POST的數據的文件,文件格式如“p1=1&p2=2”.使用方法是 -p 111.txt 
  6. -T content-type Content-type header for POSTing 
  7. //POST數據所使用的Content-type頭信息,如 -T “application/x-www-form-urlencoded” 。 (配合-p) 
  8. -v verbosity How much troubleshooting info to print 
  9. //設置顯示信息的詳細程度 – 4或更大值會顯示頭信息, 3或更大值可以顯示響應代碼(404, 200等), 2或更大值可以顯示警告和其他信息。 -V 顯示版本號并退出。 
  10. -C attribute Add cookie, eg. -C “c1=1234,c2=2,c3=3” (repeatable
  11. //-C cookie-name=value 對請求附加一個Cookie:行。 其典型形式是name=value的一個參數對。此參數可以重復,用逗號分割。 
  12. 提示:可以借助session實現原理傳遞 JSESSIONID參數, 實現保持會話的功能,如-C ” c1=1234,c2=2,c3=3, JSESSIONID=FF056CD16DA9D71CB131C1D56F0319F8″ 。 
  13. -w Print out results in HTML tables  //以HTML表的格式輸出結果。默認時,它是白色背景的兩列寬度的一張表。 

2.5 使用注意

1、MAC中自帶了Apache。

2、在使用ab命令時,并發了過高會出現錯誤:Too many open files,由于系統打開文件數量限制了具有輕量化特點的bench還是很適合中小企業使用,尤其在于模擬訪問頁面的多機測試

三、JMeter:Apache組織開發的壓力測試工具(使用比較多的工具)

3.1 簡介

Apache JMeter是一款純java編寫負載功能測試和性能測試開源工具軟件。相比Loadrunner而言,JMeter小巧輕便且免費,逐漸成為了主流的性能測試工具,是每個測試人員都必須要掌握的工具之一

JDK版本:1.8 運行環境:Windows 7 64 JMeter版本:3.3

注意:安裝JMeter需要 Java8和8以上的JDK版本

3.2 JDK安裝(如果已經安裝JDK 1.8 忽略這一步)

1、jdk官網下載地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html

2、選擇 Java SE 8u231,點擊JDK下載


安裝下載的JDK

配置系統環境變量 具體可以自行查找資料,這里就不做過多描述

3.2 JMeter安裝

1、官網下載地址:JMeter地址:http://jmeter.apache.org/download_jmeter.cgi

2、下載最新JMeter 5.1.1 版本:Apache JMeter 5.1.1 (Requires Java 8+)

3、下載完成后解壓zip包,雙擊bin目錄下jmeter.bat文件


3.3 JMeter 使用

1、雙擊bin目錄下jmeter.bat文件后,打開Apache JMeter工具


2、案例測試(Test Plan - > Add - > Thread(User) - > Thread Group)

3、設置名稱和線程數


線程參數解讀:Number of Threads (users):虛擬用戶數(也就是線程數),一個虛擬用戶占用一個進程或線程Ramp-Up Period(in seconds):準備時長,設置的虛擬用戶數需要多長時間全部啟動。

Loop Count:循環次數每個線程發送請求的次數

如果線程數為20,循環次數為100,那么每個線程發送100次請求??傉埱髷禐?0*100=2000 。

如果勾選了“Forever”,那么所有線程會一直發送請求,一到選擇停止運行腳本。

Delay Thread creation until needed:直到需要時延遲線程的創建

Scheduler:調度器,設置線程組啟動的開始時間和結束時間(配置調度器時,需要勾選循環次數為永遠)

Duration(Seconds):持續時間(秒),測試持續時間,會覆蓋結束時間

Startup delay(Seconds):啟動延遲(秒),測試延遲啟動時間,會覆蓋啟動時間

4、添加Http請求

右鍵點擊,Htto請求 > Add > Sampler > Http Request

接下來我們對接口 https://www.baidu.com/s?ie=UTF-8&wd=edg進行性能測試,如下圖所示:


請求參數詳解:

  • Web Server(Http服務): 1、Protocol[http]:協議,向目標服務器發送HTTP請求協議,可以是HTTP或HTTPS,默認為HTTP 2、服務器名稱或IP:HTTP請求發送的目標服務器名稱(域名)或IP 3、Port Number:端口號
  • Http Reuqeset(Http請求體): 1、Method:請求方法類型,有GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等 2、path:目標URL路徑,除去服務器地址、端口和請求參數后所得到的數據 3、Content encoding:編碼方式,設置為 UTF-8
  • 請求參數: 設置請求參數,都在下面的列表中進行設置,
  • 列表參數解讀:Name:請求參數名 Value:請求值 URL Encode:是否Url編碼 Conten-Type:內容類型,有需要自行調整(一般選擇默認即可) include Equals:是否包含等于

注意:參數傳入中文時需要勾選“URL Encode”

這里的按鈕都是針對列表中的數據進行操作的

  1. Detail 
  2. :查看參數詳情 
  3.  
  4. Add 
  5. :添加一行列表請求參數 
  6.  
  7. Delte 
  8. :刪除一行數據 
  9.  
  10. Up 
  11. :設置列表參數上移 
  12.  
  13. Down 
  14. :設置列表參數下移 
  15.  
  16. add from  
  17. Clipdoard 
  18. :從我們復制的內容中進行添加 

5、添加察看結果樹

1、右鍵點擊 Http請求 > Add > Listener > View Results Tree

2、這里我們設置響應數據格式:HTMLSourceFormatted,點擊運行我們就可以看到請求結果


3、本次搜索返回結果頁面標題為 edg_百度搜索

6、添加用戶自定義變量

1、添加用戶自定義變量用以Http請求參數化:Http請求 > Add > Config Element > User Defined Variables


2、新增請求參數,存放搜索關鍵字


3、在 Http測試請求 中使用該參數,格式為:${wd} ,如下圖所示


7、添加響應斷言

右鍵點擊 Http測試請求(注意是Http測試請求) > Add > Assertions > Response Assertion

 

校驗返回的文本中是否包含搜索詞,添加參數${wd}到要測試的模式中

  1. Contains 
  2. :包括 
  3.  
  4. Matches 
  5. :匹配 
  6.  
  7. Equals 
  8. :相等 
  9.  
  10. SubString 
  11. :原諒博主才疏學淺,這個就不做解釋了 
  12.  
  13. Not 
  14. :否 
  15.  
  16. or 
  17. :或者 

 

7、添加響應斷言結果

右鍵點擊 Http測試請求 > Add > Listener > Assertion Results


點擊運行,查詢運行結果

8、添加聚合報告

右鍵點擊 Http請求 > Add > Listener > Aggregate Report


到這里我們就完成了一個完整的Http接口的性能測試編寫,接下來我們會對它的性能進行測試

3.4 JMeter 性能測試

1、配置Http請求(線程組)信息

點擊Http請求(線程組),配置相關的性能測試相關參數線程數:50 循環次數:永遠持續時間:60秒


2、執行測試信息

選擇聚合報告,查詢結構,點擊 箭頭 按鈕啟動測試,如果要清楚具體內容,點擊小掃把,清除調試結果


3、測試結果分析解讀

1、打開聚合報告

參數詳解:

  1. Label:每個 JMeter 的 element都有一個 Name 屬性,這里顯示的是 Name 屬性的值
  2. #Samples:請求數——表示這次測試中一共發出了多少個請求 如果模擬10個用戶,每個用戶迭代10次,那么這里顯示100
  3. Average:平均響應時間——默認情況下是單個 Request 的平均響應時間 當使用了 Transaction Controller 時,以Transaction 為單位顯示平均響應時間
  4. Median:中位數,也就是 50% 用戶的響應時間
  5. 90% Line:90% 用戶的響應時間
  6. 99% Line:99% 用戶的響應時間
  7. Min:最小響應時間
  8. Max:最大響應時間
  9. Error%:錯誤率——錯誤請求數/請求總數
  10. Throughput:吞吐量——默認情況下表示每秒完成的請求數(Request per Second) 當使用了TransactionController時,也可以表示類似LoadRunner的TransactionperSecond數
  11. KB/Sec:每秒從服務器端接收到的數據量

在實際中我們需要關注的點只有—— #Samples 請求數,Average 平均響應時間,Min 最小響應時間,Max 最大響應時間,Error% 錯誤率和Throughput 吞吐量

四、代碼模擬

1、Semaphore

Semaphore是計數信號量。Semaphore管理一系列許可證。每個acquire方法阻塞,直到有一個許可證可以獲得然后拿走一個許可證;每個release方法增加一個許可證,這可能會釋放一個阻塞的acquire方法。然而,其實并沒有實際的許可證這個對象,Semaphore只是維持了一個可獲得許可證的數量。

[[380133]]

1.1 代碼演示:獲取一個許可證

  1. import lombok.extern.slf4j.Slf4j; 
  2.  
  3. import java.util.concurrent.CountDownLatch; 
  4. import java.util.concurrent.ExecutorService; 
  5. import java.util.concurrent.Executors; 
  6. import java.util.concurrent.Semaphore; 
  7.  
  8. @Slf4j 
  9. public class SemaphoreExample1 { 
  10.  
  11.     private final static int threadCount = 20; 
  12.  
  13.     public static void main(String[] args) throws Exception { 
  14.  
  15.         ExecutorService exec = Executors.newCachedThreadPool(); 
  16.  
  17.         final Semaphore semaphore = new Semaphore(3); 
  18.  
  19.         for (int i = 0; i < threadCount; i++) { 
  20.             final int threadNum = i; 
  21.             exec.execute(() -> { 
  22.                 try { 
  23.                     semaphore.acquire(); // 獲取一個許可 
  24.                     test(threadNum); 
  25.                     semaphore.release(); // 釋放一個許可 
  26.                 } catch (Exception e) { 
  27.                     log.error("exception", e); 
  28.                 } 
  29.             }); 
  30.         } 
  31.         exec.shutdown(); 
  32.     } 
  33.  
  34.     private static void test(int threadNum) throws Exception { 
  35.         log.info("{}", threadNum); 
  36.         Thread.sleep(1000); 
  37.     } 

執行結果:如下圖所示,我們看到雖然結果是無序的,但是請求的線程數量是正確的,這里展示的是獲取一個許可,同時也釋放一個許可,我們可不可以獲取多個許可,釋放多個許可呢,答案是可以的


1.2 代碼演示:獲取多個許可證

  1. package com.mmall.concurrency.example.aqs; 
  2.  
  3. import lombok.extern.slf4j.Slf4j; 
  4.  
  5. import java.util.concurrent.ExecutorService; 
  6. import java.util.concurrent.Executors; 
  7. import java.util.concurrent.Semaphore; 
  8.  
  9. @Slf4j 
  10. public class SemaphoreExample { 
  11.  
  12.     private final static int threadCount = 20; 
  13.  
  14.     public static void main(String[] args) throws Exception { 
  15.  
  16.         ExecutorService exec = Executors.newCachedThreadPool(); 
  17.  
  18.         final Semaphore semaphore = new Semaphore(3); 
  19.  
  20.         for (int i = 0; i < threadCount; i++) { 
  21.             final int threadNum = i; 
  22.             exec.execute(() -> { 
  23.                 try { 
  24.                     semaphore.acquire(3); // 獲取多個許可 
  25.                     test(threadNum); 
  26.                     semaphore.release(3); // 釋放多個許可 
  27.                 } catch (Exception e) { 
  28.                     log.error("exception", e); 
  29.                 } 
  30.             }); 
  31.         } 
  32.         exec.shutdown(); 
  33.     } 
  34.  
  35.     private static void test(int threadNum) throws Exception { 
  36.         log.info("{}", threadNum); 
  37.         Thread.sleep(1000); 
  38.     } 

執行結果:這里我們看到我們設置了獲取多個許可同時也釋放多個許可,放回的線程數是正確的,同時執行結果也是有序的


2、CountDownLatch

CountDownLatch是一個同步工具類,用來協調多個線程之間的同步,或者說起到線程之間的通信(而不是用作互斥的作用)。CountDownLatch能夠使一個線程在等待另外一些線程完成各自工作之后,再繼續執行。使用一個計數器進行實現。計數器初始值為線程的數量。當每一個線程完成自己任務后,計數器的值就會減一。當計數器的值為0時,表示所有的線程都已經完成了任務,然后在CountDownLatch上等待的線程就可以恢復執行任務

 

2.1 代碼演示:

  1. import lombok.extern.slf4j.Slf4j; 
  2.  
  3. import java.util.concurrent.CountDownLatch; 
  4. import java.util.concurrent.ExecutorService; 
  5. import java.util.concurrent.Executors; 
  6.  
  7. @Slf4j 
  8. public class CountDownLatchExample1 { 
  9.  
  10.     private final static int threadCount = 200; 
  11.     public static void main(String[] args) throws Exception { 
  12.         int num = 0; 
  13.  
  14.         ExecutorService exec = Executors.newCachedThreadPool(); 
  15.         final CountDownLatch countDownLatch = new CountDownLatch(threadCount); 
  16.  
  17.         for (int i = 0; i < threadCount; i++) { 
  18.             final int threadNum = i; 
  19.             num++; 
  20.             exec.execute(() -> { 
  21.                 try { 
  22.                     test(threadNum); 
  23.                 } catch (Exception e) { 
  24.                     log.error("exception", e); 
  25.                 } finally { 
  26.                     countDownLatch.countDown(); 
  27.                 } 
  28.             }); 
  29.         } 
  30.         countDownLatch.await(); 
  31.         log.info("finish——"+num); 
  32.         exec.shutdown(); 
  33.     } 
  34.  
  35.     private static void test(int threadNum) throws Exception { 
  36.         Thread.sleep(100); 
  37.         log.info("{}", threadNum); 
  38.         Thread.sleep(100); 
  39.     } 

 

通過返回結果我們可以看到,設置的線程數量返回結果數量和我們設置的線程數量200一致

五、總結

postMan:非專業的并發測試,嚴格來說postMan并不是并發請求,而是串行執行的,postMan更多的是用來測試Http連接的一個工具,是一個很實用的工具

Apache Bench:Apache Bench是 Apache 服務器自帶的一個web壓力測試工具,簡稱ab,ab工具小巧簡單,上手學習較快,可以提供需要的基本性能指標,但是沒有圖形化結果,不能監控

JMeter:Apache JMeter 是Apache 組織開發的基于java的壓力測試工具。用于對軟件做壓力測試的工具,它可以用于測試靜態和動態資源例如靜態文件、Java 小服務程序、CGI 腳本、Java 對象、 數據庫, FTP 服務器等等

總的來說,并發測試中,JMeter和Apache Bench是比較好的選擇,由于Apache Bench是基于命令行的,ab處理速度更快,而Jmeter更準確,由于Jmeter本身支持斷言、可變參數和CSV數據集的輸入,能設定更加靈活多變的的測試場景,至于postMan這款工具,用來最多的是用來模擬Http請求的一個,并不是一個專業的并發請求工具。

 

責任編輯:姜華 來源: 牧小碼農
相關推薦

2025-07-01 08:20:00

JUC包Java并發

2017-01-09 16:06:19

2023-12-14 07:36:16

Java并發原子類

2025-07-04 09:05:35

2024-11-13 15:09:57

Java線程開發

2017-02-14 10:00:19

Java開發Lock

2023-02-10 09:40:36

Go語言并發

2012-03-06 11:01:44

Java

2024-04-22 09:30:24

2024-01-31 08:50:41

Guava并發工具

2019-07-25 12:46:32

Java高并發編程語言

2020-02-18 14:05:47

模擬并發Java

2014-07-02 09:37:02

模擬并發并發

2010-06-08 18:53:43

UML建模工具

2023-10-18 15:19:56

2024-09-06 10:48:13

2019-11-19 09:00:38

JavaAND信號量

2012-07-06 15:00:03

跨平臺工具MoSync

2012-07-06 15:08:14

跨平臺工具Netbiscuits

2011-08-15 11:13:06

IOS開發并發Dispatch Qu
點贊
收藏

51CTO技術棧公眾號

99久久综合国产精品二区| 91美女精品网站| 欧美日韩国产传媒| 这里只有精品视频在线观看| 国产又粗又长又爽视频| 日本私人网站在线观看| 免费高清成人在线| 久久久久国色av免费观看性色 | 亚洲大胆人体在线| 日本熟妇人妻中出| 久草在线新免费首页资源站| 国产欧美日韩在线视频| 不卡一区二区三区视频| 337p粉嫩色噜噜噜大肥臀| 一区二区中文| 在线看欧美日韩| 一级特级黄色片| 精品中文字幕一区二区三区四区| 国产高清一区在线观看| 日韩电影在线一区二区三区| 久久国产精品影片| 精品人妻中文无码av在线| 日韩中文字幕| 欧美日韩一级片网站| 国产 日韩 亚洲 欧美| h视频网站在线观看| 国产成人在线视频网站| 国产精品久久久久9999| 精品无码久久久久久久久| 狠狠做深爱婷婷综合一区| 欧美一区二区三区爱爱| 男人亚洲天堂网| 99热国产在线| 国产精品嫩草影院com| 国产一区二区三区无遮挡 | 亚洲www在线| 无码一区二区三区在线观看| 亚洲成人日韩| 国产亚洲免费的视频看| xfplay5566色资源网站| 日韩成人久久| 在线视频综合导航| www精品久久| 国产美女在线观看| 中文字幕精品在线不卡| 欧美激情专区| 神马午夜精品95| 另类调教123区| 日韩av123| 五月婷婷中文字幕| 在线看片日韩| 久久琪琪电影院| 欧美人妻一区二区| 久久久久国产| 色777狠狠综合秋免鲁丝| 在线观看日本中文字幕| 日韩伦理一区二区三区| 亚洲国产中文字幕在线观看| 一起操在线视频| 999久久久国产999久久久| 欧美视频你懂的| 欧美精品aaaa| 欧美日一区二区三区| 在线观看国产一区| 蜜桃久久一区二区三区| 国产一区二区三区四| 国产欧美日韩中文字幕| 亚洲精品社区| 亚洲欧美日韩在线高清直播| 国产精品成人99一区无码 | 久久久国产欧美| 中文字幕影音在线| 国产免费黄色录像| 日韩一区二区久久| 久久久久久高潮国产精品视| 欧美日韩激情在线观看| 午夜精品电影| 欧美激情久久久| 国产在线观看99| 最新成人av网站| 欧美精品videossex88| 日本一级淫片色费放| 国产乱码精品| 国产精品久久久久久久久久东京| 国产精品国产精品国产| 国内成人自拍视频| 91精品国产高清久久久久久91裸体 | 国产精选久久久| 激情欧美一区二区三区在线观看| 成人免费观看网址| www黄色网址| av亚洲精华国产精华精华 | 人妻少妇一区二区三区| 99精品视频在线免费观看| 蜜桃av噜噜一区二区三| 91精品专区| 一区二区三区四区不卡视频| 免费拍拍拍网站| 性欧美hd调教| 7777精品伊人久久久大香线蕉经典版下载 | 成人av影院在线观看| 欧美日韩国产在线播放| 色婷婷成人在线| 99a精品视频在线观看| 亚洲欧美激情另类校园| 在线观看日本黄色| 狠狠爱www人成狠狠爱综合网| 国产91av在线| 91成品人影院| 不卡av在线免费观看| 天堂精品视频| 国产在线拍揄自揄拍视频| 欧美性少妇18aaaa视频| 男女视频在线观看网站| 欧美巨大xxxx| 日韩亚洲欧美中文高清在线| 色播视频在线播放| 久久国产综合精品| 久精品国产欧美| 国产在线高清理伦片a| 色综合天天在线| mm1313亚洲国产精品无码试看| 在线精品国产亚洲| 亚洲视频在线观看网站| 欧美片一区二区| 奇米色一区二区三区四区| 国产 高清 精品 在线 a| 69久久久久| 大伊人狠狠躁夜夜躁av一区| 亚洲一区二区三区四区精品 | 日韩伦理一区二区三区av在线| 中中文字幕av在线| 欧美午夜片在线看| 色婷婷免费视频| 欧美激情第二页| 国产欧美日韩视频| 搞黄视频免费在线观看| 欧美日韩免费观看中文| 青青草原播放器| 日韩中文在线电影| 欧美中文字幕在线观看| 丰满人妻熟女aⅴ一区| 国产精品美女www爽爽爽| 777精品久无码人妻蜜桃| 视频在线观看免费影院欧美meiju 视频一区中文字幕精品 | 久久99国产精品成人| 热舞福利精品大尺度视频| 欧美hdxxxxx| 欧美一区中文字幕| 欧美性生交大片| 免费观看在线色综合| 欧美成ee人免费视频| 182在线播放| 精品国产一区二区国模嫣然| 欧美日韩精品亚洲精品| 韩国成人福利片在线播放| 翔田千里亚洲一二三区| 色8久久影院午夜场| 亚洲男人天堂2019| 国产污污视频在线观看| 成人av在线电影| 久久人人爽人人爽人人av| 日韩不卡在线视频| 久久97精品久久久久久久不卡| 国产精品视频一区二区三区,| 国产精品久久久久久亚洲伦| 男人添女人下面免费视频| 欧美日韩国产传媒| 成人动漫网站在线观看| 黄色影院在线播放| 欧美日韩精品系列| 国产免费一区二区三区四区| 精品亚洲欧美一区| 男同互操gay射视频在线看| 国产精品一区免费在线| 欧美精品亚州精品| av影片在线看| 国产精品蜜臀在线观看| 国产精品免费成人| julia中文字幕一区二区99在线| 久久精彩免费视频| 97人妻人人澡人人爽人人精品| 亚洲欧美综合色| 精品国产鲁一鲁一区二区三区| 国产精品伦理久久久久久| 成人在线小视频| 欧美精品videossex少妇| 亚洲成人网av| 欧美特级黄色片| 中文字幕一区免费在线观看| 亚欧美一区二区三区| 亚洲国产第一| 亚洲精品欧美精品| 精品国产一区二| 久久久在线观看| 激情小视频在线| 欧美精品aⅴ在线视频| 久久亚洲国产成人精品性色| 91在线看国产| 色天使在线观看| 精久久久久久| 五月天久久综合网| 亚洲一区二区免费在线观看| 欧美专区第一页| 黄网站免费在线播放| 亚洲国产精品推荐| 中文字幕人妻互换av久久| 亚洲综合丝袜美腿| 在线观看福利片| 国产一区二区不卡老阿姨| jizzjizz国产精品喷水| 久久超碰99| 国产中文字幕日韩| 丁香花在线高清完整版视频| 久久精品在线播放| wwwav在线播放| 欧美吞精做爰啪啪高潮| 国产精品白浆一区二小说| 国产日韩亚洲欧美综合| 午夜影院免费观看视频| 久久久久免费| 男人添女荫道口女人有什么感觉| 国产欧美日韩一区二区三区四区| 成人免费视频观看视频| 91精品国产经典在线观看| 久久人人爽人人爽人人片av高请 | 精品国产鲁一鲁一区二区张丽| 亚洲女同二女同志奶水| 久久夜色精品国产噜噜av| 性久久久久久久久久久久久久| 亚洲综合国产| youjizz.com在线观看| 欧美日韩激情| 精品中文字幕人| 日韩精品视频一区二区三区| 国产精品久久久久久av福利软件| 国产在线精彩视频| 久久6精品影院| 国产日产一区二区三区| 这里只有精品在线观看| 欧美xxx.com| 亚洲国产美女久久久久| 性欧美18一19性猛交| 欧美精品自拍偷拍| 国产精品自拍99| 国产精品萝li| 91成年人网站| 久久久精品日韩欧美| 欧美熟妇精品黑人巨大一二三区| 大尺度一区二区| 久久黄色一级视频| 国产在线播精品第三| 国产精品久久久毛片| 噜噜噜躁狠狠躁狠狠精品视频| 日韩黄色短视频| 韩国精品一区二区三区| 日韩视频一二三| 国产精品成久久久久| 亚洲三区在线| 99视频精品全部免费在线视频| 亚洲黄色成人久久久| 欧美天天综合| 青青成人在线| 国产精品一在线观看| 久久99精品国产99久久| 青青操综合网| 欧美日韩精品一区| 免费看日本一区二区| 日本不卡在线播放| 成人羞羞网站入口免费| 一区二区不卡在线| 91精品国产乱码久久久久久久| 超碰免费在线公开| 在线精品视频在线观看高清| 久久精品在线免费视频| 欧美精品国产一区| 精品国产一区二区三区无码| 无码视频在线观看| 亚洲aⅴ怡春院| 国产三级av片| 精品国产老师黑色丝袜高跟鞋| 国产精品九九九九九九| 国产精品不卡在线| 久久精品国产亚洲AV无码麻豆| 日韩成人精品一区二区| 免费精品视频一区| 狠狠做深爱婷婷综合一区| 一区二区三区久久网| 欧美午夜不卡影院在线观看完整版免费| 男人天堂a在线| 美女诱惑一区| 欧美劲爆第一页| 丁香花电影在线观看完整版| 91国产美女在线观看| 九九热线视频只有这里最精品| 国产精品综合久久久| 亚州一区二区| 欧美日韩精品久久| 91精品一区国产高清在线gif | 国产探花精品一区二区| 亚洲韩国日本中文字幕| 岛国视频免费在线观看| 免费99精品国产自在在线| 国产va在线视频| 国产伦精品一区二区三区精品视频| 国产亚洲高清一区| 久久久久久精| 亚洲天堂免费| 国产中文字幕免费观看| 极品少妇xxxx精品少妇偷拍| 亚洲图片综合网| 中文字幕一区av| 欧美三级韩国三级日本三斤在线观看 | 欧美影院一区二区| 不卡的日韩av| 国产一区二区三区视频| 日本欧美电影在线观看| 国产精品久久久久久久久借妻| 国产suv精品一区| 在线观看欧美亚洲| 噜噜噜在线观看免费视频日韩| wwwxxx色| 中文字幕一区在线观看视频| 特级毛片www| 欧美日韩电影在线播放| 污污网站在线免费观看| 一区二区三区天堂av| 国产极品在线观看| 91免费综合在线| 久久久久久久久久久久久av| 在线电影一区二区三区| 国产在线视频网站| 68精品国产免费久久久久久婷婷| 99er精品视频| 亚洲精品在线免费| 久久久夜精品| 成人精品在线观看视频| 一个色在线综合| 国产www免费观看| 亚洲免费精彩视频| 后进极品白嫩翘臀在线播放| 91在线免费看网站| 伊人久久大香线蕉综合网站 | 午夜一区二区三区在线观看| 99久久亚洲精品日本无码| 中文日韩在线观看| 日韩不卡在线| 色一情一乱一伦一区二区三欧美| 亚洲尤物精选| 制服丝袜第二页| 亚洲国产日产av| 亚洲成人第一区| 日韩有码在线电影| 欧美黑人一区| 欧美一区二区三区成人久久片| 亚洲尤物精选| 熟女俱乐部一区二区视频在线| 欧美色xxxx| 可以在线观看的黄色| 国产91露脸中文字幕在线| 亚洲裸色大胆大尺寸艺术写真| 久久网站免费视频| 久久综合色播五月| 波多野结衣影片| 在线看福利67194| 在线免费成人| 好吊色这里只有精品| 国产一区不卡在线| 欧美极品aaaaabbbbb| 日韩欧美国产精品一区| 搞黄网站在线看| 久久riav二区三区| 久久九九国产| 在线观看日韩精品视频| 亚洲成人综合视频| 国产在线自天天| 国产色婷婷国产综合在线理论片a| 91亚洲国产成人久久精品| 99精品视频免费版的特色功能| 亚洲自拍偷拍综合| 神马电影在线观看| 国产精品久久网| 午夜日韩福利| 国产精品久久无码| 91福利视频久久久久| 国产激情在线观看| 国产精品免费一区二区三区| 国产精品三上| 国产精品1区2区3区4区| 欧美成人艳星乳罩| 二区三区不卡| 亚洲午夜久久久影院伊人| 国内精品伊人久久久久影院对白| 日韩无码精品一区二区三区| 亚洲人成网7777777国产| 四虎国产精品成人免费影视| 人妻av无码专区| 欧美激情一区二区三区在线| 国产精品色综合| 欧美影院在线播放|