日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

swoole 连接池php fpm,【转】swoole4实现数据库连接池

發布時間:2023/12/16 php 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 swoole 连接池php fpm,【转】swoole4实现数据库连接池 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

在寫這篇文章之前,看了好幾篇實現連接池的文章,都是寫的很不好的。擺明忽略了連接池的很多特性,很多都不具有抗高并發和連接復用。所以自己覺得有必須把最近幾天,實現一個比較完整的php數據庫連接池的點滴記錄下來,望能幫助各位,感激者望多點贊和打賞。

一、數據庫連接池基本概念

所謂的數據庫連接池,一般指的就是程序和數據庫保持一定數量的數據庫連接不斷開,并且各請求的連接可以相互復用,減少重復新建數據庫連接的消耗和避免在高并發的情況下出現數據庫max connections等錯誤。自己總結了一下,如果要實現一個數據庫連接池,一般有幾個特點:

連接復用,不同的請求連接,可以放回池中,等待下個請求發分配和調用

連接數量一般維持min-max的最大最少值之間

對于空閑連接的回收

可以抗一定程度的高并發,也就是說當一次并發請求完池中所有的連接時,獲取不到連接的請求可等待其他連接的釋放

總結幾個特性后,一個基本連接池,大致要實現下圖功能:

創建連接:連接池啟動后,初始化一定的空閑連接,指定為最少的連接min。當連接池為空,不夠用時,創建新的連接放到池里,但不能超過指定的最大連接max數量。

連接釋放:每次使用完連接,一定要調用釋放方法,把連接放回池中,給其他程序或請求使用。

連接分配:連接池中用pop和push的方式對等入隊和出隊分配與回收。能實現阻塞分配,也就是在池空并且已創建數量大于max,阻塞一定時間等待其他請求的連接釋放,超時則返回null。

連接管理:對連接池中的連接,定時檢活和釋放空閑連接等

二、Fpm+數據庫長連接的實現

利用fpm實現:例如你要實例一個100連接數的池,開啟100個空閑fpm,然后每個fpm的連接都是數據庫長連接。一般pm.max_spare_servers = 8這個配置項就是維持連接池的空閑數量,然后pm.max_children = 50就是最大的連接數量。和fpm的進程數量一致。

三、基于swoole的實現

swoole簡單介紹(更多參閱swoole官網)

swoole是一個PHP實現異步網絡通信的引擎或者擴展,其中實現了很多傳統PHP-fpm沒有的東西,例如異步的客戶端,異步Io,常駐內存,協程等等,一個個優秀的擴展,其中異步和協程等概念能應用于高并發場景。缺點是文檔和入門的門檻都比較高,需要排坑。附上swoole的運行流程和進程結構圖:

運行流程圖

進程/線程架構圖

基于swoole現實時的注意事項

首先,為了減少大家對之后運行示例代碼產生不必要的天坑,先把注意事項和場景問題放前面:

1、程序中使用了協程的通信管道channel(與go的chan差不多的),其中swoole2是不支持chan->pop($timeout)中timeout超時等待的,所以必須用swoole4版本

3、筆者使用的環境為:PHP 7.1.18和swoole4作為此次開發的環境

基于swoole現實連接池的方法

首先,此次利用swoole實現連接池,運用到swoole以下技術或者概念

1、連接變量池,這里可以看做一個數組或者隊列,利用swoole全局變量的常駐內存特性,只要變量沒主動unset掉,數組或隊列中的連接對象可以一直保持,不釋放。主要參考:https://wiki.swoole.com/wiki/page/p-zend_mm.html

2、協程。協程是純用戶狀態的線程,通過協作的方式而不是搶占的方式來切換。首先此次的連接池兩處用到協程:

一個是mysql的協程客戶端,為什么要用協程客戶端,因為如果是用同步客戶端PDO,在一個進程處理內,就算有幾百個連接池,swoole worker進程中用普通的PDO方式,隨便并發多少個請求,每一個請求都只能等上一個請求執行完畢,woker才處理下一個請求,這里就算阻塞了。為了讓一個worker支持阻塞切換出cpu去處理其他請求,所以要用到協程的協助切換,或者異步客戶端也可以,但是異步客戶端使用起來嵌套太多,很不方便。swoole協程可以無感知的用同步的代碼編寫方式達到異步IO的效果和性能。

第二個是底層實現了協程切換和調度的channel,以下詳述什么是channel

3、Coroutine/channel通道,類似于go語言的chan,支持多生產者協程和多消費者協程。底層自動實現了協程的切換和調度。高并發時,容易出連接池為空時,如果用一般的array或者splqueue()作為介質存儲連接對象變量,不能產生阻塞等待其他請求釋放的效果,也就是說只能直接返回null.。所以這里用了一個swoole4協程中很牛逼的channel通過管道作為存儲介質,它的出隊方法pop($timeout)可以指定阻塞等待指定時間后返回。注意,是swoole2是沒有超時timeout的參數,不適用此場景。在go語言中,如果chan等待或者push了沒有消費或者生產一對一的情況,是會發生死鎖。所以swoole4的timeout應該是為了避免無限等待為空channel情況而產生。主要參考:

channel切換的例子:

use \Swoole\Coroutine\Channel;

$chan = new Channel();

go(function () use ($chan) {

echo "我是第一個協程,等待3秒內有push就執行返回" . PHP_EOL;

$p = $chan->pop(2);#1

echo "pop返回結果" . PHP_EOL;

var_dump($p);

});

go(function () use ($chan) {

co::sleep(1);#2

$chan->push(1);

});

echo "main" . PHP_EOL;

#1處代碼會首先執行,然后遇到pop(),因為channel還是空,會等待2s。此時協程會讓出cpu,跳到第二個協程執行,然后#2出睡眠1秒,push變量1進去channel后返回#1處繼續執行,成功取車通過中剛push的值1.運行結果為:

如果把#2處的睡眠時間換成大于pop()的等待時間,結果是:

根據這些特性最終實現連接池的抽象封裝類為:

/**

* 連接池封裝.

* User: user

* Date: 2018/9/1

* Time: 13:36

*/

use Swoole\Coroutine\Channel;

abstract class AbstractPool

{

private $min;//最少連接數

private $max;//最大連接數

private $count;//當前連接數

private $connections;//連接池組

protected $spareTime;//用于空閑連接回收判斷

//數據庫配置

protected $dbConfig = array(

'host' => '10.0.2.2',

'port' => 3306,

'user' => 'root',

'password' => 'root',

'database' => 'test',

'charset' => 'utf8',

'timeout' => 2,

);

private $inited = false;

protected abstract function createDb();

public function __construct()

{

$this->min = 10;

$this->max = 100;

$this->spareTime = 10 * 3600;

$this->connections = new Channel($this->max + 1);

}

protected function createObject()

{

$obj = null;

$db = $this->createDb();

if ($db) {

$obj = [

'last_used_time' => time(),

'db' => $db,

];

}

return $obj;

}

/**

* 初始換最小數量連接池

* @return $this|null

*/

public function init()

{

if ($this->inited) {

return null;

}

for ($i = 0; $i < $this->min; $i++) {

$obj = $this->createObject();

$this->count++;

$this->connections->push($obj);

}

return $this;

}

public function getConnection($timeOut = 3)

{

$obj = null;

if ($this->connections->isEmpty()) {

if ($this->count < $this->max) {//連接數沒達到最大,新建連接入池

$this->count++;

$obj = $this->createObject();

} else {

$obj = $this->connections->pop($timeOut);//timeout為出隊的最大的等待時間

}

} else {

$obj = $this->connections->pop($timeOut);

}

return $obj;

}

public function free($obj)

{

if ($obj) {

$this->connections->push($obj);

}

}

/**

* 處理空閑連接

*/

public function gcSpareObject()

{

//大約2分鐘檢測一次連接

swoole_timer_tick(120000, function () {

$list = [];

/*echo "開始檢測回收空閑鏈接" . $this->connections->length() . PHP_EOL;*/

if ($this->connections->length() < intval($this->max * 0.5)) {

echo "請求連接數還比較多,暫不回收空閑連接\n";

}#1

while (true) {

if (!$this->connections->isEmpty()) {

$obj = $this->connections->pop(0.001);

$last_used_time = $obj['last_used_time'];

if ($this->count > $this->min && (time() - $last_used_time > $this->spareTime)) {//回收

$this->count--;

} else {

array_push($list, $obj);

}

} else {

break;

}

}

foreach ($list as $item) {

$this->connections->push($item);

}

unset($list);

});

}

}

同步PDO客戶端下實現

/**

* 數據庫連接池PDO方式

* User: user

* Date: 2018/9/8

* Time: 11:30

*/

require "AbstractPool.php";

class MysqlPoolPdo extends AbstractPool

{

protected $dbConfig = array(

'host' => 'mysql:host=10.0.2.2:3306;dbname=test',

'port' => 3306,

'user' => 'root',

'password' => 'root',

'database' => 'test',

'charset' => 'utf8',

'timeout' => 2,

);

public static $instance;

public static function getInstance()

{

if (is_null(self::$instance)) {

self::$instance = new MysqlPoolPdo();

}

return self::$instance;

}

protected function createDb()

{

return new PDO($this->dbConfig['host'], $this->dbConfig['user'], $this->dbConfig['password']);

}

}

$httpServer = new swoole_http_server('0.0.0.0', 9501);

$httpServer->set(

['worker_num' => 1]

);

$httpServer->on("WorkerStart", function () {

MysqlPoolPdo::getInstance()->init();

});

$httpServer->on("request", function ($request, $response) {

$db = null;

$obj = MysqlPoolPdo::getInstance()->getConnection();

if (!empty($obj)) {

$db = $obj ? $obj['db'] : null;

}

if ($db) {

$db->query("select sleep(2)");

$ret = $db->query("select * from guestbook limit 1");

MysqlPoolPdo::getInstance()->free($obj);

$response->end(json_encode($ret));

}

});

$httpServer->start();

代碼調用過程詳解:

1、server啟動時,調用init()方法初始化最少數量(min指定)的連接對象,放進類型為channelle的connections對象中。在init中循環調用中,依賴了createObject()返回連接對象,而createObject()

中是調用了本來實現的抽象方法,初始化返回一個PDO db連接。所以此時,連接池connections中有min個對象。

2、server監聽用戶請求,當接收發請求時,調用連接數的getConnection()方法從connections通道中pop()一個對象。此時如果并發了10個請求,server因為配置了1個worker,所以再pop到一個對象返回時,遇到sleep()的查詢,因為用的連接對象是pdo的查詢,此時的woker進程只能等待,完成后才能進入下一個請求。因此,池中的其余連接其實是多余的,同步客戶端的請求速度只能和woker的數量有關。

3、查詢結束后,調用free()方法把連接對象放回connections池中。

ab -c 10 -n 10運行的結果,單個worker處理,select sleep(2) 查詢睡眠2s,同步客戶端方式總共運行時間為20s以上,而且mysql的連接始終維持在一條。結果如下:

協程客戶端Coroutine\MySQL方式的調用

/**

* 數據庫連接池協程方式

* User: user

* Date: 2018/9/8

* Time: 11:30

*/

require "AbstractPool.php";

class MysqlPoolCoroutine extends AbstractPool

{

protected $dbConfig = array(

'host' => '10.0.2.2',

'port' => 3306,

'user' => 'root',

'password' => 'root',

'database' => 'test',

'charset' => 'utf8',

'timeout' => 10,

);

public static $instance;

public static function getInstance()

{

if (is_null(self::$instance)) {

self::$instance = new MysqlPoolCoroutine();

}

return self::$instance;

}

protected function createDb()

{

$db = new Swoole\Coroutine\Mysql();

$db->connect(

$this->dbConfig

);

return $db;

}

}

$httpServer = new swoole_http_server('0.0.0.0', 9501);

$httpServer->set(

['worker_num' => 1]

);

$httpServer->on("WorkerStart", function () {

//MysqlPoolCoroutine::getInstance()->init()->gcSpareObject();

MysqlPoolCoroutine::getInstance()->init();

});

$httpServer->on("request", function ($request, $response) {

$db = null;

$obj = MysqlPoolCoroutine::getInstance()->getConnection();

if (!empty($obj)) {

$db = $obj ? $obj['db'] : null;

}

if ($db) {

$db->query("select sleep(2)");

$ret = $db->query("select * from guestbook limit 1");

MysqlPoolCoroutine::getInstance()->free($obj);

$response->end(json_encode($ret));

}

});

$httpServer->start();

代碼調用過程詳解

1、同樣的,協程客戶端方式下的調用,也是實現了之前封裝好的連接池類AbstractPool.php。只是createDb()的抽象方法用了swoole內置的協程客戶端去實現。

2、server啟動后,初始化都和同步一樣。不一樣的在獲取連接對象的時候,此時如果并發了10個請求,同樣是配置了1個worker進程在處理,但是在第一請求到達,pop出池中的一個連接對象,執行到query()方法,遇上sleep阻塞時,此時,woker進程不是在等待select的完成,而是切換到另外的協程去處理下一個請求。完成后同樣釋放對象到池中。當中有重點解釋的代碼段中getConnection()中。

public function getConnection($timeOut = 3)

{

$obj = null;

if ($this->connections->isEmpty()) {

if ($this->count < $this->max) {//連接數沒達到最大,新建連接入池

$this->count++;

$obj = $this->createObject();#1

} else {

$obj = $this->connections->pop($timeOut);#2

}

} else {

$obj = $this->connections->pop($timeOut);#3

}

return $obj;

}

當調用到getConnection()時,如果此時由于大量并發請求過多,連接池connections為空,而沒達到最大連接max數量時時,代碼運行到#1處,調用了createObject(),新建連接返回;但如果連接池connections為空,而到達了最大連接數max時,代碼運行到了#2處,也就是$this->connections->pop($timeOut),此時會阻塞$timeOut的時間,如果期間有鏈接釋放了,會成功獲取到,然后協程返回。超時沒獲取到,則返回false。

3、最后說一下協程Mysql客戶端一項重要配置,那就是代碼里$dbConfig中timeout值的配置。這個配置是意思是最長的查詢等待時間。可以看一個例子說明下:

go(function () {

$start = microtime(true);

$db = new Swoole\Coroutine\MySQL();

$db->connect([

'host' => '10.0.2.2',

'port' => 3306,

'user' => 'root',

'password' => 'root',

'database' => 'test',

'timeout' => 4#1

]);

$db->query("select sleep(5)");

echo "我是第一個sleep五秒之后\n";

$ret = $db->query("select user from guestbook limit 1");#2

var_dump($ret);

$use = microtime(true) - $start;

echo "協程mysql輸出用時:" . $use . PHP_EOL;

});

#1處代碼,如果timeout配了4s查詢超時,而第一條查詢select sleep(5)阻塞后,協程切換到下一條sql的執行,其實$db并不能執行成功,因為用一個連接,同一個協程中,其實執行是同步的,所以此時第二條查詢在等待4s超時后,沒獲取到db的連接執行,就會執行失敗。而如果第一條查詢執行的時間少于這個timeout,那么會執行查詢成功。猜猜上面執行用時多少?結果如下:

如果把timeout換成6s呢,結果如下:

所以要注意的是,協程的客戶端內執行其實是同步的,不要理解為異步,它只是遇到IO阻塞時能讓出執行權,切換到其他協程而已,不能和異步混淆。

ab -c 10 -n 10運行的結果,單個worker處理,select sleep(2) 查詢睡眠2s,協程客戶端方式總共運行時間為2s多。結果如下:

數據庫此時的連接數為10條(show full PROCESSLIST):

再嘗試 ab -c 200 -n 1000 http://127.0.0.1:9501/,200多個并發的處理,時間是20多秒,mysql連接數達到指定的最大值100個。結果如下:

四、后言

現在連接池基本實現了高并發時的連接分配和控制,但是還有一些細節要處理,例如:

并發時,建立了max個池對象,不能一直在池中維護這么多,要在請求空閑時,把連接池的數量維持在一個空閑值內。這里是簡單做了gcSpareObject()的方法實現空閑處理。直接在初始化woker的時候調用:MysqlPoolCoroutine::getInstance()->init()->gcSpareObject();就會定時檢測回收。問題是如何判斷程序比較空閑,值得再去優化。

定時檢測連接時候是活的,剔除死鏈

假如程序忘記調用free()釋放對象到池,是否有更好方法避免這種情況?

對于以上,希望各大神看到后,能提供不錯的意見!

總結

以上是生活随笔為你收集整理的swoole 连接池php fpm,【转】swoole4实现数据库连接池的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

亚洲综合婷婷 | 国产手机视频精品 | 欧洲成人av | 超碰免费97 | 狠狠躁日日躁狂躁夜夜躁 | 伊在线视频 | 亚洲区另类春色综合小说 | www.久久爱.cn | 丁香婷婷综合五月 | 国产区网址 | 亚洲美女在线一区 | 久久久网页 | 日韩理论视频 | 182午夜在线观看 | 国产精品欧美久久久久无广告 | 日韩激情久久 | 久草网视频在线观看 | 亚洲欧美视频一区二区三区 | 国产成人久久av免费高清密臂 | 国内精品久久久久国产 | 日本中文字幕在线电影 | 久久精精品视频 | 夜夜操天天干 | 国内精品国产三级国产aⅴ久 | 日韩欧美精品在线视频 | 成人蜜桃 | 99久久超碰中文字幕伊人 | 日韩中文字幕免费视频 | 97人人模人人爽人人喊中文字 | 毛片一级免费一级 | 天天干天天干天天干天天干天天干天天干 | 黄色亚洲免费 | 天天干夜夜干 | 97视频在线看 | 在线观看91久久久久久 | 久草久草久草久草 | 在线观看免费国产小视频 | 欧美va天堂va视频va在线 | 久久高清av| 91成人网页版 | 国产在线视频在线观看 | 国产精品免费久久久久久 | 精品在线视频一区二区三区 | 成人av资源 | 精品国产美女 | 国产vs久久 | 黄色网在线播放 | 91人人射 | av超碰在线观看 | 免费看黄网站在线 | 在线观看国产一区 | 看毛片的网址 | 精品国产一区二区三区久久久蜜臀 | 三级a毛片| 99免费在线播放99久久免费 | a在线播放| 亚洲国产精品一区二区久久hs | 久久久91精品国产 | 欧美日韩国产欧美 | 五月天丁香视频 | 91毛片视频| 91九色porny在线 | 成人久久精品视频 | 久久久久久久久久久福利 | 中文字幕日本电影 | 久久香蕉一区 | 日本韩国中文字幕 | 欧美成人日韩 | 在线黄色国产电影 | 99久久99久久精品国产片 | 日韩免费一区二区 | 亚洲高清视频一区二区三区 | 麻豆影视在线播放 | 久久精品人人做人人综合老师 | 18女毛片 | 欧美福利视频一区 | 蜜桃视频在线视频 | 免费在线91 | 日韩欧美视频在线免费观看 | 狠狠色香婷婷久久亚洲精品 | 国产日韩中文字幕在线 | 91九色porny在线 | 99热 精品在线 | 国产三级在线播放 | 婷婷丁香激情综合 | 91视频 - 114av | 国产麻豆视频在线观看 | 日韩精品免费在线播放 | www激情com| 婷婷狠狠操 | 欧美久久久久久久久久久 | 国产一区二区三区久久久 | 一级精品视频在线观看宜春院 | av日韩中文 | 亚洲精品视频免费观看 | 久久成年人网站 | 婷婷在线不卡 | 久草国产精品 | 欧美一级欧美一级 | 97视频中文字幕 | 黄色电影小说 | 午夜久久福利视频 | 波多野结衣在线视频免费观看 | 日韩网站在线观看 | av中文天堂 | 99热在线国产| 国产在线更新 | 在线日韩中文字幕 | 欧美日韩中文字幕综合视频 | 中文在线字幕免费观看 | 久久麻豆视频 | 在线观看亚洲精品 | 久久免费视频这里只有精品 | 国产精品第一页在线 | 欧美日本中文字幕 | 国产精品久久久久亚洲影视 | 99精品一级欧美片免费播放 | 色天天综合久久久久综合片 | 久草精品视频在线播放 | 在线电影a| 国产成人精品亚洲a | 日韩网站在线播放 | 国产三级国产精品国产专区50 | 超碰在线cao | 久久婷婷国产色一区二区三区 | 国产精品videossex国产高清 | 中文av在线天堂 | 婷婷精品国产一区二区三区日韩 | 亚洲综合狠狠干 | 免费网站色 | 国产精品私拍 | 狠狠狠色丁香综合久久天下网 | 国产成人精品不卡 | 亚洲国产影院 | 午夜精品久久 | 六月激情久久 | av大全在线 | 日日夜夜人人天天 | 91亚洲精品久久久久图片蜜桃 | 日韩在线三级 | 在线视频观看亚洲 | 中文字幕a∨在线乱码免费看 | 中日韩在线视频 | 伊人激情网 | 丝袜美女在线 | 91久久久久久国产精品 | 贫乳av女优大全 | 欧美日韩在线精品 | 久久免费国产电影 | 日韩av高清在线观看 | 久久精品亚洲国产 | 色先锋av资源中文字幕 | 欧美成人精品三级在线观看播放 | 日韩视频一区二区在线 | 97色狠狠| 狠狠色丁香久久婷婷综 | 天天操天天色天天射 | 91丨九色丨蝌蚪丨对白 | 99精品在线视频播放 | 午夜精品一二三区 | 久久av免费 | 中文字幕在线影院 | 中文字幕在线一二 | 521色香蕉网站在线观看 | 久久激情五月激情 | 久久国产乱 | 国产精久久久久久妇女av | 91亚洲狠狠婷婷综合久久久 | 韩日精品在线观看 | 999国内精品永久免费视频 | 欧洲精品视频一区二区 | 91久久精品日日躁夜夜躁国产 | 粉嫩av一区二区三区四区在线观看 | 欧美日韩一区久久 | 国产福利a| 亚洲一区二区三区在线看 | 国产精品美女免费视频 | 国产成人av| 国产亚洲视频在线 | 日韩在线中文字幕 | 成人91av| 在线视频亚洲 | 精品视频久久 | 久久99在线观看 | 国产精品久久99综合免费观看尤物 | 在线免费观看黄网站 | 五月天久久激情 | 欧美另类69 | 国产精品久久久久久久婷婷 | 亚洲狠狠丁香婷婷综合久久久 | 久香蕉| 久久免费片 | 色综合中文字幕 | 国产精品麻豆果冻传媒在线播放 | 免费性网站 | 在线观看视频免费播放 | 91精品国产三级a在线观看 | 精品久操 | 人人藻人人澡人人爽 | 国产黄色成人av | 女人18片 | 日本中文字幕在线视频 | 天天操天天射天天爽 | 在线观看av的网站 | 超级av在线 | 日本乱码在线 | 欧美国产日韩一区二区三区 | av字幕在线 | 久久99国产一区二区三区 | 国产69精品久久久久99尤 | 久色免费视频 | 久久免费高清视频 | 色九九视频 | 日韩电影在线一区 | 日日爽夜夜操 | 91精品国产综合久久福利 | 久久69精品 | 亚洲欧洲精品视频 | 亚洲高清不卡av | 成人动漫精品一区二区 | 国产理论片在线观看 | 福利一区二区三区四区 | 欧美亚洲免费在线一区 | 免费日韩视| 视频一区二区三区视频 | 射射射av| 狠狠干.com| 国产一级在线观看 | 99精品视频网站 | www.狠狠插.com | 91桃色国产在线播放 | 婷婷网五月天 | 在线观看日本高清mv视频 | www91在线观看 | 在线你懂的视频 | 欧美日韩国产区 | 欧美日韩不卡在线观看 | 手机版av在线 | 97色狠狠 | 国产高清黄色 | 色av色av色av | 日韩精品一区二区免费视频 | 久久久国产精品久久久 | 欧美黄色特级片 | 久久中文字幕导航 | 国产一区二区网址 | av性在线| 成人a在线观看高清电影 | 久久久鲁 | 色av资源网| 中文字幕网站视频在线 | 成年人av在线播放 | 久久久久久久99精品免费观看 | 精品人妖videos欧美人妖 | 国产在线国偷精品产拍免费yy | 亚洲精品一区二区在线观看 | 日本在线成人 | 免费看av在线 | 99色婷婷| 亚洲九九九在线观看 | 看黄色91 | 久久九九国产视频 | 97超碰国产精品 | 日韩精品网址 | 视频二区 | av一级在线 | 在线视频亚洲 | 91在线入口 | 欧美日韩三区二区 | 欧美做受xxx| 激情小说网站亚洲综合网 | 免费看特级毛片 | 亚洲年轻女教师毛茸茸 | 国产91影视 | 波多野结衣一区 | 久久精品99国产精品酒店日本 | 日韩精品视频在线免费观看 | 国精产品满18岁在线 | av 一区 二区 久久 | www成人精品 | 日韩精品视频第一页 | 人人干人人添 | 国产日韩欧美在线一区 | 韩国av免费观看 | 91人人揉日日捏人人看 | 国产精彩在线视频 | 精品一区 精品二区 | 麻豆91在线 | 伊人色**天天综合婷婷 | 欧美在线视频第一页 | 亚洲精品中文在线 | 国内精品久久久久影院一蜜桃 | 中文字幕在线视频免费播放 | 国内精品在线看 | 午夜丰满寂寞少妇精品 | 麻豆精品视频在线观看免费 | av天天澡天天爽天天av | 国产综合视频在线观看 | 狠狠综合久久av | 午夜男人影院 | a天堂一码二码专区 | 在线观看视频国产一区 | 美女视频网 | 中文字幕日韩有码 | 亚洲高清精品在线 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 成人啊 v| 91色综合| 九色视频网| 91九色综合 | 亚洲精品美女久久久久网站 | 免费看黄20分钟 | 在线久草视频 | 在线精品视频免费播放 | 国产区精品在线观看 | 超碰免费97 | 久久在线观看 | www天天干| 91大神电影 | 丁香激情综合国产 | 亚洲v精品 | 亚洲国产欧洲综合997久久, | 色www免费视频 | 国产精品视频内 | 91福利在线观看 | a天堂在线看 | 五月天久久久久 | 亚洲精品日韩一区二区电影 | 成人高清av在线 | 亚洲日本va午夜在线电影 | 久久精品屋| 国产精品免费大片视频 | 尤物一区二区三区 | 国产精品国产自产拍高清av | 色操插| 日本公妇在线观看 | 亚洲伊人第一页 | 日本精品久久久久影院 | 国产亚洲观看 | 中文在线a√在线 | 91av综合| 天天色综合三 | a级国产乱理伦片在线观看 亚洲3级 | 91精品国产九九九久久久亚洲 | 国产日产高清dvd碟片 | 成年人电影免费看 | 亚洲第一香蕉视频 | 黄色a大片| 又黄又爽又刺激 | 日韩av一区在线观看 | 欧美一二三区播放 | 日韩在线观看视频中文字幕 | 草 免费视频 | 久草在线视频国产 | 色无五月 | 日本性xxxxx 亚洲精品午夜久久久 | 国产精品久久久久久久久大全 | 国产精品入口久久 | 国产精品mm| 日韩网站在线观看 | 久久av免费 | 在线观看一区视频 | 国产专区在线视频 | 夜夜躁狠狠躁日日躁 | 天堂在线v | 日韩专区在线 | 日韩免费网址 | 亚洲精品午夜久久久久久久久久久 | 久久久久国产精品厨房 | 怡红院av久久久久久久 | 亚洲精品在线一区二区 | 黄影院| 最近中文字幕大全中文字幕免费 | 免费在线观看国产精品 | 欧美日韩高清一区二区 国产亚洲免费看 | 日本aaaa级毛片在线看 | 天天射天天艹 | 中文字幕av免费 | 欧日韩在线视频 | 91精品免费视频 | 在线视频日韩一区 | www色片 | 久久久性| 欧美日韩不卡一区 | 欧美日韩不卡在线观看 | 操操操日日日干干干 | 久久在线视频精品 | 久草在线官网 | 在线观看视频99 | 成人一区在线观看 | 美女网站在线播放 | 蜜臀久久99精品久久久无需会员 | 成年人在线免费看片 | 草久中文字幕 | 国产露脸91国语对白 | 久久久久久久久福利 | 亚洲精品视频免费 | 久久日韩精品 | 国产区欧美| 中文字幕日韩无 | 国产精品一区二区免费在线观看 | 精品久久久久久久久亚洲 | 一本—道久久a久久精品蜜桃 | 91视频免费看片 | 国产精品21区 | 视频一区二区在线观看 | 91成人精品视频 | 成人国产精品一区二区 | 日本黄色片一区二区 | 免费av网址在线观看 | 97在线视 | 亚洲日韩中文字幕 | 免费看一级| 国产乱对白刺激视频不卡 | 免费毛片一区二区三区久久久 | 91最新视频在线观看 | 中文字幕在线有码 | 久操视频在线观看 | 亚洲激情校园春色 | 国产自偷自拍 | 国产精品96久久久久久吹潮 | 奇米先锋 | 成人免费看片网址 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 国产成人精品一区二区三区免费 | 国产香蕉久久 | 久久国产精品久久精品 | 亚洲一级片免费观看 | 国产一级片一区二区三区 | 国产一级片一区二区三区 | 国产精品久久久免费 | 韩国在线一区二区 | 国产视频一区精品 | 91成品人影院 | 亚洲国产大片 | 久久99电影| 五月丁婷婷 | 成年人国产在线观看 | 久久久久99精品成人片三人毛片 | 毛片www| 精品久久电影 | www.日日日.com | av中文国产 | 中文字幕av日韩 | 18性欧美xxxⅹ性满足 | 一级黄色片在线 | 精品国内自产拍在线观看视频 | 日韩亚洲在线 | 国产精品日韩欧美 | 特级片免费看 | 91黄色免费网站 | 日韩精品电影在线播放 | 国产欧美在线一区二区三区 | 国内揄拍国内精品 | 久久99精品国产一区二区三区 | 国产专区日韩专区 | 国产高清专区 | 国产黄色大片 | 国产精选视频 | 99久久久久久久久 | 国产女人18毛片水真多18精品 | 4438全国亚洲精品观看视频 | 天天插夜夜操 | 狠狠色狠狠色终合网 | 成人在线视频论坛 | 日韩中文字幕一区 | 亚洲精品免费在线观看 | 成人免费一级片 | 99亚洲国产 | 婷婷综合导航 | 二区精品视频 | 色综合久久网 | 欧美吞精 | 国产午夜小视频 | 一级一片免费观看 | 制服丝袜在线91 | 国产高清视频色在线www | 欧美成人区 | 久久99精品久久久久久清纯直播 | 久久免费99精品久久久久久 | 免费观看一级特黄欧美大片 | 国产高清视频 | 国内丰满少妇猛烈精品播放 | 99亚洲国产| 狠狠干综合网 | 亚洲国产成人高清精品 | 国产一级一片免费播放放a 一区二区三区国产欧美 | 国产91大片| 日韩在线观看视频中文字幕 | 天天搞天天 | 欧美天堂视频在线 | 国产在线视频一区二区三区 | 国产日本三级 | 91漂亮少妇露脸在线播放 | 亚洲va欧美va| 天天天天天干 | 日韩爱爱片 | 国产夫妻性生活自拍 | 日本一区二区免费在线观看 | www.久久婷婷 | 免费h精品视频在线播放 | 久久艹久久 | 国产91免费在线 | 色婷婷午夜 | 伊人伊成久久人综合网小说 | 中文字幕资源网 国产 | 片网站| 精品夜夜嗨av一区二区三区 | 久久不卡国产精品一区二区 | av免费网站观看 | 一级黄色大片在线观看 | 97爱爱爱 | 久久婷婷开心 | 91色一区二区三区 | 亚洲一级片免费观看 | 国产精品久久久久久久久免费看 | 国产在线永久 | 日韩免费观看一区二区 | 天天爽天天做 | 日韩av五月天 | 国产三级国产精品国产专区50 | 国产亚洲精品女人久久久久久 | 亚洲婷婷丁香 | 五月天色站 | 国产精品久久久久久久久蜜臀 | 国产黑丝一区二区 | 黄av免费在线观看 | 摸bbb搡bbb搡bbbb| 狠狠五月婷婷 | 国内揄拍国内精品 | 一二三精品视频 | 久久久亚洲影院 | 国产区精品在线观看 | 中文字幕在线观看的网站 | 伊人狠狠色丁香婷婷综合 | 免费黄a大片 | 国产在线国产 | 福利av在线 | 少妇超碰在线 | 91三级在线观看 | 亚洲一区二区精品视频 | 国产在线精品一区 | 91刺激视频 | 热99久久精品 | 99操视频 | 天天做天天爱天天爽综合网 | 国产精品成人自产拍在线观看 | 美女精品在线 | 精品一二三四五区 | 99精品国产aⅴ | 国产在线不卡一区 | 成人免费观看a | 国产精品久久久久久久久软件 | 亚洲综合在线播放 | 国产综合视频在线观看 | 国产人成看黄久久久久久久久 | 91丨九色丨国产丨porny精品 | 日韩中文字幕免费视频 | 久久成人人人人精品欧 | 欧美精品一区二区在线播放 | 欧美人牲| 99在线观看视频 | 久久久片 | 国际精品久久 | 99综合电影在线视频 | 久草在线在线精品观看 | 久草干 | 亚洲欧美综合精品久久成人 | 婷婷激情久久 | 国产在线a视频 | 久久精品国产亚洲 | 免费av看片| 视频在线观看入口黄最新永久免费国产 | 国产免费三级在线观看 | 中文字幕视频三区 | 蜜臀av麻豆| 国产精品18毛片一区二区 | 高清视频一区二区三区 | 久久免费电影网 | 精品国产免费人成在线观看 | 中文字幕日韩免费视频 | 美女视频永久黄网站免费观看国产 | 国产成人高清av | 国产精品午夜8888 | 国产成人精品av在线观 | 69久久夜色精品国产69 | h视频在线看 | 99精品在线免费在线观看 | 久久精品79国产精品 | 精品久久久久久久久久 | 久草视频手机在线 | 综合网天天射 | 在线看av的网址 | 午夜av免费看 | 亚洲一区二区精品视频 | 黄色av成人在线 | 九九九九九九精品任你躁 | 久99精品 | 日韩视频在线观看视频 | 国产一级精品视频 | 安徽妇搡bbbb搡bbbb | 日韩av线观看 | 国产精品日韩在线 | 久久精品影视 | 久久蜜臀av| 18国产精品福利片久久婷 | 欧美天堂久久 | 国产高清在线一区 | 91尤物国产尤物福利在线播放 | 亚洲va欧美va人人爽春色影视 | 97视频网站| 在线成人欧美 | 中文字幕av免费在线观看 | 综合精品在线 | 欧美激情在线网站 | 最新超碰| 精品国产一区二区三区不卡 | 蜜臀久久99静品久久久久久 | 伊人射 | 日韩精品一区二区三区免费观看 | 99在线视频播放 | 中文一区在线 | 超碰在线免费福利 | 久久精品女人毛片国产 | 欧美一区日韩一区 | 欧美日韩伦理一区 | 天天操夜夜摸 | 国产自产高清不卡 | 成人一区二区三区中文字幕 | 久久人人爽人人片av | 奇米网8888 | 日韩一区二区在线免费观看 | 亚洲男男gaygayxxxgv| 在线播放 一区 | 亚州精品在线视频 | www.日本色 | 深爱婷婷网 | 欧美成年人在线视频 | 国产永久网站 | 黄色三级久久 | 在线观看亚洲免费视频 | 欧美一级电影 | 91看毛片 | 韩日色视频 | 免费影视大全推荐 | 99久久99视频 | a黄色| 国产精品v欧美精品v日韩 | 狠狠色丁香婷婷综合最新地址 | 一本一道久久a久久综合蜜桃 | 99国产精品久久久久久久久久 | 国产一区视频在线 | 97av在线视频 | 中文在线免费看视频 | 91在线看 | 激情五月播播久久久精品 | 色99久久| 月丁香婷婷| 国产精品不卡在线 | 久久视频在线视频 | 99精品国产99久久久久久福利 | 成片免费观看视频999 | 日韩av在线资源 | 5月丁香婷婷综合 | 国产精品欧美一区二区 | 波多野结衣网址 | 天天草天天操 | 国产免费大片 | 午夜精品电影一区二区在线 | 天天摸天天干天天操天天射 | 欧美伦理电影一区二区 | 中文字幕亚洲国产 | 9999激情| 久久久男人的天堂 | 久久综合在线 | 99色免费视频 | 国产在线观看,日本 | 国产美女精品久久久 | 国模精品在线 | 中文字幕一区二区三区久久 | 免费精品视频在线 | 在线国产一区二区 | 久久天天躁夜夜躁狠狠躁2022 | 17videosex性欧美 | 国产成人精品综合久久久久99 | 激情综合一区 | 国产69精品久久app免费版 | 日韩av电影一区 | 日韩www在线 | 在线免费观看黄色小说 | 91视频高清完整版 | 不卡视频国产 | 日韩首页 | 国产伦精品一区二区三区四区视频 | 国产一区二区三区免费在线 | 一区二区三区手机在线观看 | 99精品免费在线观看 | 午夜12点 | 在线观看免费福利 | 亚洲成年片 | www.五月激情.com | 97碰在线| 色狠狠综合 | 亚洲在线精品视频 | 成人在线观看免费 | 亚洲污视频| 国产成人精品999在线观看 | 国产一区欧美在线 | 九九免费观看视频 | 毛片在线播放网址 | 99精品国产兔费观看久久99 | 免费网址你懂的 | 91九色成人| 六月丁香综合网 | 久久黄页| 欧美日本不卡高清 | 香蕉视频在线网站 | 超碰人在线 | 国产一区二区不卡视频 | 国产免费又粗又猛又爽 | 日韩最新av在线 | 日韩有码在线播放 | 日韩欧美视频 | 日韩欧美不卡 | 色天天综合网 | 亚洲成人av影片 | 亚洲精品观看 | 久久久毛片 | 久久精品79国产精品 | 国产99久久久国产精品免费看 | 国产精品久久久久久久免费大片 | 日本久久久久久科技有限公司 | 亚洲成人免费 | 国内免费久久久久久久久久久 | 欧美日韩国产亚洲乱码字幕 | 国产精品一区二区精品视频免费看 | 97电影院在线观看 | 欧美一二区在线 | 日韩av高清在线观看 | 欧美日韩一区二区三区免费视频 | 婷婷丁香视频 | 亚洲成人一二三 | 欧美国产日韩一区二区三区 | japanesefreesex中国少妇 | 国产亚洲精品久久久久久久久久久久 | 久久精品亚洲综合专区 | 国产美女精品在线 | 在线视频 精品 | 96国产在线 | 在线观看黄色的网站 | 操少妇视频| 97超碰人人| 99久久超碰中文字幕伊人 | 久久这里只有精品首页 | 色多视频在线观看 | 天天干天天拍天天操 | 国产精品一区二区三区四 | 天天操夜夜想 | 免费看亚洲毛片 | 久久精品国产成人 | 日韩网站在线 | 美国av大片 | 国产成人福利片 | 操操操影院| 久久精品国产99国产 | 免费观看性生交大片3 | 在线欧美日韩 | 久草在线在线精品观看 | 久久久久99精品成人片三人毛片 | 国产精品porn| 国产中文字幕第一页 | 久久手机在线视频 | 日韩视频免费观看高清 | 婷婷色吧| 亚洲成人资源在线观看 | 日韩激情第一页 | 性日韩欧美在线视频 | 国产在线观看二区 | 深夜福利视频一区二区 | 亚洲精品大片www | 日韩成人黄色av | 爱色av.com| 操综合 | 免费看黄在线观看 | av中文字幕第一页 | 成人三级视频 | 色综合久久久久综合 | 久久a v电影| 亚洲 欧洲 国产 日本 综合 | www.91国产| 97视频在线播放 | 日韩欧美一区二区在线观看 | 亚洲天天摸日日摸天天欢 | 992tv又爽又黄的免费视频 | 国产精品av免费 | 91综合色 | 中文字幕免费高清av | 91精品国产99久久久久久久 | 色视频成人在线观看免 | 久久经典国产 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 亚洲一区精品人人爽人人躁 | 欧美一级视频在线观看 | 狠狠色丁香久久婷婷综合丁香 | 成年人三级网站 | 美女免费视频观看网站 | 黄色大全在线观看 | 亚洲有 在线 | 免费久草视频 | 日韩欧美在线观看一区二区三区 | 天天操人人干 | 欧美aⅴ在线观看 | 亚洲精品啊啊啊 | a在线视频v视频 | 欧美孕妇视频 | 人人爽人人澡人人添人人人人 | 手机看片久久 | 特级西西www44高清大胆图片 | 久草在线观看视频免费 | 成人国产精品一区二区 | 国产免费黄色 | 国产成人综合图片 | 中文资源在线播放 | 99视频免费播放 | 粉嫩av一区二区三区免费 | 久久999久久 | 欧美午夜精品久久久久久浪潮 | 欧美日韩视频在线观看一区二区 | 亚洲视频网站在线观看 | 99精品在线视频观看 | 欧美一级性视频 | 日本aaa在线观看 | 麻豆一二三精选视频 | 国产精品二区三区 | 久久婷婷激情 | 黄色录像av| 久久爽久久爽久久av东京爽 | 色www免费视频 | 欧美激情视频一二区 | 国产精品久久一区二区三区, | 狠狠狠色狠狠色综合 | 不卡av免费在线观看 | 中文字幕在线观看完整 | 亚洲国产精品成人女人久久 | 亚洲无在线 | 最近最新最好看中文视频 | 视频二区在线视频 | 激情av一区二区 | 2023亚洲精品国偷拍自产在线 | 久久婷婷一区二区三区 | 亚洲天堂网在线视频 | 日韩一区二区三区免费电影 | 日韩va欧美va亚洲va久久 | 国产精品不卡在线观看 | 黄色大片av | 国产精品爽爽久久久久久蜜臀 | 四虎国产永久在线精品 | 久久久久久久影视 | 色综合色综合久久综合频道88 | 在线观看www视频 | 国产精品亚州 | 国产精品嫩草在线 | 亚洲一级片免费观看 | 一区二区不卡高清 | 久草在线视频免费资源观看 | 亚洲欧美综合精品久久成人 | 亚洲精品高清一区二区三区四区 | 在线看成人片 | 少妇自拍av | 91精品视频导航 | 久久精品福利视频 | 偷拍福利视频一区二区三区 | 狠狠色丁香久久婷婷综合五月 | av网在线观看 | 天天干天天操天天入 | 久久精品毛片 | 丁香影院在线 | 顶级bbw搡bbbb搡bbbb | 成人在线观看日韩 | bbbbb女女女女女bbbbb国产 | 91电影福利 | 黄色小说免费在线观看 | 在线播放 一区 | 日韩精品一区二区三区免费视频观看 | 亚洲精品字幕 | 亚洲精品网址在线观看 | 伊人五月婷 | 五月婷婷丁香六月 | 18国产精品白浆在线观看免费 | 日本性久久 | 亚洲欧洲成人精品av97 | 久久久国产一区二区 | 成人免费一级片 | 色婷婷一区 | 在线看国产日韩 | 日本久久久久久 | 色综合久久中文综合久久牛 | av东方在线 | 亚洲精品玖玖玖av在线看 | 日韩影视精品 | 2019天天干夜夜操 | www.天天综合 | 最新av电影网址 | 在线播放视频一区 | 手机av永久免费 | 免费在线观看av不卡 | 中文字幕色网站 | 亚洲综合在 | 91成人精品一区在线播放 | 中文字幕刺激在线 | 午夜国产福利在线观看 | 国产精品久久久久久久久久久免费 | 极品国产91在线网站 | 天天干天天操天天 | 久一网站 | 久久久久久久电影 | 亚洲最新在线 | 亚洲日本在线一区 | 国产手机在线播放 | 国产精品 日韩 | 成人av高清 | 久久久久久免费 | 日韩精品欧美专区 | 2024国产在线 | 免费看wwwwwwwwwww的视频 久久久久久99精品 91中文字幕视频 | av亚洲产国偷v产偷v自拍小说 | 国产999精品久久久久久麻豆 | 在线a视频 | 亚洲精品自拍视频在线观看 | 国产综合精品久久 | 久久草av | 在线免费观看黄色大片 | 国产精品成人自产拍在线观看 | 久久免费精品 | 久久看视频 | 免费在线播放黄色 | 久久免费视频2 | 国产区 在线 | 日本高清xxxx | 免费手机黄色网址 | 亚洲精选久久 | 亚洲天堂精品 | 日韩在线视频一区二区三区 | 日韩精品视频一二三 | 日韩免费一区二区三区 | 一区二区视频在线免费观看 | 午夜视频免费 | 亚洲国产精品成人综合 | 99热都是精品 | 欧美成人在线网站 | 亚洲精品高清一区二区三区四区 | 久久这里只有精品首页 | 欧美日韩观看 | 麻豆视频免费入口 | 成人羞羞免费 | 四虎在线免费 | 一区免费在线 | 日韩欧美视频在线观看免费 | 日韩一区二区三区高清免费看看 | 91视频3p | 国产乱码精品一区二区蜜臀 | 中文国产字幕在线观看 | 综合精品久久 | 久久亚洲免费 | 亚洲成av片人久久久 | 日韩视频一区二区三区在线播放免费观看 | 深爱综合网| 中文字幕九九 | 在线你懂的视频 | 成人黄色大片在线免费观看 | 亚洲精品在线免费观看视频 | 欧美一区二区日韩一区二区 | 六月激情婷婷 | 国产精品视频在线观看 | av片一区 | 最新日韩在线观看视频 | av在线电影网站 | 色婷婷国产精品 | 国产精品久久久久久69 | 久久成人国产精品入口 | 91自拍视频在线观看 | 久热色超碰 | 日本精油按摩3 | 三级av网| av免费黄色| 国产成人av一区二区三区在线观看 | 美女视频久久久 | 久久视频免费观看 | 日韩精品视频免费看 | 波多野结衣视频网址 | www.夜色.com| 精品一区免费 | 91精品国产九九九久久久亚洲 | 成人久久久久 | 日日碰夜夜爽 | 欧美了一区在线观看 | 欧美久久精品 | 亚洲天天综合网 |