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

數據庫連接池爆滿如何排查

數據庫 MySQL
連接池的使用雖然可以帶來很大程度上性能的話優化,但是在使用MySQL數據庫時,尤其是在高并發的場景下,數據庫連接數過多會導致連接池耗盡,進而影響應用程序的正常運行。

1. 什么是連接池

現如今在做程序開發的時候,尤其是涉及到數據庫的時候,都會用連接池來管理數據庫連接。其中Java里面有比較出名Druid,以Go語言里面的Gorm框架也會自帶連接池管理。數據庫連接池,其實就是存儲數據庫連接的池子,本質是一種資源復用技術。

2. 為什么要使用連接池

使用連接池的核心目的是提升應用程序的性能和效率。建立和關閉數據庫連接的過程通常是非常消耗資源的,尤其是在高并發環境或頻繁訪問數據庫的場景中,這開銷會對應用性能造成顯著的負面影響通過連接池,應用程序可以重復利用已有的數據庫連接,減少了每次連接建立和銷毀的開銷,從而加快系統的響應速度和提高了系統的吞吐能力。同時,連接池還能對連接數量進行有效管理,防止因連接過多而導致數據庫過載或性能下降的問題,從而保證系統運行的穩定性和資源的合理利用。

3. 連接池常見參數

參數

含義

max-active

最大連接數(默認8)

max-wait

獲取連接時的最大等待時間

min-evictable-idle-time-millis

連接保持空閑而不被釋放的最小時間

min-idle

最小連接池數量

initial-size

連接池初始化時建立物理連接的個數

time-between-eviction-runs-millis

配置間隔多久才進行一次檢測,Destroy線程會檢測連接,如果連接空閑時間大于等于minEvictableIdleTimeMillis則關閉物理連接

4. 連接池爆滿排查路徑

連接池的使用雖然可以帶來很大程度上性能的話優化,但是在使用MySQL數據庫時,尤其是在高并發的場景下,數據庫連接數過多會導致連接池耗盡,進而影響應用程序的正常運行。所以對于數據庫連接池爆滿問題的排查,也相當重要,在排查這類問題的時候可以按照下圖的總體思路來進行。

5. 案例分析

(1) 數據模擬

現有一張用戶表t_user,要對這張表的數據做一些查詢操作,表結構如下:

CREATE TABLE `t_user` (
    `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主鍵自增',
    `name` varchar(32) NOT NULL DEFAULT '' COMMENT '姓名',
    `create_time` varchar(32) NOT NULL DEFAULT '' COMMENT '創建日期,yyyy-MM-dd HH:mm:ss',
    `age` int(4) NOT NULL DEFAULT 0 COMMENT '年齡',
    PRIMARY KEY (`id`)
) ENGINE = InnoDB CHARSET = utf8;

插入兩條記錄:

insert into t_user (name,age,create_time) values ("zhangsan",18,"2024-11-20 12:07:46");
insert into t_user (name,age,create_time) values ("zlisi",20,"2024-11-20 12:07:46");

結果如下:

(2) 工程模擬

假設現在有一個spring boot的web工程connPoolDemo,提供了兩個查詢接口,分別是根據ID查詢用戶全體信息以及根據ID查詢用戶的姓名。spring boot工程使用的連接池是Druid,工程配置application.yml如下:

server:
  port: 8080
spring:
  application:
    name: @artifactId@
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:8086/camps?serverTimeznotallow=GMT%2B8&characterEncoding=utf8&&allowMultiQueries=true&useSSL=false
    username: root
    password: 123456
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      web-stat-filter:
        # 是否啟用StatFilter默認值true
        enabled: true
        # 添加過濾規則
        url-pattern: /*
        # 忽略過濾的格式
        exclusions: /druid/*,*.js,*.gif,*.jpg,*.png,*.css,*.ico
      stat-view-servlet:
        # 是否啟用StatViewServlet默認值true
        enabled: true
        # 訪問路徑為/druid時,跳轉到StatViewServlet
        url-pattern: /druid/*
        # 是否能夠重置數據
        reset-enable: false
        # 需要賬號密碼才能訪問控制臺,默認為root
        login-username: druid
        login-password: druid
        # IP白名單
        allow: 127.0.0.1
        # IP黑名單(共同存在時,deny優先于allow)
      min-idle: 1                                          # 最小連接數
      max-active: 2                                        # 最大連接數(默認8)
      max-wait: 1000                                       # 獲取連接時的最大等待時間
      min-evictable-idle-time-millis: 300000               # 一個連接在池中最小生存的時間,單位是毫秒
      time-between-eviction-runs-millis: 60000             # 多久才進行一次檢測需要關閉的空閑連接,單位是毫秒
      connect-timeout: 10000    # 默認是10s
      socket-timeout: 1100000   # 默認是10s

mybatis:
  mapper-locations: classpath:mapper/*.xml
#開啟駝峰命名
  configuration:
    map-underscore-to-camel-case: false
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

注意需要把上述配置中的這兩個配置connect-timeout和socket-timeout配置大一些,因為jdbc會根據這兩個配置來進行發包測試,默認是10s,如果超過10s,連接沒有響應,就會強行斷開連接。后面會模擬一個長連接占用的情況來占滿連接池,所以這里需要把這兩個參數設置的大一些。另外為了方便測試,我們把最大連接數配置小一點,上述yml文件中最大連接數max-active配置為2。

(3) 模擬長連接占用

connPoolDemo對外提供兩個接口,工程的controller代碼如下:

package com.camps.connpooldemo.controller;

import com.camps.connpooldemo.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.camps.connpooldemo.service.impl.ConnPoolServiceImpl;

@RestController
public class ConnPoolController {
    // 示例:使用 HikariCP 作為連接池
    @Autowired
    private ConnPoolServiceImpl connPoolServiceImpl;

    @GetMapping("/getUser")
    public User getUser(@RequestParam("id") Long userID) {
        return connPoolServiceImpl.getUser(userID);
    }

    @GetMapping("/getName")
    public String getName(@RequestParam("id") Long userID) {
        return connPoolServiceImpl.getName(userID);
    }
}

都是提供get請求,一個是通過ID獲取用戶全量信息,一個是通ID獲取用戶名。再來看對應的mapper代碼:

<?xml versinotallow="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.camps.connpooldemo.mapper.UserMapper">
    <resultMap id="userMap"type="com.camps.connpooldemo.model.User">
        <result column="id" property="id"/>
        <result column="name" property="name"/>
        <result column="age" property="age"/>
        <result column="sleep_time" property="sleepTime"/>
        <result column="create_time" property="createTime"/>
    </resultMap>

    <sql id="Vo_Column_List">
        `id`,
        `name`,
        `age`,
        `sleep_time`,
        `create_time`
    </sql>


    <select id="getUser" resultType="com.camps.connpooldemo.model.User" resultMap="userMap">
        select * from t_user where id = #{id} limit 1;
    </select>

    <select id="getName" resultType="com.camps.connpooldemo.model.User" resultMap="userMap">
        select sleep(60) as sleep_time,name from t_user where id = #{id} limit 1;
    </select>

</mapper>

注意在mapper.xml中,根據用戶ID來獲取用戶名的sql,select sleep(60),name from t_user where id = #{id} limit 1;在這條sql又一個sleep(60),讓這次查詢延遲60s執行。用這個延遲執行來模擬后臺的一些長連接占用情況,以致連接被長期占用,短時間內無法釋放。

(4) 請求測試

啟動服務,服務啟動成功,控制臺如下:

由于我們使用的是Druid,并且在application.yml文件中配置了Druid的可視化信息,所以我們可以通過頁面的形式來查看我們的連接情況,訪問如下地址登陸:http://localhost:8080/druid/login.html,先登錄。

登陸的用戶名和密碼就是我們在上述application.yml文件中配置的druid的用戶名和密碼:;

登陸之后點擊上面的數據源頁簽可以看到數據源的地址,連接等信息,這里我們重點關注連接信息:

可以看到最大連接數以及最小空閑連接數跟我們在application.yml配置的都是一樣的。

模擬請求:

在瀏覽器開兩個頁簽同時訪問http://localhost:8080/getName?id=1這個地址,即發起兩次獲取用戶名的請求。

可以看到這兩個頁面都處于等待轉圈等待的情況,因為獲取姓名這個請求在后臺在Mysql執行查詢的時候需要延遲60s在執行,會處于等待狀態同時瀏覽器打開第三個頁簽發起獲取用戶信息的請求:http://localhost:8080/getUser?id=1,可以看到頁面直接報錯。

等待60s之后,前兩個請求用戶名的請求此時返回了數據zhangsan,如下圖所示:

(5) 連接池爆滿現象識別

看后臺程序,控制臺報錯如下:

獲取連接池超時,可以初步斷定問題為連接池滿了,獲取不到連接所致。

(6) 根因分析

進一步分析sql情況,查看當前數據庫連接的session情況,數據庫執行以命令:

show processlist;

可以看到當前兩條連接,都是執行的查詢操作,并且分別執行了45s和41s都是屬于慢查詢,再結合前面啟動服務時我們在頁面觀測到的當前服務配置的最大連接數是2,所以這兩個慢查詢就將連接池里的連接用完了,并且短時間內不會釋放,所以在第三個請求查詢用戶全量信息的發起的時候,會獲取不到連接,報了獲取連接超時錯誤。

(7) 方案優化

從上面的分析我們就知道了報錯的根本原因就是連接池連接耗盡導致的。而且連接池的最大連接數配置的是2,很小,這樣優化起來就很好做了,我們增大連接池的連接配置,重啟服務再次測試,現連接調整為100,配置完重啟可以看到線上顯示druid的連接池最大連接已經是100了:

接下來,再次重復上面的測試,在兩個頁簽中發起獲取用戶名的請求:http://localhost:8080/getName?id=1,在第三個頁簽中發起獲取用戶全量信息的請求:http://localhost:8080/getUser?id=1。此時可以看到前兩個頁面跟上次測試結果一樣,依舊是在等待:

而第三個頁面馬上返回了用戶信息,結果如下:

過一分鐘后前兩個頁面也會收到返回信息:zhagnsan,跟上次測試一樣。雖然這里通過調大數據庫連接池的配置參數,使問題得到了初步的解決。這里可以進一步分析,通過前面執行show processlist;查看數據庫連接信息的時候,我們發現兩條sql長時間占用連接,導致連接不能有效釋放,使得連接池被占滿,導致第三個請求才一直獲取不到連接而報錯,所以這里的這兩條sql也是需要優化的,具體分析show processlist的結果,初步看后面的sql語句。

再去代碼中確認,看下獲取用戶名請求對應的db曾操作,查看mapper.xml在select語句執行有個sleep(60)的操作,所以這里很明顯會慢,導致延遲60s后才會執行查詢操作。所以把這個地方去掉就可以了。這里只是個demo,為了展示連接池如何優化來做的,到具體的業務場景下,這里的慢sql分析還需要借助explain分析工具來進行分析。再去代碼中確認,看下獲取用戶名請求對應的db曾操作,查看mapper.xml。

確實在查詢的時候,有一個sleep的操作,去掉這個sleep(60)后,mapper.xml文件如下:

<?xml versinotallow="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.camps.connpooldemo.mapper.UserMapper">
    <resultMap id="userMap"type="com.camps.connpooldemo.model.User">
        <result column="id" property="id"/>
        <result column="name" property="name"/>
        <result column="age" property="age"/>
        <result column="sleep_time" property="sleepTime"/>
        <result column="create_time" property="createTime"/>
    </resultMap>

    <sql id="Vo_Column_List">
        `id`,
        `name`,
        `age`,
        `sleep_time`,
        `create_time`
    </sql>


    <select id="getUser" resultType="com.camps.connpooldemo.model.User" resultMap="userMap">
        select * from t_user where id = #{id} limit 1;
    </select>

    <select id="getName" resultType="com.camps.connpooldemo.model.User" resultMap="userMap">
        select name from t_user where id = #{id} limit 1;
    </select>

</mapper>

重啟服務再次進行測試,前兩個頁面發起請求后可以立刻獲得返回數據zhangsan,第三個頁發起請求也可以馬上獲得用戶的全量信息。

6. 小結

數據庫連接池是現在后端開發中必然會使用的一項池化技術,主要是通過對數據庫的連接進行管理和復用,以此來減少頻繁的連接創建,從而減少不必要的性能消耗。但是隨著并發量的提高,連接池在使用上也很容易出現一些問題,最常見的就是連接耗盡,導致請求獲取不到連接而報錯。所以掌握好數據庫連接池問題的排查是非常有必要的,同時我們還應當做好數據庫的一些性能監控,這樣對于連接的使用情況就能比較清晰的觀測到,這樣在要出現問題的時候就會發出告警,從而可以進行及時干預,避免出現線上問題。

責任編輯:趙寧寧 來源: IT楊秀才
相關推薦

2009-06-24 07:53:47

Hibernate數據

2021-08-12 06:52:01

.NET數據庫連接池

2010-03-18 15:09:15

python數據庫連接

2011-07-29 15:11:42

WeblogicOracle數據庫連接

2017-06-22 14:13:07

PythonMySQLpymysqlpool

2019-11-27 10:31:51

數據庫連接池內存

2009-06-16 09:25:31

JBoss配置

2009-06-15 13:46:00

netbeans設置數據庫連接池

2020-04-30 14:38:51

數據庫連接池線程

2018-10-10 14:27:34

數據庫連接池MySQL

2019-12-30 15:30:13

連接池請求PHP

2024-01-10 08:17:50

HikariCP數據庫Spring

2018-01-03 14:32:32

2009-07-17 13:32:49

JDBC數據庫

2009-07-29 09:33:14

ASP.NET數據庫連

2011-05-19 09:53:33

數據庫連接池

2025-01-16 10:30:49

2010-03-18 14:55:17

Python數據庫連接

2009-01-15 09:02:27

JMXJBossJMX監控

2009-07-03 17:37:54

JSP數據庫
點贊
收藏

51CTO技術棧公眾號

午夜精品视频网站| 一本色道**综合亚洲精品蜜桃冫| 成人欧美在线观看| 久久久久久欧美精品se一二三四| 林ゆな中文字幕一区二区| 亚洲成人久久影院| 日本精品一区二区三区不卡无字幕| 成人黄色片在线观看| 你懂的视频一区二区| 日韩成人小视频| 国产精品第12页| 黄色片网站在线| 99精品视频中文字幕| 国产精品影院在线观看| 免费在线观看日韩| 日韩不卡一区| 亚洲精品国产精品乱码不99按摩 | 懂色中文一区二区三区在线视频| 久久午夜免费视频| 91精品啪在线观看国产81旧版| 亚洲国产精品成人va在线观看| 色吊一区二区三区| 国产精品福利观看| www.youjizz.com亚洲| 区一区二视频| 日韩激情片免费| 日本wwww色| 国产精品久久久久久吹潮| 精品系列免费在线观看| 78色国产精品| 国产亚洲色婷婷久久99精品| 水蜜桃精品av一区二区| 亚洲免费人成在线视频观看| 第一页在线视频| 亚洲欧洲二区| 欧美性做爰猛烈叫床潮| 久久婷婷五月综合色国产香蕉| 影音先锋在线视频| 亚洲欧美综合网| 五月天综合网| 东热在线免费视频| 加勒比色综合久久久久久久久 | 成人a v视频| 亚洲精品黄色| 久久久久久久一区二区| 青草影院在线观看| 午夜精品一区二区三区国产| 一区二区欧美亚洲| 67194成人在线观看| 91精品国产一区二区三区动漫| 欧美日韩综合一区二区三区| 99热在线精品观看| 97视频在线播放| 国产 欧美 日韩 在线| 极品av少妇一区二区| 91精品国产综合久久久蜜臀图片| 成年人小视频网站| 粉嫩一区二区三区| 在线看国产一区| 91激情视频在线| 久久精品资源| 欧美精选一区二区| 91性高潮久久久久久久| 日韩精品久久久久久久软件91| 欧美日韩aaaaaa| 99国产精品久久久久久| 182tv在线播放| 亚洲乱码日产精品bd| 中文字幕第50页| 亚洲无线看天堂av| 亚洲一区欧美一区| 波多野结衣家庭教师在线播放| 僵尸再翻生在线观看| 色综合久久88色综合天天| 可以免费在线看黄的网站| 123成人网| 555www色欧美视频| 国产a级片视频| 亚欧洲精品视频在线观看| 亚洲新中文字幕| 影音先锋男人资源在线观看| 一区二区三区在线观看免费| 久久久久久久色| 精人妻无码一区二区三区| 极品少妇xxxx精品少妇| 99久久综合狠狠综合久久止| 天天色综合久久| 欧美激情一二三区| 国产又粗又猛又爽又黄的网站| 亚洲国产精一区二区三区性色| 日韩香蕉视频| 国产精品美女免费视频| 精品人妻一区二区三区四区不卡| 99精品视频一区| 亚洲欧美久久久久一区二区三区| 在线观看电影av| 色欲综合视频天天天| 五月天丁香花婷婷| 特黄特色欧美大片| 日韩视频在线免费| 日本在线播放视频| 九九国产精品视频| 国产伦精品一区二区三区照片91| 福利成人在线观看| 亚洲图片自拍偷拍| 日本人视频jizz页码69| 波多野结衣欧美| 丝袜情趣国产精品| 中文字幕一区二区三区精品| 久久99热99| 免费国产在线精品一区二区三区| 国产成人高清精品| 在线亚洲高清视频| 国产麻豆剧传媒精品国产av| 久久密一区二区三区| 2018中文字幕一区二区三区| 99热这里只有精品3| 国产亚洲精品久| 亚洲国产精品成人天堂| 中文字幕综合| 国产一区二区三区丝袜| 日韩欧美亚洲一区二区三区| 久久 天天综合| 欧美凹凸一区二区三区视频| 欧美一卡二卡| 欧美日韩一区二区三区在线看| 亚洲一区二区三区四区五区六区| 中文字幕一区二区三区在线视频 | 成人午夜免费在线视频| 亚洲二区av| 国产一区二区三区在线视频| 国产成人无码一区二区三区在线| 国产99一区视频免费| youjizz.com亚洲| 精品美女一区| 中文字幕国产日韩| 一级黄色在线观看| 久久久精品天堂| 日韩欧美国产免费| 精品国产一区二区三区成人影院 | 国产成人在线播放视频| 国产风韵犹存在线视精品| 91手机视频在线| 日韩成人在线电影| 丝袜情趣国产精品| 一区二区三区亚洲视频| 中文字幕高清一区| 婷婷免费在线观看| 日韩国产专区| 91精品国产自产在线老师啪| 快射视频在线观看| 欧美精品丝袜久久久中文字幕| 亚洲黄色网址大全| 免费在线观看不卡| 一区二区三区四区五区精品| 亚洲狼人综合| 欧美国产日韩一区二区三区| 精品久久久免费视频| 一区二区三区美女视频| 风韵丰满熟妇啪啪区老熟熟女| 国产精品啊啊啊| 国产亚洲一区二区三区在线播放| 成人ssswww在线播放| 日韩电影第一页| 9i精品福利一区二区三区| 久久亚洲综合色| 国产精品人人爽人人爽| 久久激情电影| 亚洲综合色激情五月| 免费男女羞羞的视频网站在线观看| 欧美mv和日韩mv国产网站| 日韩成人一区二区三区| 91麻豆高清视频| 国产精品视频分类| 中文字幕乱码亚洲无线精品一区 | 风流少妇一区二区三区91| 亚洲国产日韩av| 法国伦理少妇愉情| 理论电影国产精品| 国产乱子伦精品视频| 日本韩国欧美超级黄在线观看| 国产成人久久久| 国产日产一区二区| 亚洲精品第一页| 亚洲永久精品一区| 一区二区三区四区乱视频| 黄色av网址在线观看| 日韩成人精品在线| 成人av在线播放观看| 日韩中出av| 亚洲伊人久久综合| 这里有精品可以观看| 北条麻妃久久精品| 亚洲AV成人无码一二三区在线| 欧美日韩一级视频| av资源吧首页| 亚洲视频1区2区| 精品人妻一区二区三区视频| 激情文学综合丁香| 久久无码高潮喷水| 亚洲精品网址| 日本不卡一区二区三区视频| 日韩在线网址| 国产精品女人久久久久久| 久草在线资源站资源站| 在线电影中文日韩| 深爱五月激情五月| 欧美一区二区网站| 69av视频在线观看| 婷婷久久综合九色国产成人 | 国产精品亚洲视频在线观看| heyzo高清在线| 久久久国产一区| 国产鲁鲁视频在线观看免费| 亚洲国产成人久久| 国产成人三级一区二区在线观看一| 欧美午夜xxx| 国产在线成人精品午夜| 国产精品久久久久婷婷| 日本黄色特级片| caoporm超碰国产精品| 国产美女视频免费看| 日韩在线一二三区| www.玖玖玖| 99精品国产在热久久| 蜜桃网站在线观看| 久久久久免费av| 亚洲砖区区免费| 欧美精品一区二区三区中文字幕| 精品欧美日韩| 国产精品x8x8一区二区| 99在线首页视频| 婷婷综合国产| 99久久免费国| 亚洲视频一起| 国产**成人网毛片九色 | 黄色成人在线看| 亚洲一区色图| 欧美做受777cos| 999国产精品| 最新不卡av| 久久性感美女视频| 亚洲在线欧美| 羞羞答答成人影院www| 一区一区视频| 一区二区三区午夜探花| 99热都是精品| 午夜欧美精品久久久久久久| 免费在线精品视频| 中文字幕一区二区av| 国产小视频免费| 亚洲伦伦在线| 青青青在线播放| 视频一区二区不卡| 日本特黄a级片| 激情深爱一区二区| 女同性αv亚洲女同志| 成人美女在线观看| 国产中文字幕一区二区| 91麻豆国产在线观看| a天堂中文字幕| 国产精品精品国产色婷婷| 欧美三级黄色大片| 亚洲亚洲人成综合网络| 日韩免费视频网站| 在线视频国内自拍亚洲视频| 一级片一区二区三区| 日韩三级视频在线观看| 亚洲人妻一区二区三区| 亚洲视频免费一区| 在线国产91| 欧美激情视频网站| 在线天堂资源| 国产主播精品在线| 99ri日韩精品视频| 蜜桃麻豆91| 亚洲午夜精品一区 二区 三区| 欧美乱做爰xxxⅹ久久久| 一区二区高清| 亚洲综合欧美激情| 风流少妇一区二区| 国产美女喷水视频| 亚洲视频综合在线| www.天天色| 欧美日韩精品三区| 成人免费视频国产免费麻豆| 亚洲人成网站免费播放| av在线免费网址| 浅井舞香一区二区| av在线播放一区二区| 精品欧美一区二区久久久伦| 日韩啪啪电影网| 亚洲熟妇无码另类久久久| 蜜臀av性久久久久蜜臀aⅴ四虎| www.se五月| 99国产精品国产精品久久| 熟女少妇a性色生活片毛片| 亚洲高清视频中文字幕| 中文字幕第三页| 亚洲电影天堂av| 国产视频一区二区| 国产精品久久久久久影视| 国产精品1luya在线播放| 亚洲国产精品毛片| 一区二区毛片| 日韩精品xxx| 欧美国产激情二区三区| 亚洲欧美在线视频免费| 日韩午夜在线影院| av网在线观看| 777777777亚洲妇女| 久久久久毛片免费观看| 色姑娘综合网| 老鸭窝亚洲一区二区三区| 日本50路肥熟bbw| 中文字幕一区二区三区在线观看| 国产精品久久久久久久久久久久久久久久久 | 亚洲国产欧美另类| 日韩视频在线免费| 91久久久久久白丝白浆欲热蜜臀| 国产精品久久久久久久久婷婷 | 久久综合色88| 成人一级视频| 日韩videos| 美女精品在线| 黄色录像a级片| 亚洲一区在线观看网站| 一区二区日韩视频| 最近2019年手机中文字幕 | 在线精品一区二区| 日本少妇激三级做爰在线| 国产精品毛片a∨一区二区三区| 一区二区三区在线观看av| 日韩av一卡二卡| av漫画网站在线观看| 国产精品区一区| 亚洲小说欧美另类婷婷| 深夜视频在线观看| 亚洲综合自拍偷拍| 亚洲高清视频网站| 欧美日韩xxx| 97视频一区| 2019日韩中文字幕mv| 国产成人鲁色资源国产91色综| 91插插插插插插| 日韩丝袜情趣美女图片| caoporn免费在线| 99视频免费观看| 一区二区亚洲| 亚洲AV无码国产精品| 一本大道久久a久久综合| 久久电影中文字幕| 国产精品xxx视频| 93在线视频精品免费观看| 亚洲理论中文字幕| 亚洲精品欧美激情| 人妻少妇精品无码专区| 2023亚洲男人天堂| 视频国产一区| 污视频网站观看| 一区二区三区在线播放| 天天操天天操天天| 国产成人久久久| 国产精品国产三级国产在线观看| 欧洲美女亚洲激情| 亚洲大型综合色站| 欧美另类自拍| 国产日韩欧美电影在线观看| 综合一区二区三区| 在线黄色免费网站| 在线一区二区三区四区五区| 免费av不卡| 国产精品麻豆免费版| 久久久夜精品| 日韩福利小视频| 日韩电影免费观看中文字幕| 色香欲www7777综合网| 国产又爽又黄ai换脸| 成人精品亚洲人成在线| 精产国品一区二区| 久久精品视频99| 色天天色综合| 日本888xxxx| 亚洲国产一区二区在线播放| 久蕉在线视频| 粉嫩高清一区二区三区精品视频| 午夜在线一区二区| 婷婷久久综合网| 国产网站欧美日韩免费精品在线观看 | 夜夜夜精品看看| 蜜桃视频在线观看网站| 91综合免费在线| 欧美一区=区| 五月天激情丁香| 亚洲人成在线观看| 成人在线视频中文字幕| 91香蕉视频导航| 欧美视频在线观看免费网址| 黄色网在线免费看| 日韩精品不卡|