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

關于MySQL線程池,這也許是目前最全面的實用帖!

數據庫 MySQL
本文就來詳細講述一下MySQL線程池相關的知識,以幫助廣大DBA快速了解MySQL的線程池機制,快速配置MySQL的線程池以及里面存在的一些坑。 其實我想說,了解和使用MySQL線程池,看這篇文章就夠了。

[[223871]]

最近出現多次由于上層組件異常導致DB雪崩的情況,筆者將部分監控DB啟用了線程池功能,在使用線程池的過程中不斷深入學習的同時,也遇到了不少問題。

本文就來詳細講述一下MySQL線程池相關的知識,以幫助廣大DBA快速了解MySQL的線程池機制,快速配置MySQL的線程池以及里面存在的一些坑。 其實我想說,了解和使用MySQL線程池,看這篇文章就夠了。

一、為何要使用MySQL線程池

在介紹為什么要使用線程池之前,我們都知道隨著DB訪問量越來越大,DB的響應時間也會隨之越來越大,如下圖:

而DB的訪問大到一定程度時,DB的吞吐量也會出現下降,并且會越來越差,如下圖所示:

那么是否有什么方式,能實現隨著DB的訪問量越來越大,DB始終表現出***的性能呢?類似下圖的表現:

答案就是今天要重點介紹的線程池功能。總結一下,使用線程池的理由有兩個:

1、減少線程重復創建與銷毀部分的開銷,提高性能

線程池技術通過預先創建一定數量的線程,在監聽到有新的請求時,線程池直接從現有的線程中分配一個線程來提供服務,服務結束后這個線程不會直接銷毀,而是又去處理其他的請求。這樣就避免了線程和內存對象頻繁創建和銷毀,減少了上下文切換,提高了資源利用率,從而在一定程度上提高了系統的性能和穩定性。

2、對系統起到保護作用

線程池技術限制了并發線程數,相當于限制了MySQL的runing線程數,無論系統目前有多少連接或者請求,超過***設置的線程數的都需要排隊,讓系統保持高性能水平,從而防止DB出現雪崩,對底層DB起到保護作用。

可能有人會問,使用連接池能否也達到類似的效果?

也許有的DBA會把線程池和連接池混淆,但其實兩者是有很大區別的:連接池一般在客戶端設置,而線程池是在DB服務器上配置;另外連接池可以起到避免了連接頻繁創建和銷毀,但是無法控制MySQL活動線程數的目標,在高并發場景下,無法起到保護DB的作用。比較好的方式是將連接池和線程池結合起來使用。

二、MySQL線程池介紹

MySQL線程池簡介

為了解決one-thread-per-connection(每個連接一個線程)存在的頻繁創建和銷毀大量線程以及高并發情況下DB雪崩的問題,實現DB在高并發環境依然能保持較高的性能。

Oracle和MariaDB都推出了ThreadPool方案,目前Oracle的Thread pool實現為Plugin方式,并且只添加到在Enterprise版本中,Percona移植了MariaDB的Thread pool功能,并做了進一步的優化。本文的環境就基于Percona MySQL 5.7版本。

MySQL線程池架構

MySQL的Thread pool(線程池)被劃分為多個group(組),每個組又有對應的工作線程,整體的工作邏輯還是比較復雜,下面我試圖通過簡單的方式來介紹MySQL線程池的工作原理。

1、架構圖

首先來看看Thread Pool的架構圖。

2、Thread Pool的組成

從架構圖中可以看到Thread Pool由一個Timer線程和多個Thread Group組成,而每個Thread Group又由兩個隊列、一個listener線程和多個worker線程構成。下面分別來介紹各個部分的作用:

  • 隊列(高優先級隊列和低優先級隊列)

用來存放待執行的IO任務,分為高優先級隊列和低優先級隊列,高優先級隊列的任務會優先被處理。

什么任務會放在高優先級隊列呢?

事務中的語句會放到高優先級隊列中,比如一個事務中有兩個update的SQL,有1個已經執行,那么另外一個update的任務就會放在高優先級中。這里需要注意,如果是非事務引擎,或者開啟了Autocommit的事務引擎,都會放到低優先級隊列中。

還有一種情況會將任務放到高優先級隊列中,如果語句在低優先級隊列停留太久,該語句也會移到高優先級隊列中,防止餓死。

  • listener線程

listener線程監聽該線程group的語句,并確定當自己轉變成worker線程,是立即執行對應的語句還是放到隊列中,判斷的標準是看隊列中是否有待執行的語句。

如果隊列中待執行的語句數量為0,而listener線程轉換成worker線程,并立即執行對應的語句。如果隊列中待執行的語句數量不為0,則認為任務比較多,將語句放入隊列中,讓其他的線程來處理。這里的機制是為了減少線程的創建,因為一般SQL執行都非常快。

  • worker線程

worker線程是真正干活的線程。

  • Timer線程

Timer線程是用來周期性檢查group是否處于處于阻塞狀態,當出現阻塞的時候,會通過喚醒線程或者新建線程來解決。

具體的檢測方法為:通過queue_event_count的值和IO任務隊列是否為空來判斷線程組是否為阻塞狀態。

每次worker線程檢查隊列中任務的時候,queue_event_count會+1,每次Timer檢查完group是否阻塞的時候會將queue_event_count清0,如果檢查的時候任務隊列不為空,而queue_event_count為0,則說明任務隊列沒有被正常處理,此時該group出現了阻塞,Timer線程會喚醒worker線程或者新建一個wokrer線程來處理隊列中的任務,防止group長時間被阻塞。

3、Thread Pool的是如何運作的?

下面描述極簡的Thread Pool運作,只是簡單描述,省略了大量的復雜邏輯,請不要挑刺~

Step1:請求連接到MySQL,根據threadid%thread_pool_size確定落在哪個group;

Step2:group中的listener線程監聽到所在的group有新的請求以后,檢查隊列中是否有請求還未處理。如果沒有,則自己轉換為worker線程立即處理該請求,如果隊列中還有未處理的請求,則將對應請求放到隊列中,讓其他的線程處理;

Step3:group中的thread線程檢查隊列的請求,如果隊列中有請求,則進行處理,如果沒有請求,則休眠,一直沒有被喚醒,超過thread_pool_idle_timeout后就自動退出。線程結束。當然,獲取請求之前會先檢查group中的running線程數是否超過thread_pool_oversubscribe+1,如果超過也會休眠;

Step4:timer線程定期檢查各個group是否有阻塞,如果有,就對wokrer線程進行喚醒或者創建一個新的worker線程。

4、Thread Pool的分配機制

線程池會根據參數thread_pool_size的大小分成若干的group,每個group各自維護客戶端發起的連接,當客戶端發起連接到MySQL的時候,MySQL會跟進連接的線程id(thread_id)對thread_pool_size進行取模,從而落到對應的group。

thread_pool_oversubscribe參數控制每個group的***并發線程數,每個group的***并發線程數為thread_pool_oversubscribe+1個。若對應的group達到了***的并發線程數,則對應的連接就需要等待。這個分配機制在某個group中有多個慢SQL的場景下會導致普通的SQL運行時間很長,這個問題會在后面做詳細描述。

MySQL線程池參數說明

關于線程池參數不多,使用show variables like 'thread%'可以看到如下圖的參數,下面就一個一個來解析:

  • thread_handling

該參數是配置線程模型,默認情況是one-thread-per-connection,即不啟用線程池;將該參數設置為pool-of-threads即啟用了線程池。

  • thread_pool_size

該參數是設置線程池的Group的數量,默認為系統CPU的個數,充分利用CPU資源。

  • thread_pool_oversubscribe

該參數設置group中的***線程數,每個group的***線程數為thread_pool_oversubscribe+1,注意listener線程不包含在內。

  • thread_pool_high_prio_mode

高優先級隊列的控制參數,有三個值(transactions/statements/none),默認是transactions,三個值的含義如下:

transactions:對于已經啟動事務的語句放到高優先級隊列中,不過還取決于后面的thread_pool_high_prio_tickets參數。

statements:這個模式所有的語句都會放到高優先級隊列中,不會使用到低優先級隊列。

none:這個模式不使用高優先級隊列。

  • thread_pool_high_prio_tickets

該參數控制每個連接最多語序多少次被放入高優先級隊列中,默認為4294967295,注意這個參數只有在thread_pool_high_prio_mode為transactions的時候才有效果。

  • thread_pool_idle_timeout

worker線程***空閑時間,默認為60秒,超過限制后會退出。

  • thread_pool_max_threads

該參數用來限制線程池***的線程數,超過該限制后將無法再創建更多的線程,默認為100000。

  • thread_pool_stall_limit

該參數設置timer線程的檢測group是否異常的時間間隔,默認為500ms。

三、MySQL線程池的使用

線程池的使用比較簡單,只需要添加配置后重啟實例即可。

具體配置如下: 

  1. #thread pool  
  2. thread_handling=pool-of-threads  
  3. thread_pool_oversubscribe=3 
  4. thread_pool_size=24  
  5. performance_schema=off  
  6. #extra connection  
  7. extra_max_connections = 8  
  8. extra_port = 33333 

備注:其他參數默認即可

以上具體的參數在前面已做詳細說明,下面是配置中需要注意的兩個點:

1、之所以添加performance_schema=off,是由于測試過程中發現Thread pool和PS同時開啟的時候會出現內存泄漏問題(后文會詳細敘述);

2、添加extra connection是防止線程池滿的情況下無法登錄MySQL,因此特意用管理端口,以備緊急的情況下使用;

重啟實例后,可以通過show variables like '%thread%';來查看配置的參數是否生效。

四、使用中遇到的問題

在使用線程池的過程中,我遇到了幾個問題,這里也順便做個總結:

內存泄漏問題

DB啟用線程池后,內存飆升了8G左右,如下圖:

不但啟用線程池后內存飆升了8G左右,而且內存還在持續增長,很明顯啟用線程池后存在內存泄漏問題了。

網上也有不少的人遇到這個問題,確認是percona的bug導致(https://jira.percona.com/browse/PS-3734),只有開啟Performance_Schema和ThreadPool的時候才會出現,解決辦法是關閉Performance_Schema,具體操作方法是在配置文件添加performance_schema=off,然后重啟MySQL就OK。

下面是關閉PS后的內存使用情況對比:

備注:目前Percona server 5.7.21-20版本已經修復了線程池和PS同時打開內存泄漏的問題,從我測試的情況來看問題也得到了解決,大家可以直接使用Percona server 5.7.21-20的版本,如下圖。

撥測異常問題

啟用線程池以后,相當于限制了MySQL的并發線程數,當達到***線程數的時候,其他的線程需要等待,新連接也會卡在連接驗證那一步,這時候會造成撥測程序連接MySQL超時,撥測返回錯誤如下:

撥測程序連接實例超時后,就會認為master已經出現問題。極端情況下,重試多次都有異常后,就啟動自動切換的操作,將業務切換到從機。

這種情況有兩種解決辦法:

1、啟用MySQL的旁路管理端口,監控和高可用相關直接使用MySQL的旁路管理端口。

具體做法為:在my.cnf中添加如下配置后重啟,就可以通過旁路端口登錄MySQL了,不受線程池***線程數的影響: 

  1. extra_max_connections = 8  
  2. extra_port = 33333 

備注:建議啟用線程池后,把這個也添加上,方便緊急情況下進行故障處理。

2、修改高可用探測腳本,將達到線程池***活動線程數返回的錯誤做異常處理,當作超過***連接數的場景。(備注:超過***連接數只告警,不進行自動切換)

慢SQL引入的問題

隨著對撥測超時的問題的深入分析,線程池滿只是監控撥測出現超時的其中一種情況,還有一種情況是線程池并沒有滿,線上的兩個配置: 

  1. thread_pool_oversubscribe=3 
  2.  
  3. thread_pool_size=24 

按照上面的兩個配置來計算的話,總共能并發運行24x(3+1)=96,但是根據多次問題的追中,發現有多次線程池并沒有達到96,也就是說整體的線程池并沒有滿。那會是什么問題導致撥測失敗呢?

鑒于線程池的結構和分配機制,通過前面線程池部分的描述,大家都知道了在內部是將線程池分成一個一個的group,我們線上配置了24個group,而線程池的分配機制是對Threadid進行取模,然后確定該線程是落在哪個group。

出現超時的時候,有很多的load線程到導入數據。也就是說那個時候有部分線程比較慢的情況。那么會不會是某個group的線程滿了,從而導致新分配的線程等待?

有了這個猜想以后,接下來就是來驗證這個問題。驗證分為兩步:

1、抓取線上運行的processlist,然后對threadid取模,看看是否有多個load線程落在同一個group的情況;

2、在測試環境模擬這種場景,看看是否符合預期。

線上場景分析

先來看線上的場景,通過抓取撥測超時時間點的processlist,找出當時正在load的線程,根據threadid進行去模,并進行匯總統計后,得出如下結果:

可以看出,當時第4和第7個group的請求個數都超過了4個,說明是單個group滿導致的撥測異常。當然,也會導致部分運行很快的SQL變慢。

測試環境模擬場景分析

為了構建快速重現環境,我將參數調整如下: 

  1. thread_pool_oversubscribe=1  
  2. thread_pool_size=2 

通過上面參數的調整,可以計算出***并發線程為2x(1+1)=4,如下圖,當活動線程數超過4個后,其他的線程就必須等待:

我模擬線上環境的方法為開啟1個線程的慢SQL,這時測試環境的線程池情況如下:

按照之前的推測,這時Group1的處理能力相當于Group2的處理能力的50%,如果之前的推論是正確的,那么分配在Group1上的線程就會出現阻塞。

比如此時來了20個線程請求,按照線程池的分配原則,此時Group1和Group2都會分到10個線程請求。如果所有的線程請求耗時都是一樣的,那么分配到Group1上的線程請求整體處理時間應該是分配到Group2上整體處理時間的2倍。

我使用腳本,并發起12個線程請求,每個線程請求都運行select sleep(2),那么在Group1和Group2都空閑的情況下,運行情況如下: 

  1. 2018-03-18-20:23:53  
  2. 2018-03-18-20:23:53  
  3. 2018-03-18-20:23:53  
  4. 2018-03-18-20:23:53  
  5. 2018-03-18-20:23:55  
  6. 2018-03-18-20:23:55  
  7. 2018-03-18-20:23:55  
  8. 2018-03-18-20:23:55 
  9. 2018-03-18-20:23:57  
  10. 2018-03-18-20:23:57  
  11. 2018-03-18-20:23:57  
  12. 2018-03-18-20:23:57 

每次4個線程,總共運行了6秒。

接下來在Group1被1個長時間運行的線程沾滿以后,看看測試結果是怎么樣的: 

  1. 2018-03-18-20:24:35  
  2. 2018-03-18-20:24:35  
  3. 2018-03-18-20:24:35  
  4. 2018-03-18-20:24:37  
  5. 2018-03-18-20:24:37  
  6. 2018-03-18-20:24:37  
  7. 2018-03-18-20:24:39  
  8. 2018-03-18-20:24:39  
  9. 2018-03-18-20:24:39  
  10. 2018-03-18-20:24:41  
  11. 2018-03-18-20:24:43  
  12. 2018-03-18-20:24:45 

從上面的結果中可以看出,在沒有阻塞的時候,每次都是4個線程,而后面有1個線程長時間運行的時候,就會出現那個長時間線程對應的group出現排隊的情況,***雖然有3個空閑的線程,但是卻只有1個線程在處理(標紅部分結果)。

解決方法有兩個:

1、將thread_pool_oversubscribe適當調大,這個辦法只能緩解類似問題,無法***;

2、找到慢的SQL,解決慢的問題。

參考文獻:

https://www.percona.com/doc/percona-server/LATEST/performance/threadpool.html

https://www.percona.com/blog/2013/03/16/simcity-outages-traffic-control-and-thread-pool-for-mysql/

http://www.cnblogs.com/cchust/p/4510039.html

http://blog.jobbole.com/109695/

http://blog.csdn.net/u012662731/article/details/54375137 

 

責任編輯:龐桂玉 來源: DBAplus社群
相關推薦

2015-11-10 17:36:18

2023-06-19 08:02:40

2017-03-29 09:08:25

Spring筆記

2015-12-16 10:30:18

前端開發指南

2013-05-27 14:06:14

Android開發移動開發Intent機制

2015-09-18 16:55:45

云計算

2024-01-08 13:32:00

線程池系統設置

2013-12-12 16:25:18

微軟Windows 9Threshold

2016-01-28 14:41:06

CC++編碼

2015-11-17 09:30:23

程序員招聘建議

2015-06-01 10:17:36

2011-06-22 15:50:45

QT 線程

2024-11-21 07:00:00

線程池Java開發

2023-03-26 11:26:29

2024-09-05 16:01:55

2009-05-25 09:00:45

Javascript免費工具Javascript框

2018-04-16 15:14:06

技術

2021-06-17 08:35:36

Java內存模型

2020-04-14 10:50:47

FlutterGithub

2022-11-16 16:14:46

單踏板模式特斯拉
點贊
收藏

51CTO技術棧公眾號

国产日产亚洲精品| 亚洲国产欧美一区二区丝袜黑人| 一区二区不卡在线视频 午夜欧美不卡' | 色国产在线视频| 日本中文字幕中出在线| 26uuu精品一区二区三区四区在线| 国产精品网站入口| 精品午夜福利在线观看| 欧美色婷婷久久99精品红桃| 欧美一个色资源| 成人一级片网站| 成人ww免费完整版在线观看| 久久人人爽爽爽人久久久| 成人黄色av免费在线观看| 久久夜色精品亚洲| 在线观看国产精品入口| 亚洲欧美激情另类校园| 亚洲精品成人在线播放| 三级成人黄色影院| 亚洲成av人综合在线观看| 亚洲蜜桃在线| 美女做暖暖视频免费在线观看全部网址91| 国产在线播放一区二区三区| 浅井舞香一区二区| 五月天婷婷丁香| 亚洲香蕉av| 日韩小视频在线观看| 波多野结衣 在线| 高潮久久久久久久久久久久久久| 欧美日韩精品福利| 成人性视频欧美一区二区三区| 欧美草逼视频| 亚洲蜜桃精久久久久久久| 日韩欧美一区二区三区四区| 欧美特黄一级视频| 国产成人综合视频| 91亚洲va在线va天堂va国| 国产日韩久久久| 久久久久看片| 日本久久精品视频| av中文在线播放| 99视频一区| 91麻豆国产精品久久| 亚洲福利一区二区| 亚洲国产另类久久久精品极度| 午夜av免费观看| 99re热这里只有精品视频| 岛国视频一区免费观看| 亚洲av无码一区二区三区dv| 国产乱子伦一区二区三区国色天香| 国产三级精品网站| 91精品国产综合久| 狠狠色丁香婷婷综合| 国产日韩综合一区二区性色av| 91tv国产成人福利| 激情欧美一区二区三区在线观看| 国产欧美日韩精品在线观看| 一级特黄色大片| 国产综合一区二区| 1区1区3区4区产品乱码芒果精品| 精品国产区一区二| 成人丝袜18视频在线观看| 国产高清一区视频| av女名字大全列表| 国产日韩影视精品| 亚洲伊人婷婷| aaa大片在线观看| 一区二区三区日韩欧美精品| 久久久久久免费看| 亚洲一区资源| 欧美日韩高清影院| 永久看看免费大片| 国产伦精品一区二区三区在线播放| 亚洲第一视频网站| 精品无码国产污污污免费网站| 精品国产乱码久久久| 久久精品欧美视频| 久久黄色免费视频| 丝袜美腿一区二区三区| 成人久久精品视频| 嫩草影院一区二区| 国产女同性恋一区二区| 在线观看免费黄色片| 午夜小视频在线观看| 精品电影在线观看| 艹b视频在线观看| 在线日韩成人| 亚洲美女av在线| 亚洲精品卡一卡二| 麻豆成人精品| 亚洲伊人久久综合| 四虎精品在线| 亚洲六月丁香色婷婷综合久久| av动漫在线看| 日本一区二区三区中文字幕| 精品久久一二三区| 欧美黄色高清视频| 亚洲美女网站| 成人黄色短视频在线观看| 偷拍25位美女撒尿视频在线观看| 国产精品久久久久一区 | 国内外激情在线| 激情久久av一区av二区av三区| 日本中文字幕精品—区二区| 欧美做受69| 裸体女人亚洲精品一区| jizz国产在线观看| 床上的激情91.| 亚洲欧洲精品一区二区三区波多野1战4| 日韩激情av| 7777精品伊人久久久大香线蕉完整版| 日本黄色录像片| 外国成人免费视频| 国产成人久久精品| 深夜福利视频网站| 亚洲精品一卡二卡| 亚洲一级免费在线观看| 自拍自偷一区二区三区| 久久99精品国产99久久6尤物 | 久久99热这里只有精品| 欧美日本韩国一区二区三区| 黑人玩欧美人三根一起进| 欧美精品在线观看一区二区| 精品人妻一区二区三区视频| 亚洲国产一区二区三区a毛片| 91精品中文在线| 欧美69xxx| 欧美精品xxxxbbbb| 91麻豆制片厂| 日韩激情一二三区| 日本电影一区二区三区| 不卡福利视频| 亚洲开心激情网| 日韩精品一区二区三| 夫妻av一区二区| 97av中文字幕| 美女国产精品久久久| 久久久久99精品久久久久| 一级全黄少妇性色生活片| 国产精品无人区| 亚洲视频第二页| 国产精品久久久久久影院8一贰佰 国产精品久久久久久麻豆一区软件 | 国产系列在线观看| 欧美在线短视频| www.99热| 久久国产精品露脸对白| 亚洲视频电影| 亚洲狼人综合| 欧美成人手机在线| 亚洲av无码一区二区三区性色| 亚洲另类中文字| 人妻av一区二区| 亚洲看片一区| 欧美日韩亚洲一区二区三区在线观看| 色8久久影院午夜场| 国产亚洲欧美aaaa| 中文字幕乱码人妻无码久久| 亚洲欧洲性图库| 久久精品一二三四| 红桃视频国产一区| 欧美激情第六页| 久久亚洲精品爱爱| 日韩中文字幕免费视频| 国产女同91疯狂高潮互磨| 伊人夜夜躁av伊人久久| 国产婷婷在线观看| 丝袜亚洲另类欧美| 国产成人精品免费看在线播放 | 免费无码毛片一区二区app| 国产成人在线视频网址| 国产伦精品一区二区三区四区视频_ | 日韩电影第一页| 青青国产在线观看| 国产拍欧美日韩视频二区| 黄色小视频免费网站| 午夜日韩视频| 鲁丝一区鲁丝二区鲁丝三区| 日日夜夜一区| 69**夜色精品国产69乱| a天堂中文在线88| 日韩一区二区三区免费看| 青青草av在线播放| 国产精品毛片大码女人| wwwww在线观看| 久久中文精品| 一本色道久久88亚洲精品综合| 日本福利一区| 成人性教育视频在线观看| 草草视频在线观看| 精品国产拍在线观看| 日批视频在线播放| 欧美日韩亚洲另类| 日本三级一区二区| 亚洲视频香蕉人妖| 国产吞精囗交久久久| 精品一区二区三区香蕉蜜桃| 你懂的av在线| 欧美日韩国产探花| 神马一区二区影院| 久久久免费毛片| 成人xxxx视频| 欧洲一级精品| 久久久久久91| 黄色网址在线免费| 亚洲午夜小视频| 欧美一区二区公司| 777xxx欧美| 久久久久精彩视频| 亚州成人在线电影| 69av视频在线| 中文字幕在线一区| 黑人巨大精品欧美| 不卡av在线网| 国产乱国产乱老熟300部视频| 日本不卡一区二区| 欧美s码亚洲码精品m码| 国产精品99免费看| 永久久久久久| 欧美高清视频手机在在线| 欧洲精品久久| 网红女主播少妇精品视频| 国产精品yjizz| 精品国产亚洲一区二区三区在线| 国产精品一区二区久久精品| 日日av拍夜夜添久久免费| 2020久久国产精品| 99riav视频在线观看| 欧美精品videosex性欧美| 成人黄视频在线观看| 久久精品国产欧美亚洲人人爽| 国产黄在线观看| 亚洲一级一级97网| 激情小视频在线观看| 亚洲视频第一页| 精品欧美不卡一区二区在线观看| 日韩精品免费在线播放| 深夜福利视频一区| 日韩高清免费在线| 亚洲av成人无码久久精品老人| 亚洲精品久久久久久久久久久久久 | 91在线视频观看| av在线播放网址| aaa欧美日韩| 国产传媒第一页| 久久中文字幕电影| 国产三级av在线播放| 国产欧美一区二区三区网站| 一级二级黄色片| 国产精品乱子久久久久| 91制片厂在线| 亚洲品质自拍视频网站| 欧美成人精品欧美一级| 亚洲一二三区不卡| 久久艹免费视频| 在线一区二区三区| 91在线精品入口| 欧美一区二区三区在线观看视频| 精品人妻一区二区三区麻豆91| 欧美成人a视频| 香港一级纯黄大片| 在线观看日韩av| huan性巨大欧美| 国内精品久久久久久久久| 日本黄色免费在线| 国产精品福利无圣光在线一区| 亚洲人成777| 国产精品theporn88| 国产精品手机在线播放 | 国产cdts系列另类在线观看| 欧美福利小视频| 9i看片成人免费高清| 国产狼人综合免费视频| 日本免费一区二区视频| 精品国产一区二区三区四区vr | 国产欧美高清在线| 久久午夜精品| 污污的视频免费观看| 不卡电影一区二区三区| 正在播放国产对白害羞| 亚洲一级二级在线| 无码人妻丰满熟妇精品| 欧美一二三在线| 国产精品无码2021在线观看| 九九久久精品一区| 老司机2019福利精品视频导航| 91精品国产综合久久香蕉最新版 | 中文字幕丰满人伦在线| 日韩一级免费观看| 男人天堂资源在线| 久久精品中文字幕免费mv| 国产伦久视频在线观看| 成人黄色生活片| 婷婷成人综合| 成人av在线不卡| 奇米综合一区二区三区精品视频| 日批视频免费看| 国产精品久久久久久久久动漫| 国产精品6666| 欧美久久久久中文字幕| 免费在线黄色电影| 欧美激情在线一区| 亚洲天堂网站| 欧洲精品亚洲精品| 亚洲三级国产| 日本泡妞xxxx免费视频软件| 国产精品嫩草99a| 波多野结衣 久久| 亚洲第一级黄色片| 成人免费网站在线观看视频| 国产成人精品999| 久久资源综合| 国产又粗又猛又爽又黄的网站| 另类中文字幕网| 中文字幕免费高清| 午夜一区二区三区视频| 精品国产99久久久久久宅男i| 一区二区在线视频播放| 美脚恋feet久草欧美| 精品乱子伦一区二区三区| 女主播福利一区| 999在线观看| 国产精品伦一区| 在线观看免费视频a| 国产亚洲一区精品| 英国三级经典在线观看| 国产视频不卡| 欧美日韩国产综合网| 成人性生交视频免费观看| 国产精品久久久久精k8| 中文文字幕一区二区三三| 亚洲人成电影网站色www| 亚洲国产福利| 蜜桃av噜噜一区二区三| 亚洲综合99| 人妻熟女aⅴ一区二区三区汇编| 无码av免费一区二区三区试看 | 伊人久久大香线蕉av一区二区| 中老年在线免费视频| 九色91视频| 亚洲中午字幕| 成人免费网站黄| 欧美在线色视频| 91露出在线| 91精品久久久久久久久久另类 | 九九久久久久久久久激情| 精品精品视频| 女人被男人躁得好爽免费视频| 国产成人免费视频精品含羞草妖精 | 三级毛片在线免费看| 欧美日韩午夜在线视频| 国产一区二区视频免费| 亚洲欧美视频在线| 久久久成人av毛片免费观看| 日韩动漫在线观看| 美女在线视频一区| 91高清免费观看| 精品国产1区二区| 在线免费看h| 色涩成人影视在线播放| 六月丁香综合在线视频| 538精品在线视频| 亚洲成人久久一区| 精品国产免费人成网站| 色婷婷av一区二区三区在线观看| 精品国产大片大片大片| 欧美日韩一区在线观看| 黄色在线免费| 国产精品久久久久久久久久久久午夜片 | 日韩av在线免费观看| 成人啊v在线| 久久久成人精品一区二区三区| 国产精品538一区二区在线| 国产午夜精品无码| 亚洲一二在线观看| 国产精品日本一区二区不卡视频 | 国产麻豆视频一区二区| 国产真实的和子乱拍在线观看| 亚洲欧洲中文天堂| 国产精品一区免费在线| 男女私大尺度视频| 中文字幕乱码亚洲精品一区| www日本高清| 国产精品91久久| 欧美欧美天天天天操| 在哪里可以看毛片| 欧美色手机在线观看| 欧美14一18处毛片| 亚洲国产精品一区二区第四页av| 国产成人免费视频一区| 五月激情丁香网| 久久久久久久亚洲精品| 国产一区二区三区电影在线观看 | 亚洲成a人片综合在线| 国产黄色在线播放| 国产精品久久久对白| 美女久久久精品| 日韩精品久久久久久久| 精品国产一区二区三区久久狼黑人 | 日韩在线电影一区| 成人av在线播放网址|