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

MySQL線程池內(nèi)幕

數(shù)據(jù)庫 MySQL
在MySQL中,線程池指的是用來管理處理MySQL客戶端連接任務(wù)的線程的一種機(jī)制,我廠用的percona版本已經(jīng)是集成了線程池,只需要通過如下參數(shù)開啟即可。本文在介紹MySQL線程池核心參數(shù)的基礎(chǔ)之上對線程池內(nèi)部實(shí)現(xiàn)機(jī)制進(jìn)行進(jìn)一步介紹。

摘要

在MySQL中,線程池指的是用來管理處理MySQL客戶端連接任務(wù)的線程的一種機(jī)制,我廠用的percona版本已經(jīng)是集成了線程池,只需要通過如下參數(shù)開啟即可。

  1. thread_handling=pool-of-threads 

本文在介紹MySQL線程池核心參數(shù)的基礎(chǔ)之上對線程池內(nèi)部實(shí)現(xiàn)機(jī)制進(jìn)行進(jìn)一步介紹。

線程池導(dǎo)讀

線程池概論

在繼續(xù)了解MySQL線程池之前,我們首先要了解為什么線程池的引入可以幫助MySQL提升性能,除了性能之外線程池還有哪些作用?如果把線程看做系統(tǒng)資源那么線程池本質(zhì)上是對系統(tǒng)資源的管理,對于操作系統(tǒng)來說線程的創(chuàng)建和銷毀是比較消耗系統(tǒng)資源的,頻繁的創(chuàng)建與銷毀線程必然給系統(tǒng)帶來不必要的資源浪費(fèi),特別是在負(fù)載高的情況下這部分開銷嚴(yán)重影響系統(tǒng)的資源使用效率從而影響系統(tǒng)的性能與吞吐量,另一方面過多的線程創(chuàng)建又會造成系統(tǒng)資源的過載消耗,同時(shí)帶來相對頻繁的線程之間上下文切換問題。系統(tǒng)資源是寶貴的,我認(rèn)為性能與資源的利用率是緊密相關(guān)的:

 

 

 

資源利用率與性能的同向性

他們往往向著一個方向發(fā)展,好的資源利用與通常可以帶來較優(yōu)的性能,線程池技術(shù)一方面可以減少線程重復(fù)創(chuàng)建與銷毀這部分開銷,從而更好地利用已經(jīng)創(chuàng)建的線程資源,另一方面也可以控制線程的創(chuàng)建與系統(tǒng)的負(fù)載,某些場景對系統(tǒng)起到了保護(hù)作用。

如何了解MySQL線程池

通過學(xué)習(xí)掌握MySQL有哪些參數(shù),并深刻理解每個參數(shù)的含義以及這些參數(shù)是如何影響MySQL的等問題是一種很好的學(xué)習(xí)MySQL線程池的一種方式,另外在了解MySQL基本實(shí)現(xiàn)原理的基礎(chǔ)之上再對MySQL線程池不足以及可以改進(jìn)的地方進(jìn)行更深層次的思考有利于更好地理解MySQL線程池技術(shù)。

線程池核心參數(shù)

MySQL線程池向用戶開放了一些參數(shù),用戶可以修改這些參數(shù)從而影響線程池的行為,下面分別介紹一下這些核心參數(shù)。

thread_pool_size

這個參數(shù)指的是線程組大小,默認(rèn)是CPU核心數(shù),線程池初始化的時(shí)候會根據(jù)這個數(shù)字來生成線程組,每個線程組初始化一個poolfd句柄。

thread_pool_stall_limit

Timer Thread迭代的時(shí)間間隔,默認(rèn)是500ms。

thread_pool_oversubscribe

用于計(jì)算線程組是否太過活躍或者太過繁忙,也即系統(tǒng)的負(fù)載程度,用于在一定場景決策新的工作線程是否被創(chuàng)建于和任務(wù)是否被處理,這個值默認(rèn)是3。

thread_pool_max_threads

允許線程池中***的線程數(shù),默認(rèn)是10000。

thread_pool_idle_timeout

工作線程***空閑時(shí)間,工作線程超過這個數(shù)還空閑的話就退出,這個值默認(rèn)是60秒。

thread_pool_high_prio_mode

這個參數(shù)可用于控制任務(wù)隊(duì)列的使用,可取三個值:

  • transactions
  • statements
  • none

當(dāng)為值為statements的時(shí)候則線程組只使用優(yōu)先隊(duì)列,當(dāng)為值為none的時(shí)候則只使用普通隊(duì)列,當(dāng)值為transactions的時(shí)候配合thread_pool_high_prio_tickets參數(shù)生效,用于控制任務(wù)被放入優(yōu)先隊(duì)列的***次數(shù)。

thread_pool_high_prio_tickets

當(dāng)thread_pool_high_prio_mode=transactions的時(shí)候每個連接的任務(wù)最多被放入優(yōu)先隊(duì)列thread_pool_high_prio_tickets次,并且每放一次遞減,直到小于等于0的時(shí)候放入普通隊(duì)列,這個值默認(rèn)是4294967295。

MySQL線程池實(shí)現(xiàn)內(nèi)幕

線程池總體架構(gòu)

與JAVA的線程池不同,JAVA線程池中是工作線程而MySQL線程池有一個線程組的概念,線程組內(nèi)部層級才是工作線程,先看看MySQL線程池的大致架構(gòu): 

 

 

 

線程池架構(gòu)

上圖大致可以看出線程池內(nèi)部的結(jié)構(gòu),線程組為我們關(guān)注的一個較大的組件,線程組內(nèi)部每個組件的相互協(xié)調(diào)構(gòu)成了線程組,每個線程組良好地工作構(gòu)成了線程池。對于線程池內(nèi)部,我認(rèn)為值得了解的內(nèi)容主要包括下面幾個方面:

  • 線程組
  • Worker線程
  • Check Stall機(jī)制
  • 任務(wù)隊(duì)列
  • Listener線程

對于上面列出的幾個方面,后文將會展開介紹。

線程組

MySQL線程池在初始化的時(shí)候根據(jù)宿主機(jī)的CPU核心數(shù)設(shè)置thread_pool_size,這也就是線程池的線程組的個數(shù)。每個線程組在初始化之后會通過底層的IO庫分配一個網(wǎng)絡(luò)特殊的句柄與之關(guān)聯(lián),IO庫可以通過這個句柄監(jiān)聽與之綁定的socket句柄就緒的IO任務(wù),線程組的結(jié)構(gòu)體定義如下:

  1. struct thread_group_t 
  2.  
  3.  
  4.   mysql_mutex_t mutex; 
  5.  
  6.   connection_queue_t queue;//低優(yōu)先級任務(wù)隊(duì)列 
  7.  
  8.   connection_queue_t high_prio_queue;//高優(yōu)先級任務(wù)隊(duì)列 
  9.  
  10.   worker_list_t waiting_threads; //代表當(dāng)前線程沒有任務(wù)的時(shí)候進(jìn)入等待隊(duì)里 
  11.  
  12.   worker_thread_t *listener;//讀取網(wǎng)絡(luò)任務(wù)線程 
  13.  
  14.   pthread_attr_t *pthread_attr; 
  15.  
  16.   int  pollfd;//特殊的句柄 
  17.  
  18.   int  thread_count;//線程組中的線程數(shù) 
  19.  
  20.   int  active_thread_count;//當(dāng)前活躍的線程 
  21.  
  22.   int  connection_count;//分配給當(dāng)前線程組的連接 
  23.  
  24.   int  waiting_thread_count;//代表的是當(dāng)前線程在執(zhí)行命令的時(shí)候處于等待狀態(tài) 
  25.  
  26.   /* Stats for the deadlock detection timer routine.*/ 
  27.  
  28.   int io_event_count;//待處理任務(wù)數(shù),從句柄中獲取 
  29.  
  30.   int queue_event_count;//從隊(duì)列移除的網(wǎng)絡(luò)任務(wù)數(shù),意味著網(wǎng)絡(luò)任務(wù)被處理   
  31.  
  32.   ulonglong last_thread_creation_time;//上一次創(chuàng)建工作線程的時(shí)候 
  33.  
  34.   int  shutdown_pipe[2]; 
  35.  
  36.   bool shutdown; 
  37.  
  38.   bool stalled; 
  39.  
  40. } MY_ALIGNED(512);  

線程池由多個線程組構(gòu)成,線程池的細(xì)節(jié)基本都在線程組內(nèi)。

worker線程

線程組內(nèi)有0個或多個線程,這里與Netty有些不同,Netty中有固定的線程用于輪訓(xùn)IO事件,工作線程只負(fù)責(zé)處理IO任務(wù),而在MySQL線程池中l(wèi)istener只是一種角色,每個線程的角色可以是listener或者是worker,工作線程為listener的時(shí)候負(fù)責(zé)從poolfd中讀取就緒IO任務(wù),處于worker角色的時(shí)候負(fù)責(zé)處理這些IO任務(wù),我們需要區(qū)分工作線程的以下幾種狀態(tài)狀態(tài):

  • 活躍狀態(tài):當(dāng)工作線程處于正在處理任務(wù)且的狀態(tài)且未被阻塞的狀態(tài),這意味著工作線程將會消耗CPU,增加系統(tǒng)的負(fù)載。如果worker線程將自己設(shè)置為listener則不算進(jìn)線程組的活躍線程狀態(tài)數(shù)。
  • 空閑狀態(tài):由于沒有任務(wù)處理而被處于的空閑狀態(tài)。
  • 等待狀態(tài):如果工作線程在執(zhí)行命令的過程中由于IO、鎖、條件、sleep等需要等待則線程池將被通知并且將這些工作線程記作等待狀態(tài)。

在線程組中,關(guān)于線程的計(jì)數(shù)有如下關(guān)系:

  1. thread_count = active_thread_count + waiting_thread_count + waiting_threads.length + listener.length 

thread_count代表線程組中的總線程數(shù),active_thread_count代表當(dāng)前正在工作且未被阻塞的線程數(shù),waiting_thread_count代表的是工作線程任務(wù)的過程中被阻塞的個數(shù),而waiting_threads代表空閑線程列表。

在MySQL線程池中,線程組中busy的線程數(shù)是active_thread_count與waiting_thread_count的總和,因?yàn)檫@些線程此時(shí)都不能處理新的任務(wù),因此被認(rèn)為是繁忙的。如果處于busy狀態(tài)的線程數(shù)大于一定值則線程組被任務(wù)是太繁忙(too many active)了,這會用于決策普通優(yōu)先級的任務(wù)是否能得到及時(shí)的處理,這個值被定義為:

  1. thread_pool_oversubscribe + 1 

默認(rèn)值也就是4。如果active_thread_count數(shù)大于等于一定值(同上算法為4),則線程組被認(rèn)為是太活躍(too busy)了,此時(shí)意味著可能過飽滿的CPU負(fù)載,這個指標(biāo)用于決策線程組是否還繼續(xù)執(zhí)行普通優(yōu)先級的任務(wù),上面的邏輯總結(jié)一句話為:

在正常工作的情況下,當(dāng)工作線程檢索任務(wù)的時(shí)候,如果線程組太活躍(too many active)則即使有任務(wù)工作線程也不會執(zhí)行,如果不是太繁忙(too busy)才會考慮高優(yōu)先級的任務(wù),對于低優(yōu)先級的任務(wù)只有當(dāng)線程組不是太繁忙(too busy)的時(shí)候才會執(zhí)行。

注意上面的條件,因此線程池對系統(tǒng)負(fù)載具有一定的保護(hù)作用,那么問題來了,如果存在一些耗時(shí)任務(wù)(如耗時(shí)查詢),會不會導(dǎo)致后來任務(wù)被延遲處理?會不會有時(shí)候覺得SQL寫得沒問題,但是卻莫名其妙的Long SQL?這就是下面要介紹的Check Stall機(jī)制。

Check Stall機(jī)制

如果后來的IO任務(wù)被前面執(zhí)行時(shí)間過長的任務(wù)影響了怎么辦?這必然會導(dǎo)致一些無辜的任務(wù)(或是一個簡單的INSERT操作,之所以舉INSERT的例子是因?yàn)镮NSERT通常很快)被影響,結(jié)果是有可能會被延遲處理。線程池中有一個Timer Thread,類似我們很多系統(tǒng)里面的Timeout Thread線程,這個線程每隔一定時(shí)間間隔就會進(jìn)行一次迭代,迭代中做的事情包括如下兩個部分:

  • 檢查線程組的負(fù)載情況進(jìn)行工作線程的喚醒與創(chuàng)建。
  • 檢查與處理超時(shí)的客戶端連接。

這里主要介紹***部分工作也就是Check Stall機(jī)制。Timer Thread周期性地檢查線程組內(nèi)的線程是否被阻塞(stall),所謂阻塞也就是新來了任務(wù)但是線程組內(nèi)沒有線程來處理。Timer Thread通過queue_event_count和IO任務(wù)隊(duì)列是否為空來判斷線程組是否為阻塞狀態(tài),每次工作線程檢索任務(wù)的時(shí)候queue_event_count都會累加,累加意味著任務(wù)被正常處理,工作線程正常工作,在每一次check_stall之后queue_event_count會被清零,因此如果在一定時(shí)間間隔(stall_limit)后的下一次迭代中,IO任務(wù)隊(duì)列不為空并且queue_event_count為空,則說明這段時(shí)間間隔內(nèi)都沒有工作線程來處理IO任務(wù)了,那么Check Stall機(jī)制會嘗試著喚醒或創(chuàng)建一個工作線程,喚醒線程的邏輯很簡單,如果waiting_threads中有空閑線程則喚醒一個空閑線程,否則需要嘗試創(chuàng)建一個工作線程,創(chuàng)建線程不一定會創(chuàng)建成功,我們看看創(chuàng)建線程的條件:

  • 如果沒有空閑線程且沒有活躍線程則立馬創(chuàng)建,這個時(shí)候可能是因?yàn)闆]有任何工作線程或者工作線程都被阻塞了,或者是存在潛在的死鎖。
  • 否則如果距離上次創(chuàng)建的時(shí)間大于一定閾值才創(chuàng)建線程,這個閾值由線程組內(nèi)的線程數(shù)決定。

閾值與線程組內(nèi)線程數(shù)的關(guān)系如下:

線程數(shù) 閾值
 < 4 0
 < 8 50 * 1000
 < 16 100 * 1000
>= 16 200 * 1000

閾值機(jī)制能夠有效的防止線程創(chuàng)建過于頻繁。這里遺留個問題,為什么閾值依賴于線程池的線程數(shù)?閾值是否能依賴于thread_pool_stall_limit的值?Check Stall機(jī)制可以被認(rèn)為一個專門的線程做專門的事情,畢竟線程組內(nèi)部邏輯也是蠻混亂的。

任務(wù)隊(duì)列

任務(wù)隊(duì)列也就是listener每次從poolfd輪訓(xùn)出來的就緒任務(wù),分為優(yōu)先任務(wù)隊(duì)列(high_prio_queue)和普通任務(wù)隊(duì)列(queue),優(yōu)先隊(duì)列中的IO任務(wù)會先被處理,然后普通隊(duì)列中的任務(wù)才能夠被處理。那么什么樣的任務(wù)會被認(rèn)為是優(yōu)先任務(wù)呢?官方列出了兩個條件:

  • 連接處于事務(wù)中。
  • 連接關(guān)聯(lián)的priority tickets值大于0。

參數(shù)priority tickets(thread_pool_high_prio_tickets)的設(shè)計(jì)是為了防止高優(yōu)先級的任務(wù)總是被處理,而一些非高優(yōu)先級的任務(wù)處于較長時(shí)間的饑餓狀態(tài),畢竟工作線程的創(chuàng)建也是有條件的,當(dāng)高優(yōu)先級的任務(wù)每一次被放入高優(yōu)先級隊(duì)列之后都會對priority tickets的值進(jìn)行減一,因此達(dá)到一定次數(shù)priority tickets的值必然會小于等于0,因此避免了***高優(yōu)先級的問題。另外隊(duì)列的使用受參數(shù)thread_pool_high_prio_mode影響,可參考對參數(shù)thread_pool_high_prio_mode介紹的部分。當(dāng)就緒IO任務(wù)被輪訓(xùn)出來放入隊(duì)列之后會對io_event_count進(jìn)行累加,當(dāng)IO任務(wù)從隊(duì)列取出處理的時(shí)候會對queue_event_coun進(jìn)行計(jì)數(shù)。

Listener線程

Listener做的事情主要是從poolfd中輪訓(xùn)與其綁定的socket句柄的就緒IO事件,事件以任務(wù)的形式被放入任務(wù)隊(duì)列并做相應(yīng)處理,如果listener讀取了一些IO任務(wù)之后,該怎么辦呢?下面基于兩個問題回答:

  • listener應(yīng)該自己處理這些任務(wù)嗎?還是將這些任務(wù)放入隊(duì)列讓工作線程處理?
  • 如果任務(wù)隊(duì)列不為空,我們需要喚醒多少個工作線程?

對于***個問題,通常我們不想經(jīng)常改變listener的等待和喚醒的狀態(tài),因?yàn)閘istener剛被喚醒,因此我們更傾向于讓listener利用它的時(shí)間片去做一些工作。如果listener不自己處理工作,這意味著其他線程要被喚醒去做這個工作,這顯然不是很好。而讓listener去做任務(wù)潛在的問題是線程組有可能一段時(shí)間網(wǎng)絡(luò)任務(wù)無法及時(shí)被處理,這不是主要的問題,因?yàn)閟tall將被Timer Thread檢查。然而總是依賴Timer Thread也是不好的,因?yàn)閟tall_limit有可能被設(shè)置比較長的時(shí)間。我們使用下面的策略,如果任務(wù)隊(duì)列不空,我們?nèi)蝿?wù)網(wǎng)絡(luò)任務(wù)此時(shí)可能比較多,讓其他線程來處理任務(wù),否則listener自己處理任務(wù)。

對于第二個問題,我們通常為每一個線程組保持一個活動線程(活動線程包括正在做任務(wù)的線程),因此喚醒一個工作線程的條件為當(dāng)前活躍前程數(shù)為0,如果沒有線程被喚醒,在只能依靠Timer Thread來檢查stall并進(jìn)行喚醒了。

上面可以看出,如果任務(wù)隊(duì)列不為空,也不一定會有線程來及時(shí)處理任務(wù),這就導(dǎo)致了耗時(shí)任務(wù)影響了后來任務(wù)的執(zhí)行,未來可能通過摒棄每個線程組只保持一個活躍線程的規(guī)則來避免網(wǎng)絡(luò)任務(wù)長時(shí)間得不到處理。

總結(jié)

使用MySQL線程池可以提高數(shù)據(jù)庫的性能,設(shè)計(jì)者對線程池的創(chuàng)建與任務(wù)的處理機(jī)制進(jìn)行精心的設(shè)計(jì),然而同時(shí)也帶來了一些潛在的問題,最明顯的就是耗時(shí)任務(wù)對其他任務(wù)調(diào)度的影響,盡管有不足之處但是使用者仍然可以通過掌握線程池的內(nèi)部細(xì)節(jié)以及深刻了解開放參數(shù)的含義,通過參數(shù)的調(diào)整來在一定程度上對MySQL線程池的使用進(jìn)行優(yōu)化。學(xué)以致用,到這里,您是否能夠利用上面介紹的一些知識來解決一些實(shí)際問題了呢? 

責(zé)任編輯:龐桂玉 來源: 數(shù)據(jù)庫開發(fā)
相關(guān)推薦

2025-07-04 07:59:55

2021-06-02 11:25:18

線程池Java代碼

2025-07-29 09:14:33

2020-07-29 14:15:04

JavaJvm算法

2016-12-14 14:29:30

Java動態(tài)綁定機(jī)制

2010-08-06 13:59:00

Flex和Html交互

2010-05-28 19:15:53

2025-03-07 00:00:05

黑客AI人工智能

2009-06-12 15:26:13

Java培訓(xùn)

2009-05-26 14:53:50

2021-11-02 06:58:53

架構(gòu)線程池參數(shù)

2020-05-08 16:55:48

Java虛擬機(jī)JVM

2014-11-10 16:56:40

2012-09-29 09:20:26

Windows Ser

2011-08-04 17:47:03

iPhone 雙緩沖 視圖

2012-04-13 14:39:51

梁念堅(jiān)

2010-07-30 09:42:37

Flex播放器

2014-11-03 14:15:54

2009-02-06 16:23:30

UAC漏洞提權(quán)

2009-03-27 17:31:50

LinuxBurningTheS微軟
點(diǎn)贊
收藏

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

久久艹在线视频| 欧美日韩另类一区| 免费亚洲一区二区| 国产又粗又大又爽视频| 亚洲福利免费| 一区二区三区无码高清视频| 中文字幕一区二区三区四| a'aaa级片在线观看| 国产女人水真多18毛片18精品视频| 成人淫片在线看| 精品91久久久| 亚洲人体av| 亚洲精品日韩丝袜精品| 激情成人在线观看| 91精品论坛| 亚洲高清在线精品| 中文字幕一区二区三区四区五区| 日韩中文字幕综合| 精品中文字幕一区二区小辣椒 | x88av在线| 91夜夜蜜桃臀一区二区三区| 欧美色男人天堂| 熟女少妇在线视频播放| av在线播放国产| 日本一区二区三区四区在线视频 | 免费av一区| 精品国产一区久久| 91看片破解版| 99蜜月精品久久91| 婷婷成人激情在线网| 日韩视频一二三| 成人免费在线视频网| k8久久久一区二区三区 | 日韩一区有码在线| 日韩.欧美.亚洲| 人人九九精品| www.av精品| 国产亚洲自拍偷拍| 亚洲伦理在线观看| 国产成人自拍高清视频在线免费播放| 国产日韩在线精品av| 国产真人无遮挡作爱免费视频| 亚洲精品社区| 久久久久亚洲精品国产| 欧美人妻精品一区二区免费看| 日韩精品久久久久久久电影99爱| 亚洲丝袜一区在线| 五月天综合视频| 精品国产一区二区三区av片| 亚洲老头同性xxxxx| 欧美一区二区免费在线观看| 天堂久久av| 欧美mv和日韩mv国产网站| 在线观看免费视频污| 成人国产精品一区二区网站| 91精品国产福利| 波多野结衣电影免费观看| 成人自拍视频| 日韩欧美一区在线| 亚洲图片欧美另类| 奇米777国产一区国产二区| 亚洲电影在线观看| 激情综合丁香五月| 啪啪亚洲精品| 日韩中文字幕精品| 欧美日韩免费做爰视频| 一本一道久久a久久精品蜜桃 | 亚洲黄色在线观看| 韩国无码一区二区三区精品| 国产一区二区三区日韩精品| 少妇激情综合网| 日韩视频中文字幕在线观看| 亚洲成色精品| 国产999在线观看| 中文字幕一区2区3区| 国产精品综合一区二区| 成人情视频高清免费观看电影| 黄片毛片在线看| 久久香蕉国产线看观看99| 色综合久久久久久久久五月| 亚洲成a人v欧美综合天堂麻豆| 亚洲免费av在线| 免费av手机在线观看| 欧美成人影院| 欧美一区二区三区白人| 特级西西人体4444xxxx| 国产欧美日韩精品一区二区免费| www日韩中文字幕在线看| 久草成人在线视频| 久久高清一区| 99c视频在线| 欧美日本韩国一区二区| 亚洲日本电影在线| 91猫先生在线| 亚洲成人1区| 日韩大陆毛片av| 二区三区四区视频| 午夜影院日韩| 亚洲综合日韩在线| 国产综合在线观看| 亚洲图片一区二区| 中文字幕66页| 亚洲另类av| 欧美精品在线第一页| 久久国产乱子伦精品| 国产精品综合在线视频| 日韩欧美一区二区三区四区| 毛片网站在线看| 欧美精品色一区二区三区| 亚洲av网址在线| 在线中文一区| 国产精品国产三级国产aⅴ浪潮| 成人h动漫精品一区二区无码| 国产日本一区二区| 青青草国产免费| 日韩av懂色| 亚洲视频专区在线| 久久亚洲天堂网| 国产凹凸在线观看一区二区| 亚洲精品一区二区毛豆| 麻豆免费版在线观看| 日韩欧美精品在线视频| 快灬快灬一下爽蜜桃在线观看| 亚洲精品综合| 成人在线看片| 91网址在线观看| 欧美巨大另类极品videosbest| 少妇真人直播免费视频| 欧美日韩影院| 亚洲一区二区三区成人在线视频精品| www在线免费观看| 色综合久久中文综合久久97| 亚洲视频在线播放免费| 午夜精品偷拍| 亚洲自拍偷拍网址| 成人免费高清| 91精品福利在线一区二区三区 | 成人情趣视频| 国产精品扒开腿做爽爽爽男男| 三级毛片在线免费看| 香蕉加勒比综合久久| 日本性生活一级片| 亚洲黄色高清| 国产视频在线观看一区| 成年女人在线看片| 亚洲电影免费观看| 日韩精品久久久久久久酒店| 成人av在线网站| 欧美亚洲日本一区二区三区 | 亚洲黄色在线看| 日本网站在线免费观看| av网站免费线看精品| 999在线观看视频| 久久中文资源| 奇米四色中文综合久久| 国产午夜精品一区理论片| 色综合色狠狠天天综合色| 国产小视频自拍| 毛片av一区二区三区| 中国成人在线视频| 精品久久国产一区| 久久久亚洲欧洲日产国码aⅴ| 亚洲国产成人一区二区| 亚洲成人午夜影院| 少妇真人直播免费视频| 蜜桃精品在线观看| 日韩亚洲欧美一区二区| 久久99国产精品久久99大师| 2019中文字幕在线观看| 国产三级在线看| 正在播放一区二区| 日本高清www免费视频| 久久午夜羞羞影院免费观看| 一路向西2在线观看| 伊人久久大香线蕉综合四虎小说| 风间由美一区二区三区| 亚洲欧美韩国| 日韩在线观看av| 国产小视频一区| 在线观看亚洲精品视频| 2025国产精品自拍| 91亚洲精品久久久蜜桃| 中文字幕成人在线视频| 欧美日韩精选| 欧美日韩在线播放一区二区| 亚洲色图图片| 97超级碰碰碰久久久| 日本精品一区二区三区在线播放| 精品久久人人做人人爽| 高潮毛片又色又爽免费| 亚洲乱码精品一二三四区日韩在线| 成人午夜精品无码区| 麻豆精品一区二区av白丝在线| 黄色片免费在线观看视频| 7m精品国产导航在线| 国产精品高清在线| 黄网av在线| 上原亚衣av一区二区三区| 人人妻人人澡人人爽久久av| 欧美主播一区二区三区美女| 真实国产乱子伦对白在线| 久久久国产午夜精品| 香蕉在线观看视频| 另类小说欧美激情| 91猫先生在线| 海角社区69精品视频| 亚洲精品中字| 亚洲理论电影| 国产日韩精品推荐| av日韩久久| 国产精品久久久久久久av电影| 图片区小说区亚洲| 色小说视频一区| 你懂的在线免费观看| 日韩视频国产视频| 91在线观看喷潮| 欧洲一区二区av| 中文字幕在线观看视频网站| 夜色激情一区二区| 夫妻性生活毛片| 欧美激情一区二区三区四区| 日本免费福利视频| 成人精品视频一区二区三区尤物| 久久6免费视频| 秋霞成人午夜伦在线观看| 久久久999视频| 在线视频观看日韩| 精品人妻人人做人人爽| 亚洲国产精品成人| 亚洲一一在线| 欧美日韩在线观看视频小说| 欧美精品亚洲精品| 欧美人与动xxxxz0oz| 国产精品一区视频| 草莓视频一区二区三区| 91gao视频| 精品视频一区二区三区| 成人字幕网zmw| 亚洲天堂网站| 亚洲xxxx18| av一级久久| 3d蒂法精品啪啪一区二区免费| 二区三区精品| 91超碰rencao97精品| 亚洲三级电影| 91成人免费视频| 一区二区网站| 国产精品一区二区三区观看| 成人高潮视频| 精品午夜一区二区| 免费欧美视频| 视频一区视频二区视频| 欧美jizz| 久久观看最新视频| 伊人精品视频| 99re在线视频免费观看| 青青草一区二区三区| www.精品在线| 国产真实乱子伦精品视频| 97超碰免费在线观看| 丁香激情综合国产| aa片在线观看视频在线播放| 久久久欧美精品sm网站| 国产99在线 | 亚洲| 国产精品传媒入口麻豆| 欧美三级小视频| 精品久久久一区| 在线免费观看视频网站| 日韩一区二区三区四区| 五月天福利视频| 国产一区二区三区在线视频| 免费网站看v片在线a| 欧美激情综合亚洲一二区| 日本在线啊啊| 国产欧美日韩免费| 99精品在免费线中文字幕网站一区 | 中文字幕资源网| 91精品在线观看入口| 男人天堂av网| 国产一区二区三区视频在线观看| 黄色在线免费网站| 午夜免费在线观看精品视频| 电影亚洲一区| 成人做爰66片免费看网站| 免费一区二区三区视频导航| 国产又爽又黄ai换脸| 夜夜精品视频| 国产欧美激情视频| 99久久er热在这里只有精品66| 亚洲ⅴ国产v天堂a无码二区| 一区二区三区在线观看国产| 波多野结衣啪啪| 欧美一级在线视频| 国产污视频在线| 欧美精品videossex性护士| 日韩制服诱惑| 国产麻豆日韩| 五月精品视频| 91av在线免费播放| 国产成都精品91一区二区三| a天堂中文字幕| 午夜免费久久看| 97精品久久人人爽人人爽| 亚洲精品午夜精品| 欧美videos另类精品| 国产欧美精品一区二区| 免费黄色成人| 成人午夜精品久久久久久久蜜臀| 麻豆成人免费电影| 中中文字幕av在线| 精品视频999| 天堂网2014av| 欧美精品制服第一页| h1515四虎成人| 久久国产精品亚洲va麻豆| 在线成人超碰| 成人免费在线观看视频网站| 99久久国产综合精品色伊| 国产黄色的视频| 欧美日韩情趣电影| 免费在线观看污视频| 韩国三级电影久久久久久| 国产精品日本一区二区三区在线 | 牲欧美videos精品| 日韩a级黄色片| 精品一区在线看| 中字幕一区二区三区乱码| 五月婷婷综合在线| 国产黄频在线观看| 久久综合久久88| 日韩色性视频| 一区二区三区三区在线| 日本系列欧美系列| 手机毛片在线观看| 欧美性猛交xxxx黑人交| 国产黄色片在线播放| 欧美做受高潮1| 你懂的在线观看一区二区| 99er在线视频| 成人性生交大片| 精品午夜福利在线观看| 日韩欧美123| 国产精品186在线观看在线播放| 成人高清在线观看| 国产主播一区| 一边摸一边做爽的视频17国产| 亚洲午夜精品一区二区三区他趣| 亚洲精品久久久久久久久久| 久久6免费高清热精品| 一区二区三区高清在线观看| 亚洲乱码日产精品bd在线观看| 国产99精品视频| 国产精品成人aaaa在线| 日韩成人网免费视频| 久久青青视频| 亚洲蜜桃av| 国内精品免费**视频| 欧美日韩色视频| 日韩三级在线免费观看| 日韩伦理电影网站| 精品国产乱码久久久久软件 | 精品久久久久久中文字幕| 日本精品久久久久| 欧美一级片久久久久久久| 精品国产一区二区三区四区| 日本国产一级片| 夜夜精品浪潮av一区二区三区| 色偷偷在线观看| 日韩免费在线看| 午夜精品毛片| 色哟哟无码精品一区二区三区| 欧美日韩性视频| 91官网在线| 99热在线国产| 美日韩精品视频| 成年人网站在线观看视频| 日韩精品一区二区三区在线| 热色播在线视频| 亚洲精品在线视频观看| 国产99久久久国产精品| 亚洲国产精品无码久久久| 久久久精品日本| 任你躁在线精品免费| 性chinese极品按摩| 亚洲综合成人在线| 国产黄在线看| 亚洲在线第一页| 免费亚洲婷婷| 四虎精品免费视频| 亚洲欧美另类自拍| 精品国产18久久久久久二百| 黄色动漫网站入口| 亚洲图片欧美激情| 免费在线稳定资源站| 91pron在线| 日本亚洲三级在线| 91久久国产视频| 久久影视电视剧免费网站| 日韩大片在线免费观看| aaaaaaaa毛片|