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

MySQL:不是MySQL問題的MySQL問題

數據庫 MySQL
有的時候我們遇到的問題,看起來像MySQL自身的問題,但是實際上是業務代碼自己的問題,這里我們來看兩個例子,這兩個看起來像MySQL自身的問題,但是實際上不是的,這里就來聊一下這兩個問題,以及我的分析方式。

一、自定義函數的BUG導致的問題

這個問題是跑一條如下的的SQL

update test set p_id=getPid(c_id);

這個表只有10w條數據,但是語句卻一直不能完成,如果將語句加上limit,當limit 50000的時候是可以執行完成的,但是當limit 80000的時候就一直不能完成。并且有一個現象,就是語句會不斷會出現opening tables的狀態。

 既然語句不能執行完成,那么就需要找到為什么不能完成,先把等待的原因找到,比如:

  • 鎖等待?
  • CPU打滿?
  • IO打滿?

排查下來發現這個語句在實際執行的時候占用了大量的CPU,因此我們分別采集了正常執行和異常的情況,發現異常的時候正常的邏輯幾乎成了一根線,而非正常的邏輯占用了大量的CPU如下:圖片

那么很顯然,實際上本語句執行異常的情況下,CPU都沒有處理正常的邏輯。而其上層調用sp_head::execute_function就是執行函數的上層調用,而這里只有一個自定義函數,因此幾乎可以判定是自定義函數內部邏輯遇到了什么問題。接著我們使用pstack對異常情況的執行棧進行了查看,并且多次測試正常邏輯的pstack執行棧,發現其中有一個邏輯入參不斷在膨脹,且內存長度不斷增加(length),圖片

當然這里所有的都是我的測試環境的構建,不是線上環境。那么就可以確認函數內部在做拼接的時候遇到了問題,繼而我們打開自定義函數getPid,發現其中有一個while循環,循環內部在做字段的拼接,拼接完成后返回值,就是這個while循環,在滿足一定情況下會出現死循環,而且根據pstack入參這個字符串,實際上就是不斷在拼接某個字段,這個字段的值為1,由于死循環拼接了很長很長,這里看到就是1,1,1,1,1,1......,這樣我們也拿到了這個出現問題行的字段值 1,并且我們通過死循環條件也能判斷出另外一個字段的值,接下來就根據這兩個字段在表里面查一下就可以找到導致死循環的行,當然這里只是講一個思路,不方便給出這個自定義函數。出現死循環的問題也剛好符合CPU打滿的情況。

其次由于自定義函數內存有select 語句,這個語句在遇到自定義函數死循環的情況下要不斷的循環跑,因此就觀察到update 語句執行異常期間,觀察到opening tables的情況。

二、應用代碼static 變量導致的死鎖

這個問題在MySQL層的表現就是出現了死鎖,但是這個死鎖表很簡單,簡單到只有少量的記錄,而且只有主鍵,并且沒有其他的索引這里假定主鍵就是id,且為RC隔離級別,每次執行的語句也是根據主鍵來查詢和更新的,如下:

begin;
select * from test where id=1 for update;
update test set name='a' where id=1;
commit;

死鎖如下(這里刪除了詳細數據):
------------------------
LATEST DETECTED DEADLOCK
------------------------
2022-07-06 19:48:38 0x7efc44162700
*** (1) TRANSACTION:
TRANSACTION 12739556, ACTIVE 0 sec starting index read
mysql tables in use 1, locked 1
LOCK WAIT 3 lock struct(s), heap size 1136, 2 row lock(s)
MySQL thread id 627119, OS thread handle 139619931977472, query id 129095157 192.168.1.81 root updating
update test set name='a' where id=1

*** (1) HOLDS THE LOCK(S):
RECORD LOCKS space id 388279 page no 4 n bits 152 index PRIMARY of table `test`.`test` trx id 12739556 lock_mode X locks rec but not gap
Record lock, heap no 82 PHYSICAL RECORD: n_fields 16; compact format; info bits 0

*** (1) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 388279 page no 4 n bits 152 index PRIMARY of table `test`.`test` trx id 12739556 lock_mode X locks rec but not gap waiting
Record lock, heap no 55 PHYSICAL RECORD: n_fields 16; compact format; info bits 0

*** (2) TRANSACTION:
TRANSACTION 12739557, ACTIVE 0 sec starting index read
mysql tables in use 1, locked 1
LOCK WAIT 3 lock struct(s), heap size 1136, 2 row lock(s)
MySQL thread id 627114, OS thread handle 139621354526464, query id 129095158 192.168.1.81 root updating
update test set name='o' where id=2

*** (2) HOLDS THE LOCK(S):
RECORD LOCKS space id 388279 page no 4 n bits 152 index PRIMARY of table `test`.`test` trx id 12739557 lock_mode X locks rec but not gap
Record lock, heap no 55 PHYSICAL RECORD: n_fields 16; compact format; info bits 0

*** (2) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 388279 page no 4 n bits 152 index PRIMARY of table `test`.`test` trx id 12739557 lock_mode X locks rec but not gap waiting
Record lock, heap no 82 PHYSICAL RECORD: n_fields 16; compact format; info bits 0

*** WE ROLL BACK TRANSACTION (2)

那么出現這種死鎖問題,一般分析路徑為:

  • 業務代碼是否有問題。
  • 執行計劃是否有問題。
  • 最后才是重現,分析MySQL本身的問題。

當我們分析第一點的時候,業務代碼寫得很簡單,也很清晰就是前面的事務邏輯,這種事務說實話出現死鎖貌似不太可能,因為很簡單查詢是查詢的主鍵,更新的時候也是通過主鍵更新一個字段的值而已,且除了主鍵沒有其他的索引,這種情況一般只會是堵塞而不會出現死鎖。

然后我們在測試環境模擬死鎖的時候打開了general log,發現并不是我們想象的,多線程的各個語句和事務是在一個session 交替進行的,這就奇怪了,言外之意就是多個業務線程對應了一個session,大概如下:

begin;
update set name='o' where id=2
commit;
begin;
select * from test where id=1 for update;
select * from test where id=3 for update;
select * from test where id=4 for update;
update test set name='a' where id=3;
update test set name='a' where id=1;
commit;
update set name='o' where id=4;

反正沒什么規律,這貌似很像多線程并發并且所有語句堆到了同一個session。

那么進而分析,代碼變量的定義我們才發現代碼中將連接變量的屬性設置為了static類型的,開發環境當然是java的 ,我們可以類比C++,C++中如果將類變量的屬性加上static代表是靜態變量,這種變量的值不是存在棧上的,而是存在靜態全局區,所有通過本類實例化的對象,都共享了這個靜態變量,換一句話說,如果某個實例化的對象修改了這個靜態變量那么所有的實例化對象都會修改,當然java/python 都有類似的使用方法。主要還是看內存到底是棧內存/堆內存/全局內存。那么這個問題就變得簡單了,當多個線程同時初始化建立好連接過后,所有的線程實際上最后得到連接只有一個。類似如下:

最后為了驗證我寫了一個測試用例(見末尾),很難跑成功,因為4個線程同時使用了一個connect,感覺應該是C下面這樣在獲取結果(mysql_store_result)和free結果(mysql_free_result)的時候可能的情況是未知的,當然也沒去仔細研究lib庫函數的使用方式可能寫的方式也有問題,反正各種crash(core dump)。但是在偶爾能夠成功的時候可以在general log中看到如下日志,這里就是所有線程的語句堆到同一個session:

static變量:
2022-07-08T07:07:50.364174Z 173 Query select 1
2022-07-08T07:07:50.365168Z 173 Query select 2
2022-07-08T07:07:50.365903Z 173 Query select 3
2022-07-08T07:07:50.370390Z 173 Query select 0
2022-07-08T07:07:51.367748Z 173 Query select 2
2022-07-08T07:07:51.367903Z 173 Query select 1
2022-07-08T07:07:51.368161Z 173 Query select 3

顯然這是一個session id 為173,而實際上測試用例4個線程會不斷的跑select 0/select 1/select 2/select 3。但是4個線程對應了同一個session,這也和我們實際情況一致,這樣如果多個應用各自啟動了多個線程,那么混跑語句就會出現下面的情況:

app1 多線程:                                                               
begin;
select * from test where id=1 for update;
select * from test where id=2 for update;
select * from test where id=3 for update;
update set name='a' where id=1;
update set name='a' where id=2;
commit;

app2 多線程:
begin;
select * from test where id=2 for update;
select * from test where id=1 for update;
select * from test where id=3 for update;
update set name='a' where id=2;
update set name='a' where id=3;
commit;

事務被無序的擴大了,死鎖概率當然大大增加。這也是我們實際環境中看到的情況。當然如果測試用例使用局部變量就沒有問題,改為局部變量后正常執行如下:

2022-07-08T07:18:22.582624Z       225 Query     select 0
2022-07-08T07:18:22.582732Z 222 Query select 2
2022-07-08T07:18:22.582638Z 223 Query select 1
2022-07-08T07:18:22.583214Z 224 Query select 3
2022-07-08T07:18:23.583894Z 225 Query select 0
2022-07-08T07:18:23.583973Z 222 Query select 2
2022-07-08T07:18:23.583915Z 223 Query select 1
2022-07-08T07:18:23.584315Z 224 Query select 3

這里就是4個thread對應了4個session,各自跑的各自的語句。

附件

C++ 測試用例,如果改成局部變量后4個線程對應4個session,可以正常跑沒有問題如下,static 變量容易導致各種crash。

#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include "/opt/mysql/mysql3306/install/include/mysql.h"
#include <time.h>
#include <unistd.h>

using namespace std;


class My_Con
{
public:
MYSQL conn_ptr;
My_Con(const char *host,const char *user,const char *passwd,unsigned int port)
{
mysql_init(&conn_ptr);
if(mysql_real_connect(&conn_ptr,host,user,passwd,NULL,port,NULL,0)==NULL)
{
printf("err: mysql_real_connect() error %s\n",mysql_error(&conn_ptr));
exit(1);
}
}
MYSQL* get_conn()
{
return &conn_ptr;
}
//~My_Con(){mysql_close(&conn_ptr);cout<<"close connect"<<endl;}
};


class My_Test
{
public:
static MYSQL* conn_ptr; //靜態指針
static My_Con* test; //靜態指針
int myid;
MYSQL_RES *query_res;
char strtest[30];

My_Test(const int i)
{
test = new My_Con("192.168.1.61","testuser","gelc123",3306);
conn_ptr = test->get_conn();
myid = i ;
query_res = NULL;
}
void* get_string(int id)
{
sprintf(strtest, "select %d ;", id);
cout<<strtest<<endl;
}



void test_query()
{
get_string(myid);
if(mysql_query(conn_ptr,strtest) != 0)
{
printf("err: mysql_query() error %s %s\n",mysql_error(conn_ptr),strtest);
//exit(1);
}

query_res=mysql_store_result(conn_ptr);
if(query_res == NULL)
{
;
}
mysql_free_result(query_res);

}
//TIPS: static variables
// ~My_Test(){delete []test;}

};
My_Con* My_Test::test = NULL;
MYSQL* My_Test::conn_ptr = NULL;


void* test_func(void* arg)
{
My_Test a(*((int*)arg)); //建立連接
struct timespec n_sec;
n_sec.tv_sec = 1;
n_sec.tv_nsec = 0;

for(;;)
{
nanosleep(&n_sec,NULL);
a.test_query();
}

}


int main()
{
pthread_t tid[4];
int tid_num = 0;
int i = 0;
int ret = 0;
int seq[4] = {0,1,2,3};

pthread_create(tid+tid_num,NULL,test_func,(void*)seq);
tid_num++;
pthread_create(tid+tid_num,NULL,test_func,(void*)(seq+1));
tid_num++;
pthread_create(tid+tid_num,NULL,test_func,(void*)(seq+2));
tid_num++;
pthread_create(tid+tid_num,NULL,test_func,(void*)(seq+3));
tid_num++;

//堵塞回收
for(i = 0;i<=tid_num;i++)
{
ret = pthread_join( *(tid+i) , NULL );
}
return 0 ;
}


責任編輯:華軒 來源: MySQL學習
相關推薦

2011-05-16 09:44:40

Mysql

2011-05-16 10:31:19

mysql亂碼

2009-07-10 18:02:05

MyEclipseMySQL

2011-03-22 16:09:33

MySQL 5.0.1亂碼

2021-06-08 08:38:36

MySQL數據庫死鎖問題

2019-01-02 13:03:53

MySQL存儲權限

2018-04-18 09:18:44

數據庫MySQL存儲過程

2010-11-25 11:15:11

MySQL查詢超時

2010-06-10 14:03:00

MySQL EMS

2010-06-10 14:03:00

MySQL EMS

2011-03-14 11:01:42

LAMPMYsql1045

2022-01-26 19:42:05

MySQL亂碼排查

2010-05-12 09:08:49

Mysql中文

2010-05-28 15:37:36

MySQL中文顯示

2010-05-11 17:45:17

MySQL字符

2010-05-25 11:24:34

MySQL 亂碼

2013-07-04 10:55:20

2010-10-14 13:55:58

MySQL創建函數

2018-11-06 12:12:00

MySQL內存排查

2010-10-14 09:15:20

MySQL查詢
點贊
收藏

51CTO技術棧公眾號

日韩av有码在线| 国产亚洲一二三区| 欧美高清不卡在线| 麻豆精品国产传媒av| 色戒汤唯在线| 国产精品乱人伦| 成人在线免费网站| 中文字幕在线播| 91成人精品| 日韩av在线网址| 国产三级国产精品国产专区50| av网站导航在线观看免费| av不卡一区二区三区| 国产精品欧美一区二区| 久久久久久久蜜桃| 精品视频网站| 亚洲国产精品久久91精品| 丰满少妇在线观看| 丰满的护士2在线观看高清| 久久精品亚洲国产奇米99| 91深夜福利视频| 麻豆成人免费视频| 国内在线观看一区二区三区| 在线观看视频亚洲| 亚洲第一黄色网址| 日本一区二区三区电影免费观看| 色综合天天综合网国产成人综合天| 中文字幕日韩精品久久| 色视频在线观看免费| 国产麻豆精品视频| 国产主播精品在线| 欧美激情黑白配| 亚洲无线视频| 欧美多人乱p欧美4p久久| jizz日本在线播放| 国产一区二区三区四区大秀| 亚洲福利视频在线| 精品无码av一区二区三区不卡| 高清亚洲高清| 在线观看成人小视频| 国产免费毛卡片| 精精国产xxxx视频在线中文版| 国产精品美女久久久久久久| 欧洲在线视频一区| 欧美色图另类| 91伊人久久大香线蕉| 国产 高清 精品 在线 a| 亚洲无码精品在线观看| 日韩电影在线免费观看| 欧美亚洲另类制服自拍| 日韩av综合在线| 国产精品黄色| 久久99久久亚洲国产| 暗呦丨小u女国产精品| 清纯唯美日韩| 伊人久久精品视频| 欧美亚洲色综久久精品国产| 久久97视频| 亚洲视屏在线播放| 精品人伦一区二区| 国产一区不卡| 中文字幕亚洲欧美日韩高清| 国产又粗又硬视频| 天天做天天爱天天爽综合网| 久久久91精品国产| 免费成人深夜夜行网站| 亚洲女同中文字幕| 美日韩在线视频| 久久免费播放视频| 亚洲伦伦在线| 日本一区二区三区四区视频| 亚洲乱码国产乱码精品| 免费在线一区观看| 91精品久久久久久久久久入口| 97免费观看视频| 国产乱理伦片在线观看夜一区| 亚洲一区二区三区毛片 | 爽好多水快深点欧美视频| 97在线免费视频| 老熟妇仑乱一区二区av| 麻豆精品国产91久久久久久| 91久久精品美女高潮| www.xxxx国产| 成人黄页毛片网站| 日本不卡一二三区| 欧美成人三区| 午夜国产精品影院在线观看| 欧美三级午夜理伦三级| 久久日本片精品aaaaa国产| 欧美一区二区三区免费| 国产视频久久久久久| 国产尤物久久久| 欧美成人四级hd版| 亚洲欧美自拍视频| 激情国产一区二区 | 欧美一区二区麻豆红桃视频| www日韩欧美| 免费观看一级视频| 日本特黄久久久高潮| 成人黄视频免费| 猫咪在线永久网站| 一区二区三区在线免费播放| 欧美久久久久久久久久久久久| 色天使综合视频| 精品日韩一区二区| 日韩视频在线观看免费视频| 欧美黄色免费| 国产精品成熟老女人| 国产高清视频免费观看| 久久久久久日产精品| 好吊色视频988gao在线观看| 欧美电影网站| 欧美mv日韩mv亚洲| 992在线观看| 亚洲主播在线| 成人免费视频观看视频| 91在线网址| 欧美性猛交xxxx富婆| 初高中福利视频网站| 欧美日韩国产一区二区三区不卡| 欧美激情视频网址| 夜夜爽8888| 久久久久久久免费视频了| 日韩欧美猛交xxxxx无码| 日本免费一区二区三区四区| 精品国产髙清在线看国产毛片| 亚洲欧美日韩第一页| 在线综合亚洲| 国产高清在线一区二区| 超碰最新在线| 欧美日韩国产高清一区二区| 国产熟妇久久777777| 亚洲精品综合| 97自拍视频| 看黄网站在线观看| 欧美视频一区在线| 精品国产成人亚洲午夜福利| 亚洲美女黄网| 国产精品白丝jk白祙| 日本在线免费看| 欧美性videosxxxxx| 男人天堂av电影| 国产精品美女| 久久久久久久久一区| 成入视频在线观看| 精品久久久久久久久久久久久久久久久| 无码人中文字幕| 日本aⅴ亚洲精品中文乱码| 欧美日韩免费高清| 香蕉成人av| 国产亚洲精品美女久久久久| 亚洲s码欧洲m码国产av| 99久久婷婷国产精品综合| 九一国产精品视频| 日韩在线你懂的| 欧美专区在线观看| 色猫av在线| 在线免费观看日本一区| 日韩福利在线视频| 蜜臀va亚洲va欧美va天堂| 午夜精品一区二区在线观看的| 成人在线高清| 日韩亚洲精品电影| 国产免费黄色大片| 一区二区三区不卡视频| 黄色在线免费播放| 国产精品资源| 亚洲欧洲在线一区| 韩国一区二区三区视频| 国模精品一区二区三区色天香| 欧美少妇bbw| 狠狠躁夜夜躁人人爽超碰91| a毛片毛片av永久免费| 久久综合影音| 一区视频二区视频| 国产精品视频一区二区三区综合| 欧美高清一级大片| 日韩一二三四| 欧美性大战久久久久久久| www欧美com| 国产999精品久久| 日韩欧美xxxx| 国产精品久久久久9999赢消| 国产精品久久波多野结衣| 深夜av在线| 日韩在线欧美在线| 丰满少妇高潮在线观看| 精品久久中文字幕| 免费一级黄色录像| 国产白丝网站精品污在线入口| 欧美 国产 综合| 久久美女视频| 精品久久久久久乱码天堂| 国产精成人品2018| 欧美激情手机在线视频| 黄色的视频在线免费观看| 在线不卡免费欧美| 99热只有这里有精品| 国产精品久久久久桃色tv| 国产精品果冻传媒| 免费高清不卡av| 9久久9毛片又大又硬又粗| 日本一区二区三区视频| 成人看片在线| 午夜精品久久久久久毛片| 26uuu久久噜噜噜噜| a天堂中文在线官网在线| 亚洲欧美国产高清va在线播| a级片在线播放| 欧美在线一区二区三区| 日韩乱码人妻无码中文字幕| 中文字幕日韩一区| 亚洲av无码一区二区三区网址| 国产毛片精品国产一区二区三区| 久久久久久久久久福利| 一区在线免费| 日韩视频在线免费播放| 精品国产一区二区三区香蕉沈先生| 999在线免费观看视频| 成人精品动漫| 日本高清+成人网在线观看| 色yeye免费人成网站在线观看| 色婷婷久久一区二区| 青青青草网站免费视频在线观看| 欧美mv和日韩mv国产网站| 在线免费一级片| 色悠悠久久综合| 日韩av女优在线观看| 一区二区欧美在线观看| 91n在线视频| 日本一区二区三区在线观看| 人妻精品久久久久中文字幕| 成人精品高清在线| xxxxwww一片| 国产精品 欧美精品| 一级做a免费视频| 美女爽到高潮91| 玩弄japan白嫩少妇hd| 国产精品亚洲综合久久| 国产一区二区在线视频播放| 国产精品大片免费观看| 国产在线xxxx| 国产精品mv在线观看| 久久久成人精品一区二区三区| av一区二区在线播放| 女同一区二区| 久9久9色综合| 日韩精品一区二区三区色偷偷| 综合国产视频| 日韩视频专区| 日韩欧美在线中字| 中文字幕中文字幕一区三区| 91精品国产乱码久久久久久久| 国产精品久久成人免费观看| 一区二区国产在线| 99热这里只有精品免费| 好看的av在线不卡观看| 少妇一晚三次一区二区三区| 在线日本成人| 黄色片一级视频| 日日夜夜免费精品| 国产成年人视频网站| 国产尤物一区二区在线 | 国产ts人妖一区二区| 无码国产精品久久一区免费| 成人久久18免费网站麻豆| 先锋资源av在线| 国产欧美日韩在线| 男人天堂资源网| 一区二区免费看| 成人精品在线看| 欧美日韩一二三| 99国产精品欲| 亚洲精品福利在线观看| 国模吧精品人体gogo| 久久亚洲精品一区| 国产91足控脚交在线观看| 国产不卡av在线| 99精品在线免费观看| 国产女人水真多18毛片18精品| 久草精品在线| 青草全福视在线| 99这里有精品| 日本 片 成人 在线| 国产高清精品在线| 国产精品815.cc红桃| 17c精品麻豆一区二区免费| 日本少妇xxxx动漫| 在线免费不卡视频| 亚洲第一色视频| 夜夜嗨av色一区二区不卡| www免费在线观看| 日本91av在线播放| 日韩激情综合| 奇米精品在线| 精品动漫一区| av亚洲天堂网| 2021国产精品久久精品| 亚洲精品自拍视频在线观看| 亚洲成人av免费| 92久久精品一区二区| 日韩电影免费在线观看中文字幕 | 国产suv精品一区二区69| 亚洲精品ady| 久久99精品久久久久久野外| 欧日韩不卡在线视频| 日韩在线亚洲| 亚洲乱码一区二区三区| 99av国产精品欲麻豆| 在线免费观看av网| 国产嫩草影院久久久久| 精品欧美一区二区三区免费观看| 欧美精品视频www在线观看| 欧美18xxxxx| 欧美精品电影免费在线观看| 欧美成人三级| 日韩av在线一区二区三区| 亚洲美女黄网| 国产精品91av| 亚洲人午夜精品天堂一二香蕉| 少妇一级淫片日本| 亚洲精品98久久久久久中文字幕| 1stkiss在线漫画| 成人午夜小视频| 国产一区二区三区四区二区| 欧美视频在线播放一区| www.亚洲在线| 国产精品30p| 欧美大片在线观看一区二区| 免费av在线| 国产精选久久久久久| 欧美特黄一级大片| 热久久精品国产| 久久理论电影网| 六月丁香在线视频| 亚洲激情国产精品| 爱啪啪综合导航| 成人在线观看网址| 亚洲午夜伦理| wwwxx日本| 性欧美疯狂xxxxbbbb| 动漫av一区二区三区| 欧美二区乱c黑人| 中文久久电影小说| 国产freexxxx性播放麻豆| 国产xxx精品视频大全| 久久9999久久免费精品国产| 精品国产亚洲一区二区三区在线观看| 欧美家庭影院| 国产精品加勒比| 国产日韩欧美三区| 中文字幕av观看| 色香蕉成人二区免费| 国产有码在线| 国产在线观看精品| 欧美粗暴jizz性欧美20| 中文字幕视频观看| 精品久久久视频| 国产午夜精品一区理论片| 国产精品一区二区三区久久久| 日韩午夜电影网| 欧美性猛交xx| 亚洲国产日韩综合久久精品| 头脑特工队2在线播放| 国产精品福利网| 日韩在线观看电影完整版高清免费悬疑悬疑| 日本人视频jizz页码69| 国产精品理论片在线观看| 国产精品呻吟久久| 欧美黄色片在线观看| 蜜桃视频欧美| 亚洲美女爱爱视频| 亚洲国产视频在线| 欧美日本韩国一区二区| 国产日韩欧美视频| 亚洲一级高清| 在线观看福利片| 91精品国产福利| 久草在线资源福利站| 亚洲mv在线看| 国产宾馆实践打屁股91| 福利网址在线观看| 久久伊人精品视频| 欧美jizz19性欧美| www.日本一区| 亚洲国产一区视频| 成人在线免费视频| 亚洲一区二区在线播放| 销魂美女一区二区三区视频在线| 青青青视频在线播放| 亚洲国产精品大全| 四虎国产精品免费久久5151| 欧美日韩性生活片| 成人免费在线观看入口| 婷婷综合激情网| 成人天堂噜噜噜| 美女尤物久久精品| 久久伊人成人网| 色综合伊人色综合网| 老司机成人在线|