精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

中文字幕日韩久久| 中文字幕一区综合| 这里只有精品国产| 综合激情一区| 亚洲剧情一区二区| 亚洲欧美日韩一二三区| 国产免费拔擦拔擦8x高清在线人 | 2022国产精品| youjizz在线视频| 在线中文一区| 亚洲日韩中文字幕在线播放| 国产资源中文字幕| 欧洲亚洲两性| 亚洲国产精品综合小说图片区| 日本一区二区三区视频在线观看 | 国产不卡在线视频| 欧洲成人免费视频| 免费在线黄色网| 国内精品久久久久久久影视简单| 精品国产亚洲在线| 91 在线视频观看| 精品3atv在线视频| 亚洲一级二级三级在线免费观看| 亚洲精品无人区| 天堂中文在线观看视频| 国产一区二区女| 国产精品极品美女在线观看免费 | 午夜欧美性电影| 欧美一级性视频| 国产精品正在播放| 成人久久久久爱| 亚洲永久精品一区| 免费日韩精品中文字幕视频在线| 欧美大片欧美激情性色a∨久久| 国产av自拍一区| 欧美网色网址| 精品va天堂亚洲国产| 九九九九九九九九| 欧美aaa级| 欧美日韩在线三级| 99热一区二区| 欧美va视频| 欧日韩精品视频| 久久精品香蕉视频| 欧美大胆成人| 色婷婷激情综合| 少妇性饥渴无码a区免费| 激情黄产视频在线免费观看| 夜夜嗨av一区二区三区中文字幕| 水蜜桃在线免费观看| а√天堂资源地址在线下载| 中文字幕欧美一| 在线天堂一区av电影| 午夜激情视频在线观看| 中文字幕在线观看不卡视频| 中文字幕欧美日韩一区二区三区| 麻豆免费在线视频| 综合久久国产九一剧情麻豆| 日韩国产精品毛片| 在线中文字幕视频观看| 一区二区三区视频在线看| 精品人妻人人做人人爽| 92久久精品| 欧美日韩另类视频| 99草草国产熟女视频在线| 国产另类xxxxhd高清| 欧美综合久久久| 亚洲精品永久视频| 视频一区日韩精品| 亚洲第一中文字幕在线观看| 亚洲国产精品无码久久久久高潮| 久久99视频| 中文字幕日韩欧美| 国产波霸爆乳一区二区| 中文精品在线| 国产成人在线精品| 国产尤物在线观看| 高清国产一区二区| 欧美少妇一区| 麻豆系列在线观看| 亚洲成人免费av| 99蜜桃臀久久久欧美精品网站| 粉嫩一区二区| 欧美日韩高清在线播放| 中国xxxx性xxxx产国| 国内精品伊人久久久| 久久精品中文字幕电影| 国产乡下妇女做爰| 美日韩一区二区三区| 亚洲一区二区三区在线免费观看| 色久视频在线播放| 国产精品久久久爽爽爽麻豆色哟哟| 97超碰在线视| 日韩毛片免费观看| 日韩一区二区麻豆国产| 一区二区伦理片| 亚洲欧美一级二级三级| 国产91亚洲精品| 99久久精品免费看国产交换| 久久精品人人做| 第九区2中文字幕| 搜成人激情视频| 亚洲第一精品夜夜躁人人躁| 在线视频这里只有精品| 国产精品美女久久久| 亚洲专区在线视频| 免费一级在线观看| 亚洲制服丝袜av| 久久撸在线视频| 日韩伦理一区二区三区| 久久成人av网站| 中文字幕 日韩有码| 91视频国产资源| 久久av秘一区二区三区| 成人日韩在线观看| 国产婷婷成人久久av免费高清| 日韩一级片av| 麻豆91精品视频| 久久99欧美| 国内高清免费在线视频| 欧美日本韩国一区二区三区视频| 深爱五月激情网| 亚洲成人原创| 99r国产精品视频| 在线毛片网站| 欧美综合一区二区| 国产精品无码久久久久一区二区| 在线成人欧美| 成人精品水蜜桃| 国产原创视频在线观看| 欧美日韩在线播放| 国产调教在线观看| 久久亚洲图片| 欧美日韩成人一区二区三区 | 亚洲成人午夜电影| 三大队在线观看| 911久久香蕉国产线看观看| 国产欧美一区二区三区在线| 国产成人天天5g影院在线观看 | 国产精品久久久久久69| 国产精品全国免费观看高清| 日韩手机在线观看视频| 精品久久视频| 国产成人综合精品在线| 国产精品天堂| 欧美系列一区二区| 欧美三级视频网站| 青青草一区二区三区| 欧美综合77777色婷婷| 欧美性xxx| 色爱av美腿丝袜综合粉嫩av| 伊人精品在线视频| 中文字幕一区av| 中文字幕 欧美日韩| 亚洲蜜桃视频| 国产精品国色综合久久| 波多野结衣在线高清| 日韩av在线网| 无码人妻精品一区二区蜜桃色欲| 欧美国产一区二区| 黄色小视频免费网站| 亚洲精品国产成人影院| 国产精品青青草| 午夜影院在线播放| 国产亚洲成av人片在线观看桃| 日韩乱码一区二区三区| 国产精品久久综合| 日本黄色一级网站| 日韩一区二区免费看| 日本高清不卡三区| 久久亚洲精精品中文字幕| 久久免费视频在线| 国产在线91| 欧美一区二区啪啪| 国产午夜福利片| 国产欧美一区二区精品性色| 五月天丁香花婷婷| 国产欧美一区二区色老头| 日本一区二区三区免费看| 国产精品亚洲四区在线观看| 国产91成人video| 77导航福利在线| 欧美精品一区二区三区在线播放| 三级视频在线观看| 亚洲婷婷国产精品电影人久久| 中文字幕免费高清视频| 麻豆精品一区二区av白丝在线| 中文字幕超清在线免费观看| 欧美绝顶高潮抽搐喷水合集| 国产免费一区二区三区在线观看 | 91久久精品美女高潮| 黄色漫画在线免费看| 最新日韩中文字幕| 四虎永久在线精品免费网址| 欧美日韩一区高清| 天堂资源在线播放| 国产精品久久久久aaaa| 中文字幕人妻一区二区三区| 麻豆精品国产传媒mv男同| 黄色成人在线看| 久久高清精品| 欧美三级网色| 玖玖玖免费嫩草在线影院一区| 国产精品欧美亚洲777777| sis001亚洲原创区| 日韩在线一区二区三区免费视频| 亚洲aaa在线观看| 日韩欧美亚洲一区二区| 波多野结衣二区三区| 亚洲成人一区二区在线观看| 黄色a级片在线观看| 国产情人综合久久777777| 欧美xxxxx精品| 国产一区三区三区| 亚洲国产精品三区| 亚洲影视综合| 免费一级特黄毛片| 亚洲自拍偷拍网| 在线视频欧美一区| 不卡av一区二区| 九色91国产| 精品国产影院| 国产精品久久亚洲| 欧美激情精品| 91精品免费视频| 久久av影院| 国产精品成人观看视频国产奇米| 国产777精品精品热热热一区二区| 色综合天天综合网国产成人网| 三区四区在线视频| www.久久撸.com| 91激情在线| 日韩中文av在线| 五月天婷婷在线视频| 亚洲视频在线看| 国产精品一区在线看| 亚洲日韩欧美视频| 狠狠狠综合7777久夜色撩人| 亚洲人线精品午夜| 成年人在线视频免费观看| 一区二区在线免费视频| 草草影院在线观看| 在线播放国产一区二区三区| 国产三级电影在线观看| 一区二区三区国产视频| 国产大片在线免费观看| 正在播放国产一区| 亚洲视频tv| 久久综合电影一区| 欧美另类tv| 国产69精品久久久久9999| 538视频在线| 奇米成人av国产一区二区三区| 少妇视频在线观看| 日韩免费av在线| 国产成人精品一区二区三区视频| 国产日韩欧美另类| 日韩欧美中文字幕一区二区三区| 粉嫩av四季av绯色av第一区| 精品素人av| 免费国产在线精品一区二区三区| 精品日产免费二区日产免费二区| 水蜜桃一区二区三区| 久久久久电影| 国产免费一区二区视频| 国产日韩欧美在线播放不卡| 一区二区在线播放视频| 九九视频精品免费| 农村末发育av片一区二区| 91亚洲永久精品| 国产精品情侣呻吟对白视频| 亚洲乱码精品一二三四区日韩在线| 久久网中文字幕| 色婷婷综合五月| 91麻豆国产在线| 精品国产电影一区二区| 国产中文在线观看| 久久精品一区中文字幕| 国内激情视频在线观看| 国产精品丝袜久久久久久高清| 亚洲日本va| 欧美精品一区在线发布| 亚洲第一天堂| 国内外成人激情视频| 久久精品国产精品青草| 91成人在线观看喷潮蘑菇| 欧美经典三级视频一区二区三区| 日韩女优一区二区| 在线免费亚洲电影| 国产后入清纯学生妹| 亚洲午夜精品视频| 男女羞羞视频在线观看| 国产精品美女久久久免费| 91精品短视频| 亚洲精品中文字幕在线| 亚洲国产免费| 日本在线观看视频一区| 久久午夜老司机| 校园春色 亚洲| 欧美色男人天堂| 视频一区 中文字幕| 两个人的视频www国产精品| 亚洲www.| 国内一区二区在线视频观看| 亚洲精品极品少妇16p| 色七七在线观看| av在线不卡免费看| 青娱乐免费在线视频| 欧美日韩黄色一区二区| 色在线免费视频| 97在线视频免费播放| 国内精品视频| 亚洲欧美日韩不卡一区二区三区| 国产美女精品| 91人妻一区二区| 亚洲三级在线观看| 中文在线最新版天堂| 亚洲欧美精品在线| 黄视频免费在线看| 国产精品一区二区三区四区五区| 一区二区不卡| 亚洲综合激情视频| 国产精品美日韩| 日韩国产成人在线| 国产亚洲a∨片在线观看| 东京一区二区| 欧美亚州在线观看| 奶水喷射视频一区| 男男做爰猛烈叫床爽爽小说| 亚洲国产精品久久久男人的天堂| 国产视频第一页| 欧美成人精品三级在线观看| 先锋影音网一区二区| 在线不卡视频一区二区| 久久福利视频一区二区| 91香蕉视频污在线观看| 7799精品视频| 国产在线激情| 亚洲xxxx视频| 黄色一区二区三区四区| 国产成人精品一区二区在线小狼| 一区二区三区在线免费视频| 国产乱码一区二区| 欧美乱大交xxxxx另类电影| 亚洲精品国产九九九| 丁香色欲久久久久久综合网| 国产69精品久久久久毛片 | 在线观看日韩国产| 国产中文字幕在线观看| 国产精品稀缺呦系列在线| 欧美gayvideo| 欧美一级视频在线| 亚洲美女区一区| 欧美在线 | 亚洲| 91精品国产乱码久久久久久久久| 亚洲裸色大胆大尺寸艺术写真| 无码人妻丰满熟妇区毛片18| 国产区在线观看成人精品| 一级全黄少妇性色生活片| 久久视频免费在线播放| 91麻豆精品激情在线观看最新| 日本一道本久久| 久久综合九色欧美综合狠狠| 在线观看色网站| 欧美理论电影在线观看| 狠狠一区二区三区| 日本成人黄色网| 亚洲人成影院在线观看| 姝姝窝人体www聚色窝| 国产成人综合精品| 中文字幕免费精品| 波多野结衣一二三区| 91黄色激情网站| www红色一片_亚洲成a人片在线观看_| a级国产乱理论片在线观看99| 国产精品毛片在线| av最新在线观看| 精品对白一区国产伦| 日韩精品影片| 黄黄视频在线观看| 久久免费美女视频| 国产欧美综合视频| 欧美在线免费看| 91日韩欧美| 在线免费播放av| 欧美日韩视频专区在线播放| 精品一性一色一乱农村| 日韩资源av在线| 福利一区二区在线| 国产精品第6页| 午夜精品一区二区三区在线视频| 成人一区而且| 亚洲精品女人久久久| 欧美日韩美女一区二区| 欧洲一区精品| 97免费视频观看| 亚洲欧洲日韩av| 国产精品99999| 国产欧美日韩一区| 国产一区二区在线看|