99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

JMeter壓測數(shù)據(jù)庫全指南:JDBC配置、參數(shù)化與并發(fā)實(shí)戰(zhàn)

JMeter壓測數(shù)據(jù)庫全指南:JDBC配置、參數(shù)化與并發(fā)實(shí)戰(zhàn) 1. 先想清楚壓數(shù)據(jù)庫和壓接口到底差在哪很多人用 JMeter 做接口測試、壓 Web 服務(wù)駕輕就熟。但一說到用 JMeter 直接壓數(shù)據(jù)庫不少人就懵了——數(shù)據(jù)庫也能用 JMeter 壓怎么連連上了能測啥先說結(jié)論不僅能壓而且非常好使。我在實(shí)際項(xiàng)目里既用 JMeter 壓過 MySQL、PostgreSQL也壓過 Oracle甚至給第三方數(shù)據(jù)中臺(tái)做過壓測靠的都是 JMeter 自帶的 JDBC 請求組件不需要裝任何額外插件。但有一個(gè)認(rèn)知必須先糾正用 JMeter 測數(shù)據(jù)庫不等于在數(shù)據(jù)庫客戶端里手動(dòng)執(zhí)行幾條 SQL 看返回時(shí)間。它做的是“模擬真實(shí)業(yè)務(wù)場景下大量并發(fā)請求同時(shí)打向數(shù)據(jù)庫”這件事——比如 100 個(gè)用戶同時(shí)登錄每個(gè)登錄動(dòng)作背后對應(yīng)著幾條 SQL這些 SQL 同時(shí)打到數(shù)據(jù)庫上數(shù)據(jù)庫扛不扛得住平均響應(yīng)時(shí)間多少有沒有慢查詢連接池會(huì)不會(huì)被打滿這才是壓數(shù)據(jù)庫的核心目的。所以這篇文章我不會(huì)只講“怎么連上數(shù)據(jù)庫”而是把 JMeter 測試數(shù)據(jù)庫的完整方法拆開揉碎環(huán)境準(zhǔn)備、JDBC 連接配置、JDBC Request 詳解、參數(shù)化傳值、斷言校驗(yàn)、并發(fā)場景搭建、常見問題排查一條龍講清楚。你照著做基本可以覆蓋日常工作中 90% 的數(shù)據(jù)庫壓測需求。適合誰看剛接觸 JMeter、想用它做數(shù)據(jù)庫壓測的測試新人被領(lǐng)導(dǎo)臨時(shí)派活、需要在兩天內(nèi)給出數(shù)據(jù)庫性能結(jié)論的測試工程師以及那些已經(jīng)會(huì)基本接口壓測、但沒系統(tǒng)搞過 JDBC 請求的老手??赐昴阒辽倌塥?dú)立搭出一套帶參數(shù)化、帶斷言、帶并發(fā)模型的數(shù)據(jù)庫壓測腳本。2. 環(huán)境準(zhǔn)備驅(qū)動(dòng)、版本、連接方式一步都不能錯(cuò)2.1 先確認(rèn) JMeter 版本和 JDBC 驅(qū)動(dòng)開始之前先確認(rèn)你的 JMeter 版本。我這邊用的是 JMeter 5.xJDBC 請求相關(guān)的組件從 3.x 就有界面和配置項(xiàng)基本一致所以你用 4.x 或 5.x 都行不用太糾結(jié)版本。關(guān)鍵在于JDBC 驅(qū)動(dòng) Jar 包。JMeter 本身不自帶數(shù)據(jù)庫驅(qū)動(dòng)你必須手動(dòng)把對應(yīng)數(shù)據(jù)庫的驅(qū)動(dòng) Jar 包放到 JMeter 的lib目錄下然后重啟 JMeter 才能生效。常見數(shù)據(jù)庫對應(yīng)的驅(qū)動(dòng) Jar 包MySQLmysql-connector-java-8.0.x.jar如果你連的是 MySQL 5.x建議用 5.1.4x 版本MySQL 8.x 一定要用 8.0 版本的驅(qū)動(dòng)不然連接會(huì)報(bào)錯(cuò)。PostgreSQLpostgresql-42.x.x.jarOracleojdbc8.jar或ojdbc11.jar看你數(shù)據(jù)庫版本SQL Servermssql-jdbc-9.x.x.jar驅(qū)動(dòng)包放好之后重啟 JMeter然后用一個(gè)最簡單的 JDBC 請求驗(yàn)證一下能不能連上。別一上來就搞復(fù)雜場景連接都不通的話后面全是白搭。2.2 JDBC 驅(qū)動(dòng)類名和連接 URL別記混了很多新手死在第一步就是驅(qū)動(dòng)類名和 URL 寫錯(cuò)。這里直接給你一份對照表抄作業(yè)就行數(shù)據(jù)庫JDBC Driver ClassJDBC URL 格式MySQLcom.mysql.jdbc.Driver5.x/com.mysql.cj.jdbc.Driver8.xjdbc:mysql://127.0.0.1:3306/testdb?useSSLfalseallowPublicKeyRetrievaltrueserverTimezoneAsia/ShanghaiPostgreSQLorg.postgresql.Driverjdbc:postgresql://127.0.0.1:5432/testdbOracleoracle.jdbc.OracleDriverjdbc:oracle:thin:127.0.0.1:1521/ORCLSQL Servercom.microsoft.sqlserver.jdbc.SQLServerDriverjdbc:sqlserver://127.0.0.1:1433;DatabaseNametestdb注意 MySQL 這里有兩個(gè)坑第一MySQL 5.x 和 8.x 的 Driver Class 不一樣。8.x 是com.mysql.cj.jdbc.Driver不是com.mysql.jdbc.Driver寫錯(cuò)直接報(bào)ClassNotFoundException。第二MySQL 8.x 連接 URL 里建議加上useSSLfalseallowPublicKeyRetrievaltrueserverTimezoneAsia/Shanghai。不加 serverTimezone 會(huì)報(bào)時(shí)區(qū)錯(cuò)誤不加 allowPublicKeyRetrieval 會(huì)在某些認(rèn)證方式下報(bào)Public Key Retrieval is not allowed。這兩個(gè)參數(shù)我每次都會(huì)帶上省得排查半天。經(jīng)驗(yàn)我一般會(huì)在連接 URL 里額外加一個(gè)connectTimeout5000socketTimeout10000避免數(shù)據(jù)庫掛了之后線程一直卡在等待上壓測時(shí)能很快暴露連接超時(shí)問題。比如jdbc:mysql://127.0.0.1:3306/testdb?useSSLfalseallowPublicKeyRetrievaltrueserverTimezoneAsia/ShanghaiconnectTimeout5000socketTimeout100002.3 環(huán)境驗(yàn)證用一個(gè)最簡單的查詢打通鏈路驅(qū)動(dòng)放好、配置想清楚了先做個(gè)連通性測試——在 JMeter 里建一個(gè)測試計(jì)劃加一個(gè) JDBC Connection Configuration再選一個(gè)庫建一個(gè)線程池跑一條SELECT 1如果返回正常鏈路就通了。這一步別看簡單它價(jià)值很大能一次性排除驅(qū)動(dòng)、URL、賬號(hào)密碼、網(wǎng)絡(luò)四個(gè)環(huán)節(jié)的問題。如果SELECT 1都跑不通那后面再復(fù)雜的腳本也跑不通不如先在這里把問題解決掉。3. JDBC Connection Configuration連接池配置才是壓測的關(guān)鍵3.1 配置項(xiàng)逐行拆解JDBC Connection Configuration 是 JDBC 請求的前置條件相當(dāng)于給所有 JDBC 請求提供數(shù)據(jù)庫連接池。它不是一個(gè)“填個(gè) URL 就行”的簡單配置每個(gè)選項(xiàng)背后都有講究。關(guān)鍵的幾個(gè)配置項(xiàng)Variable Name for created pool連接池變量名隨便起比如db_pool但你要記死它因?yàn)?JDBC Request 里要通過這個(gè)名字來引用這個(gè)連接池。一個(gè)測試計(jì)劃里可以配置多個(gè)連接池給不同庫用靠名字區(qū)分。Max Number of Connections最大連接數(shù)。這個(gè)值很關(guān)鍵它決定了 JMeter 能同時(shí)從池里拿多少個(gè)連接。如果你壓 100 個(gè)并發(fā)但最大連接數(shù)只有 10那 JMeter 的請求就會(huì)排隊(duì)等連接測出來的結(jié)果不是數(shù)據(jù)庫的真實(shí)瓶頸而是連接池的瓶頸。Max Wait最大等待時(shí)間單位毫秒。連接池沒空閑連接時(shí)請求最多等多久超時(shí)拋異常。一般設(shè) 10000。Time Between Eviction Runs清理線程運(yùn)行間隔。JMeter 會(huì)定期清理空閑過久的連接一般設(shè) 60000。Auto Commit自動(dòng)提交。只做查詢壓測時(shí)設(shè) True 就好涉及事務(wù)、插入、更新時(shí)按需改成 False。Transaction Isolation事務(wù)隔離級(jí)別默認(rèn) DEFAULT 即可不用特別改。Pool Validation Query連接有效性檢查 SQL。MySQL 下寫SELECT 1PostgreSQL 下寫SELECT 1Oracle 下寫SELECT 1 FROM DUAL。JMeter 每次從池里拿連接時(shí)可以用這個(gè) SQL 驗(yàn)證連接是否還活著避免拿到失效連接。3.2 連接池參數(shù)怎么定一個(gè)簡單的估算方法連接池最大連接數(shù)怎么定很多教程會(huì)說“設(shè)大一點(diǎn)就行”但實(shí)際不是這么回事。連接數(shù)設(shè)太大數(shù)據(jù)庫可能會(huì)因?yàn)椴l(fā)連接過多直接拒絕服務(wù)設(shè)太小JMeter 這邊又會(huì)排隊(duì)。我的做法是連接池最大連接數(shù) 目標(biāo)并發(fā)線程數(shù)。比如你要模擬 100 個(gè)用戶并發(fā)那么 Max Number of Connections 就設(shè) 100 或略大于 100比如 100。這樣每個(gè)線程拿到一個(gè)獨(dú)立連接不會(huì)出現(xiàn)兩個(gè)線程搶一個(gè)連接的情況。這里有個(gè)容易混淆的細(xì)節(jié)JMeter 的線程數(shù)和連接池連接數(shù)不是一一綁定的關(guān)系。線程可以復(fù)用連接但如果你想測的是“數(shù)據(jù)庫在 100 個(gè)并發(fā)連接下的表現(xiàn)”那連接數(shù)就必須給夠否則測出來的曲線是連接池排隊(duì)曲線不是數(shù)據(jù)庫性能曲線。3.3 為什么要用連接池而不是每個(gè)線程單獨(dú)連JMeter 里還有一種做法是每個(gè)線程自己創(chuàng)建數(shù)據(jù)庫連接不用連接池——比如用 BeanShell 或者 JSR223 寫代碼去DriverManager.getConnection()。我不推薦這種方式做壓測原因有兩個(gè)第一性能差。每次請求都重新創(chuàng)建連接開銷全花在 TCP 握手和認(rèn)證上測出來的響應(yīng)時(shí)間虛高。第二資源不可控。并發(fā) 100 個(gè)線程同時(shí)創(chuàng)建 100 個(gè)連接壓測機(jī)本身的文件描述符、內(nèi)存壓力都會(huì)變大干擾結(jié)果。所以標(biāo)準(zhǔn)做法就是一個(gè) JDBC Connection Configuration 管連接池N 個(gè) JDBC Request 從池里取連接執(zhí)行 SQL。連接池的創(chuàng)建、復(fù)用、回收J(rèn)Meter 都在底層幫你處理好了你要做的就是配置好那幾項(xiàng)參數(shù)。4. JDBC Request 詳解增刪改查都能壓4.1 SQL 查詢和變量名規(guī)則JDBC Request 是真正執(zhí)行 SQL 的地方。它長得很像一個(gè) HTTP 請求 Sample但參數(shù)完全不同。核心參數(shù)有三個(gè)Variable Name of Pool declared in JDBC Connection Configuration填連接池變量名也就是你在 JDBC Connection Configuration 里填的那個(gè)名字。如果這里填錯(cuò)JMeter 會(huì)直接報(bào)錯(cuò)找不到連接池。Query TypeSQL 類型有 Select Statement、Update Statement、Callable Statement、Prepared Select Statement、Prepared Update Statement 等。如果是普通查詢用 Select Statement如果 SQL 里有占位符?必須用 Prepared Select Statement 或 Prepared Update Statement。QuerySQL 語句本體。這里有個(gè)新手高頻疑問Query Type 選 Select Statement 和 Prepared Select Statement 有什么區(qū)別區(qū)別在占位符。如果你要執(zhí)行SELECT * FROM user WHERE id ?就必須用 Prepared Select Statement然后通過參數(shù)列表傳入?的值。如果你執(zhí)行的是完整 SQL沒有?用 Select Statement 就行。相同點(diǎn)是結(jié)果都存放在變量里供后續(xù)使用。4.2 查詢結(jié)果的三種用法JDBC Request 執(zhí)行完之后結(jié)果存在哪答案是JMeter 會(huì)把結(jié)果集存到變量里變量名規(guī)則是你在 JDBC Request 里填的Variable Name。比如你在 JDBC Request 的 Variable Name 填了mysql_result那么執(zhí)行完查詢后mysql_result整個(gè)結(jié)果集mysql_result_#結(jié)果集行數(shù)比如返回 10 行這個(gè)變量值就是 10mysql_result_1第一行數(shù)據(jù)mysql_result_1_id第一行的 id 字段值mysql_result_2_id第二行的 id 字段值用Variable Name 下劃線 行號(hào) 下劃線 列名這個(gè)規(guī)則就能取到任意一行任意一列的值。這個(gè)特性相當(dāng)有用。最常見的場景是你從表 A 查到一批訂單 ID然后要把這些 ID 作為參數(shù)傳給下一個(gè) JDBC Request 或 HTTP 請求。具體做法就是先執(zhí)行一條查詢 SQL然后在下一個(gè)請求里用${mysql_result_1_id}來引用第一行 ID。4.3 實(shí)際案例查詢用戶表數(shù)據(jù)我來演示一個(gè)最簡單的例子。假設(shè)數(shù)據(jù)庫里有一張user表字段有id、username、age我想壓測一條查詢 SQLSELECT id, username, age FROM user WHERE age 20配置如下JDBC Request Variable Nameuser_resultQuery TypeSelect StatementQuerySELECT id, username, age FROM user WHERE age 20跑完之后在察看結(jié)果樹里可以看到這個(gè) JDBC Request 的響應(yīng)數(shù)據(jù)里面是查到的所有行。如果你想把這批數(shù)據(jù)取出來給后續(xù)請求用比如遍歷前 10 個(gè)用戶 ID就可以用${user_result_1_id}、${user_result_2_id}這種形式去引用。注意結(jié)果集會(huì)按位置存儲(chǔ)mysql_result_1是第 1 行mysql_result_2是第 2 行以此類推。如果你查詢結(jié)果本身有排序需求在 SQL 里把ORDER BY寫好否則取出來的行順序可能不穩(wěn)定。4.4 執(zhí)行更新操作怎么配置壓測不光是查詢有時(shí)也要模擬寫入、更新的業(yè)務(wù)壓力。比如 100 個(gè)用戶同時(shí)更新自己的資料。如果是帶參數(shù)的更新比如UPDATE user SET age ? WHERE id ?那么 Query Type 要選Prepared Update StatementSQL 里的?是占位符需要通過“Parameter values”和“Parameter types”傳入實(shí)際值。這里有個(gè)重要細(xì)節(jié)執(zhí)行 Update/Insert/Delete 操作時(shí)如果數(shù)據(jù)庫沒有返回結(jié)果集JMeter 會(huì)返回受影響的行數(shù)。比如某個(gè) UPDATE 影響了 3 行JMeter 的響應(yīng)數(shù)據(jù)里會(huì)顯示3。如果你想驗(yàn)證更新是否成功一種做法是更新后再執(zhí)行一條 SELECT 去查這條數(shù)據(jù)配合斷言來校驗(yàn)。5. 參數(shù)化取值讓壓測數(shù)據(jù)動(dòng)起來5.1 CSVDataset 參數(shù)化每個(gè)線程分塊取值做數(shù)據(jù)庫壓測時(shí)你常常需要模擬“不同的用戶操作不同的數(shù)據(jù)”而不是 100 個(gè)用戶都查同一條記錄。前者才是真實(shí)業(yè)務(wù)場景也能更有效地壓出數(shù)據(jù)庫的查詢能力。JMeter 里最常用的參數(shù)化方式就是CSV 數(shù)據(jù)集配置CSV Data Set Config。它允許你從一個(gè) CSV 文件里按行讀取數(shù)據(jù)然后把每一列的值賦給變量。配置的時(shí)候有幾點(diǎn)要注意FilenameCSV 文件路徑Variable Names列名用英文逗號(hào)分隔比如id,username,ageDelimiter分隔符默認(rèn)是英文逗號(hào)Recycle on EOF讀完最后一行后是否回到開頭繼續(xù)讀。如果你壓測時(shí)長較長或者并發(fā)數(shù)大于 CSV 行數(shù)建議設(shè) True否則讀到末尾線程會(huì)直接結(jié)束或報(bào)錯(cuò)。Stop thread on EOF讀完最后一行是否停止線程。如果 Recycle on EOF 是 True這個(gè)就設(shè) False。Sharing mode共享模式。默認(rèn) All threads 是所有線程共享一個(gè)文件指針按順序往下讀如果你想每個(gè)線程各讀各的可以選 Current thread。我在實(shí)際項(xiàng)目里壓“100 并發(fā)用戶登錄”時(shí)會(huì)準(zhǔn)備一個(gè) 100 行的 CSV每行一個(gè)用戶 ID 和密碼然后把線程組并發(fā)數(shù)設(shè)為 100CSV 共享模式用默認(rèn)的 All threads這樣每個(gè)線程拿到一個(gè)不同的用戶數(shù)據(jù)誰也不會(huì)搶。5.2 從上一個(gè)查詢結(jié)果取參JDBC 請求結(jié)果復(fù)用CSV 適合數(shù)據(jù)預(yù)先準(zhǔn)備好的場景但有些場景數(shù)據(jù)是動(dòng)態(tài)生成的——你先要查一下有哪些訂單然后針對每個(gè)訂單做后續(xù)操作。這種時(shí)候就要用 JDBC Request 的查詢結(jié)果來做參數(shù)化。思路是先跑一條 SELECT把結(jié)果存到一個(gè)變量里然后在后一個(gè)請求里用${var_行號(hào)_列名}去引用。舉個(gè)例子第一步JDBC Request 查訂單 IDSELECT order_id, amount FROM orders WHERE status pending這個(gè) JDBC Request 的 Variable Name 設(shè)為order_result。第二步在 HTTP 請求或下一個(gè) JDBC Request 里引用訂單 ID${order_result_1_order_id} 訂單金額${order_result_1_amount}這樣就實(shí)現(xiàn)了“把數(shù)據(jù)庫查出來的數(shù)據(jù)作為下一個(gè)接口的參數(shù)”這個(gè)高頻需求。但如果查詢返回了多行而你希望循環(huán)處理每一行數(shù)據(jù)那還是建議配合ForEach 控制器來做。ForEach 控制器可以遍歷一個(gè)變量集合比如order_result下的所有行然后逐一執(zhí)行后續(xù)請求。配置時(shí)輸入變量前綴order_result循環(huán)變量名隨便取一個(gè)比如current_order然后在后續(xù)請求里用${current_order_order_id}就能依次取到每一行的數(shù)據(jù)。5.3 JDBC 請求結(jié)果里的特殊變量行數(shù)和 NULL使用查詢結(jié)果時(shí)有兩個(gè)場景很容易踩坑。第一空結(jié)果集。如果 SQL 查不到數(shù)據(jù)order_result_#會(huì)是 0此時(shí)不能引用order_result_1_order_id否則 JMeter 會(huì)輸出一個(gè)空值。為了不報(bào)錯(cuò)可以搭配If 控制器判斷order_result_#是否大于 0再執(zhí)行后續(xù)邏輯。第二字段值本身是 NULL。比如某個(gè)字段在某些行里是 NULL引用之后得到的字符串是null而不是空字符串。如果你的下游接口對參數(shù)格式有嚴(yán)格要求需要在 BeanShell 或 JSR223 里做一個(gè) null 值替換處理否則接口調(diào)用可能會(huì)因?yàn)槎鄠髁薾ull字符串而報(bào)錯(cuò)。5.4 直接用 JSR223 腳本搞定更復(fù)雜的數(shù)據(jù)加工如果上面的方式都滿足不了需求比如你要對查出來的數(shù)據(jù)進(jìn)行 MD5 加密后作為參數(shù)傳給接口那就得上 JSR223 腳本了。JSR223 Sampler 里可以用 Groovy 直接查數(shù)據(jù)庫處理結(jié)果集生成任意格式的字符串。Groovy 的語法比 BeanShell 簡潔太多性能也更好是 JMeter 官方推薦的方式。雖然這篇文章主要講 JDBC Request 這種圖形化配置但在自定義邏輯非常復(fù)雜的時(shí)候JSR223 是終極兜底方案。簡單示例import java.sql.* // 獲取連接池里的連接 def conn vars.get(db_pool) // 這只是示意 // 真實(shí)的連接獲取可以通過 DataSource 或者直接用 JDBC 驅(qū)動(dòng)獲取這里省略不過說實(shí)話只有你需要寫復(fù)雜邏輯時(shí)才用 JSR223一般情況下 JDBC Request CSV 已經(jīng)能覆蓋絕大多數(shù)場景。過度使用 JSR223 反而會(huì)讓腳本難以維護(hù)。6. 斷言校驗(yàn)怎么證明數(shù)據(jù)庫返回是對的6.1 響應(yīng)斷言最快最直接的校驗(yàn)方式壓數(shù)據(jù)庫不是把 SQL 跑完就完事了你得確認(rèn)返回內(nèi)容是符合預(yù)期的。比如你查詢age 20的用戶結(jié)果返回里至少有數(shù)據(jù)行而不是空結(jié)果集或者一堆錯(cuò)誤信息。JMeter 的響應(yīng)斷言可以加到 JDBC Request 上用來校驗(yàn)響應(yīng)內(nèi)容。配置方式很簡單在 JDBC Request 上右鍵 → Add → Assertions → Response AssertionField to Test選 Text ResponsePattern Matching Rules選 ContainsPatterns to Test填你要校驗(yàn)的關(guān)鍵字比如查詢user表你想確認(rèn)結(jié)果里有username這個(gè)字段名就可以在響應(yīng)斷言里填username。如果響應(yīng)里沒有這個(gè)關(guān)鍵字?jǐn)嘌跃蜁?huì)失敗在聚合報(bào)告里會(huì)看到錯(cuò)誤率上升。這里有個(gè)技巧有時(shí)候 SQL 查出來的數(shù)據(jù)量很大響應(yīng)內(nèi)容很長你沒法直觀地看到是否有數(shù)據(jù)這時(shí)可以直接用響應(yīng)斷言校驗(yàn) “返回行數(shù)不為 0”。具體做法是把 SQL 改成SELECT COUNT(*) AS cnt FROM user WHERE age 20然后斷言響應(yīng)里包含cnt10或某個(gè)具體數(shù)字。注意JMeter 響應(yīng)里 COUNT 查詢的顯示格式是類似cnt10這樣的配合 Contains 斷言就能判斷數(shù)據(jù)量是否符合預(yù)期。6.2 BeanShell 斷言處理復(fù)雜校驗(yàn)邏輯響應(yīng)斷言只能做簡單匹配如果你要做復(fù)雜判斷比如“查詢結(jié)果里最大金額大于 1000”或“返回行數(shù)在某個(gè)區(qū)間內(nèi)”就得用 BeanShell 斷言或者 JSR223 斷言。JSR223 斷言可以用 Groovy 寫邏輯清晰多了。比如判斷結(jié)果集行數(shù)def rowCount vars.get(user_result_#).toInteger() if (rowCount 10) { // 失敗手動(dòng)設(shè)置斷言結(jié)果 AssertionResult.setFailure(true) AssertionResult.setFailureMessage(查詢結(jié)果集行數(shù)小于10實(shí)際為: rowCount) }這段腳本的邏輯是從 JMeter 變量里取user_result_#的值轉(zhuǎn)成整數(shù)判斷是否小于 10如果小于就手動(dòng)標(biāo)記斷言失敗并輸出失敗原因。這樣在聚合報(bào)告或察看結(jié)果樹里你能很直觀地看到哪些請求沒通過校驗(yàn)。經(jīng)驗(yàn)斷言別加太多加的每一個(gè)斷言都會(huì)消耗額外的性能。壓測腳本里的斷言越精簡越好能用一個(gè)響應(yīng)斷言解決的就不要加腳本斷言。高并發(fā)壓測時(shí)過重的斷言會(huì)拉高 JMeter 本身的 CPU 開銷影響測試數(shù)據(jù)準(zhǔn)確性。6.3 結(jié)合“用結(jié)果樹看數(shù)據(jù)”排查問題壓測跑完后第一件事永遠(yuǎn)是看察看結(jié)果樹View Results Tree。在結(jié)果樹里每個(gè) JDBC Request 都能展開看它的請求數(shù)據(jù)、響應(yīng)數(shù)據(jù)、斷言結(jié)果。響應(yīng)數(shù)據(jù)里會(huì)顯示 SQL 執(zhí)行后返回的內(nèi)容格式。我遇到過很多測試小白寫完了腳本直接開壓壓完發(fā)現(xiàn)錯(cuò)誤率 100%然后開始懷疑數(shù)據(jù)庫出問題了。其實(shí)根本不是數(shù)據(jù)庫的問題而是 SQL 寫錯(cuò)了或者參數(shù)沒傳進(jìn)去。這種時(shí)候不用慌打開察看結(jié)果樹找一個(gè)失敗的請求看它的響應(yīng)數(shù)據(jù)里的報(bào)錯(cuò)信息十有八九一次就能定位到問題。7. 并發(fā)壓測實(shí)戰(zhàn)模擬 100 個(gè)用戶同時(shí)查庫7.1 線程組參數(shù)設(shè)計(jì)前面把 JDBC Request 和參數(shù)化都講完了接下來進(jìn)入實(shí)戰(zhàn)模式——模擬 100 個(gè)用戶同時(shí)訪問數(shù)據(jù)庫看數(shù)據(jù)庫的表現(xiàn)。線程組配置建議Number of Threads (users)100Ramp-Up Period (seconds)10Loop Count50 或者填 ∞根據(jù)你的壓測時(shí)長來定這里解釋一下 Ramp-Up Period 的作用它表示 100 個(gè)線程在 10 秒內(nèi)全部啟動(dòng)完畢也就是說每秒啟動(dòng) 10 個(gè)線程。這樣做是為了模擬用戶逐步進(jìn)入系統(tǒng)的真實(shí)場景而不是 100 個(gè)請求在同一毫秒內(nèi)全部打到數(shù)據(jù)庫。如果你希望一開始就是滿負(fù)載可以把 Ramp-Up 設(shè)成 1 秒如果你要做階梯壓測可以用 Stepping Thread Group 插件但這個(gè)插件需要額外安裝基礎(chǔ)場景下普通線程組就夠用了。Loop Count 表示每個(gè)線程執(zhí)行多少次查詢。假如一個(gè) JDBC Request 執(zhí)行一條 SQL100 個(gè)線程 × 循環(huán) 50 次 總共 5000 次 SQL 查詢。這個(gè)總數(shù)可以用來估算壓測時(shí)長和數(shù)據(jù)庫負(fù)載。7.2 實(shí)戰(zhàn)腳本結(jié)構(gòu)一個(gè)標(biāo)準(zhǔn)的數(shù)據(jù)庫壓測腳本結(jié)構(gòu)如下測試計(jì)劃線程組100 線程10 秒內(nèi)啟動(dòng)JDBC Connection Configuration連接池配置最大連接數(shù) 100CSV Data Set Config用戶數(shù)據(jù)參數(shù)化JDBC Request執(zhí)行 SQL響應(yīng)斷言校驗(yàn)返回結(jié)果監(jiān)聽器聚合報(bào)告Aggregate Report察看結(jié)果樹View Results Tree需要注意JDBC Connection Configuration 和 CSV Data Set Config 都是配置元件Config Element它們的作用范圍是“所在層級(jí)之下的所有請求”。放在線程組下就對該線程組里的所有 JDBC Request 生效。7.3 壓測過程中的實(shí)時(shí)監(jiān)控壓測跑起來之后除了看 JMeter 的聚合報(bào)告我強(qiáng)烈建議你同時(shí)監(jiān)控?cái)?shù)據(jù)庫端的指標(biāo)。光看 JMeter 的響應(yīng)時(shí)間是不夠的你還需要知道數(shù)據(jù)庫的 CPU、內(nèi)存、連接數(shù)、慢查詢數(shù)等指標(biāo)才能完整評(píng)估數(shù)據(jù)庫性能。具體做法如果是 MySQL可以在壓測時(shí)執(zhí)行SHOW PROCESSLIST;查看當(dāng)前所有連接和正在執(zhí)行的 SQL。查看數(shù)據(jù)庫的 CPU 和內(nèi)存占用比如用top或數(shù)據(jù)庫自帶的性能監(jiān)控工具。開啟慢查詢?nèi)罩緣簻y完后分析哪些 SQL 的執(zhí)行時(shí)間超過了閾值。這一步非常重要因?yàn)?JMeter 的聚合報(bào)告只能告訴你“響應(yīng)時(shí)間變慢了”但到底慢在數(shù)據(jù)庫的哪個(gè)環(huán)節(jié)——是 CPU 打滿了、還是鎖等待、還是磁盤 IO——必須結(jié)合數(shù)據(jù)庫端的指標(biāo)來看。7.4 聚合報(bào)告怎么解讀壓測結(jié)束看聚合報(bào)告的幾個(gè)核心指標(biāo)Samples總請求數(shù)Average平均響應(yīng)時(shí)間單位毫秒Min / Max最小/最大響應(yīng)時(shí)間Std. Dev.響應(yīng)時(shí)間標(biāo)準(zhǔn)差越大說明響應(yīng)時(shí)間波動(dòng)越明顯性能越不穩(wěn)定Error %錯(cuò)誤率正常壓測場景下應(yīng)為 0%有少量錯(cuò)誤要具體分析Throughput吞吐量單位通常是req/sec意思是每秒能處理多少請求舉個(gè)例子100 個(gè)線程、循環(huán) 50 次的腳本跑完Samples 是 5000Throughput 如果是 200/sec說明數(shù)據(jù)庫每秒能扛住 200 次這個(gè) SQL 查詢。如果你把循環(huán)次數(shù)加大Throughput 會(huì)逐步逼近數(shù)據(jù)庫的極限值這個(gè)極限值就是數(shù)據(jù)庫的處理能力上限。經(jīng)驗(yàn)壓測數(shù)據(jù)庫時(shí)平均響應(yīng)時(shí)間和吞吐量要一起看。如果平均響應(yīng)時(shí)間很低但吞吐量也低說明 JMeter 本身或網(wǎng)絡(luò)成了瓶頸不是數(shù)據(jù)庫不行如果吞吐量上去了但平均響應(yīng)時(shí)間也跟著飆升這才說明數(shù)據(jù)庫開始進(jìn)入高負(fù)載狀態(tài)。8. 常見問題與排查技巧實(shí)錄8.1 連接不通ClassNotFoundException 和 URL 報(bào)錯(cuò)問題現(xiàn)象JDBC Request 報(bào)ClassNotFoundException: com.mysql.jdbc.Driver或Cannot create PoolableConnectionFactory。排查思路先看驅(qū)動(dòng) Jar 包有沒有放到 JMeter 的 lib 目錄下然后看是否重啟了 JMeter。如果確定 Jar 包在再看 Driver Class 寫對沒有——MySQL 8.x 驅(qū)動(dòng)對應(yīng)的是com.mysql.cj.jdbc.Driver不是com.mysql.jdbc.Driver。如果報(bào)錯(cuò)信息是Unknown database xxx檢查連接 URL 里的數(shù)據(jù)庫名是否正確。如果是Access denied for user檢查賬號(hào)密碼和數(shù)據(jù)庫權(quán)限。8.2 連接池不夠用Too many connections問題現(xiàn)象壓測過程中JMeter 報(bào)Too many connections或者數(shù)據(jù)庫端出現(xiàn)Connection refused。原因分析這個(gè)報(bào)錯(cuò)有兩個(gè)方向一個(gè)是 JMeter 連接池最大連接數(shù)設(shè)得太大打爆了數(shù)據(jù)庫的最大連接數(shù)另一個(gè)是數(shù)據(jù)庫自身max_connections配置太小。解決方案先查看數(shù)據(jù)庫的max_connections比如 MySQL 可以用SHOW VARIABLES LIKE max_connections;查看。然后調(diào)整 JMeter 連接池的最大連接數(shù)讓它的上限略低于數(shù)據(jù)庫的max_connections留一些余量給其他應(yīng)用連接。順便說一句做壓測之前一定要和 DBA 或運(yùn)維確認(rèn)好數(shù)據(jù)庫的連接上限否則壓到一半數(shù)據(jù)庫直接把連接全踢掉測試結(jié)果就廢了。8.3 響應(yīng)時(shí)間異常長慢 SQL 還是連接池排隊(duì)問題現(xiàn)象聚合報(bào)告顯示平均響應(yīng)時(shí)間高達(dá)幾秒遠(yuǎn)大于你手動(dòng)執(zhí)行 SQL 的時(shí)間。原因分析首先要區(qū)分是數(shù)據(jù)庫真慢還是連接池在排隊(duì)。手動(dòng)執(zhí)行 SQL 快說明 SQL 本身沒問題。這時(shí)候要去看 JMeter 連接池的最大連接數(shù)是不是小于線程數(shù)——如果 100 個(gè)線程去搶 20 個(gè)連接剩下 80 個(gè)線程全在等連接響應(yīng)時(shí)間自然飆升。解決方案把 Max Number of Connections 調(diào)大使其等于或大于線程數(shù)再跑一次對比。如果響應(yīng)時(shí)間正常了說明之前的瓶頸是連接池如果響應(yīng)時(shí)間依然很大那就要去數(shù)據(jù)庫端看慢查詢?nèi)罩径ㄎ皇遣皇撬饕?、鎖等待等問題。還有一個(gè)細(xì)節(jié)如果連接 URL 設(shè)置了socketTimeout當(dāng)數(shù)據(jù)庫處理查詢超過這個(gè)值時(shí)JMeter 會(huì)直接報(bào) socket 超時(shí)。這種情況下不是數(shù)據(jù)庫變慢而是策略性地?cái)嚅_了連接。壓測時(shí)可以把 socketTimeout 調(diào)大一點(diǎn)避免誤判。8.4 變量引用出來是 null結(jié)果集行號(hào)與字段大小寫問題現(xiàn)象在后續(xù)請求里用${var_1_id}引用 JDBC 查詢結(jié)果發(fā)現(xiàn)值是 null 或者空字符串。原因排查第一先看結(jié)果集是不是空的。如果 SQL 查不出來數(shù)據(jù)任何引用都是空。用察看結(jié)果樹看響應(yīng)數(shù)據(jù)確認(rèn)是否有數(shù)據(jù)返回。第二看字段名大小寫。MySQL 的字段名默認(rèn)全小寫如果 SQL 里寫了別名比如SELECT id AS userId FROM user那么引用時(shí)要寫成${var_1_userId}。建議 SQL 里起別名時(shí)統(tǒng)一用帶下劃線的命名如user_id然后引用時(shí)保持大小寫一致。第三行號(hào)從 1 開始不是從 0 開始。如果變量名是order_result那么第一行是order_result_1沒有order_result_0這個(gè)變量。8.5 中文亂碼與編碼問題問題現(xiàn)象JDBC 查詢返回的中文變成問號(hào)或亂碼。原因排查大多是連接 URL 里沒有指定字符集。在 MySQL 連接 URL 上加上characterEncodingutf8jdbc:mysql://127.0.0.1:3306/testdb?useSSLfalseallowPublicKeyRetrievaltrueserverTimezoneAsia/ShanghaicharacterEncodingutf8另外檢查數(shù)據(jù)庫表本身的字符集是不是 utf8mb4。如果表是 latin1 而應(yīng)用按 utf8 讀取也會(huì)亂碼。8.6 一個(gè)容易被忽略的問題壓測機(jī)性能不夠最后提一個(gè)很多人踩過的坑——壓測機(jī)本身的性能不夠。JMeter 是 Java 應(yīng)用100 個(gè)并發(fā)線程跑起來時(shí)壓測機(jī) CPU 和內(nèi)存消耗不小。如果你在本地筆記本上壓遠(yuǎn)程數(shù)據(jù)庫壓測結(jié)果可能不是你 SQL 的真實(shí)性能而是筆記本 CPU 打滿后的結(jié)果。怎么判斷壓測時(shí)打開任務(wù)管理器或top看看 Java 進(jìn)程的 CPU 占用率。如果已經(jīng)超過了機(jī)器 CPU 的 70% 以上建議換一臺(tái)性能更強(qiáng)的機(jī)器或者把 JMeter 部署到另一臺(tái)服務(wù)器上盡量讓壓測機(jī)資源充足確保瓶頸在數(shù)據(jù)庫端而不是客戶端。8.7 問題排查速查表問題現(xiàn)象可能原因解決方案ClassNotFoundException驅(qū)動(dòng) Jar 未放到 lib 目錄放入 Jar 包并重啟 JMeterCannot create PoolableConnectionFactoryURL 或賬號(hào)密碼錯(cuò)誤檢查 URL 格式、賬號(hào)權(quán)限Too many connections連接數(shù)超過數(shù)據(jù)庫上限調(diào)大數(shù)據(jù)庫 max_connections 或調(diào)小 JMeter 連接池響應(yīng)時(shí)間超長連接池排隊(duì)或慢 SQL調(diào)大連接池查看慢查詢?nèi)罩咀兞恐禐?null結(jié)果集為空或字段名大小寫不一致確認(rèn)查詢結(jié)果檢查 SQL 別名中文亂碼連接 URL 未指定字符集添加 characterEncodingutf8壓測結(jié)果不穩(wěn)定壓測機(jī)資源不足更換壓測機(jī)或降低線程數(shù)9. 一個(gè)完整的數(shù)據(jù)庫壓測腳本示例講了這么多最后給你一個(gè)完整的 MySQL 壓測腳本搭建過程從零到一可以直接照抄。9.1 測試場景模擬 100 個(gè)用戶并發(fā)查詢訂單表每個(gè)查詢根據(jù)不同的訂單 ID 查詢訂單信息持續(xù)壓測 10 分鐘觀察數(shù)據(jù)庫的吞吐量和響應(yīng)時(shí)間變化。9.2 準(zhǔn)備工作MySQL 數(shù)據(jù)庫提前創(chuàng)建好訂單表orders字段包括order_id、user_id、amount、status準(zhǔn)備一個(gè)order_ids.csv文件里面放 100 個(gè)訂單 ID用于參數(shù)化JMeter 5.xmysql-connector-java-8.0.x.jar已放入 lib 目錄并重啟9.3 腳本搭建步驟第一步創(chuàng)建測試計(jì)劃并添加線程組線程數(shù) 100Ramp-Up 10 秒循環(huán)次數(shù)勾選無限在調(diào)度器配置里設(shè)置持續(xù)時(shí)間為 600 秒。第二步添加 JDBC Connection Configuration配置項(xiàng)如下Variable Name for created poolmysql_poolMax Number of Connections100Max Wait10000Auto CommitTruePool Validation QuerySELECT 1Database Connection ConfigurationDatabase URLjdbc:mysql://127.0.0.1:3306/testdb?useSSLfalseallowPublicKeyRetrievaltrueserverTimezoneAsia/ShanghaiJDBC Driver Classcom.mysql.cj.jdbc.DriverUsernametest_userPasswordyour_password第三步添加 CSV Data Set ConfigFilename/data/order_ids.csvVariable Namesorder_idDelimiter,Recycle on EOFTrueStop thread on EOFFalseSharing modeAll threads第四步添加 JDBC RequestVariable Name of Poolmysql_poolQuery TypePrepared Select StatementQuerySELECT * FROM orders WHERE order_id ?Parameter values${order_id}Parameter typesVARCHAR這里說明一下因?yàn)?SQL 里有?占位符所以 Query Type 必須選 Prepared Select StatementParameter values 里填 CSV 讀取出來的訂單 IDParameter types 填數(shù)據(jù)庫字段類型。第五步添加響應(yīng)斷言Field to TestText ResponsePattern Matching RulesContainsPatterns to Testorder_id這樣就確保了查詢請求返回的結(jié)果中包含 order_id 字段證明查詢是成功的。第六步添加監(jiān)聽器加一個(gè)聚合報(bào)告和一個(gè)察看結(jié)果樹。壓測結(jié)束后聚合報(bào)告里可以看到平均響應(yīng)時(shí)間、吞吐量、錯(cuò)誤率等核心數(shù)據(jù)。9.4 跑完怎么分析壓測結(jié)束后我一般這么看數(shù)據(jù)先看錯(cuò)誤率。如果錯(cuò)誤率為 0%說明 100 并發(fā)下這條 SQL 沒有出錯(cuò)數(shù)據(jù)庫連接和查詢都正常。如果錯(cuò)誤率大于 0查詢具體的錯(cuò)誤信息常見的是連接池不夠用或超時(shí)。然后看吞吐量變化。如果 JMeter 的 Throughput 在持續(xù)穩(wěn)定上升后趨于平緩說明已經(jīng)摸到了數(shù)據(jù)庫的處理上限。此時(shí)如果平均響應(yīng)時(shí)間還能接受說明數(shù)據(jù)庫還有冗余如果響應(yīng)時(shí)間已經(jīng)超標(biāo)比如超過 500ms說明數(shù)據(jù)庫快要撐不住了。最后結(jié)合數(shù)據(jù)庫端監(jiān)控比如 CPU、慢查詢?nèi)罩究雌款i到底在哪個(gè)環(huán)節(jié)然后給出測試結(jié)論和優(yōu)化建議。這里有一個(gè)小建議壓測時(shí)先把線程數(shù)保守一點(diǎn)比如 50跑一輪看結(jié)果再逐步升到 100、200。這樣做的好處是你能看到數(shù)據(jù)庫在不同并發(fā)下的表現(xiàn)曲線而不是一上來就壓到天花板拿到一堆根本沒法分析的數(shù)據(jù)。階梯式加壓是我在實(shí)際項(xiàng)目中比較喜歡用的方式。最后說幾句實(shí)在話用 JMeter 做數(shù)據(jù)庫壓測門檻真的不高但想做好需要你對數(shù)據(jù)庫本身的運(yùn)行機(jī)制有基本認(rèn)知。我在實(shí)際測試項(xiàng)目里見過不少人把壓測腳本配好了、跑出了漂亮的報(bào)告但一問數(shù)據(jù)庫端的指標(biāo)完全答不上來——CPU 多少、內(nèi)存多少、慢查詢有沒有、連接數(shù)有沒有到上限全是空白。這種壓測報(bào)告說實(shí)話價(jià)值有限。我的個(gè)人建議是壓測數(shù)據(jù)庫永遠(yuǎn)要把 JMeter 端的數(shù)據(jù)和數(shù)據(jù)庫端的數(shù)據(jù)結(jié)合起來看。JMeter 告訴你發(fā)生了什么數(shù)據(jù)庫的監(jiān)控告訴你為什么會(huì)發(fā)生。兩邊對照才能真正判斷數(shù)據(jù)庫的性能瓶頸在哪里也才能給出可信的測試結(jié)論。如果你只是剛接觸這塊先從最簡單的單條 SQL 查詢壓測入手把 JDBC Connection Configuration 和 JDBC Request 玩熟再慢慢加參數(shù)化、加斷言、加并發(fā)場景。不要一上來就想測多表關(guān)聯(lián)或存儲(chǔ)過程底子打好后面的內(nèi)容都是水到渠成的事。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
色丁香五月天射婷婷爱婷婷| 亚洲色图五月丁香| 丁香五月婷婷AV| 九九亚洲视频| 日韩操逼大片| 久色婷婷200| 九九热av| 大伊香蕉玖玖爱| 天天日日夜夜| 91久久久久久久久久久| 天天做夜夜爽| 超碰熟女拍拍| 另类激情五月| 丁香五月日啪| 九九亚洲视频| 操逼六区| 大香AV| 99热免费在线| 香蕉综合在线| 婷婷伊人综合中文字幕| 天天干电影| 五月婷婷视频啪啪美女| 在线观看熟女少妇| 成人五月天综合网| av九九| 西西4r午夜剧场| 1024日韩| 五月丁香狠狠爱| 五月人妻婷婷视频| 久久视频这里99| 五月色婷婷亚洲 | 91九色国产熟女| 99热精品综合| 另类小说五月天激情| 国产成人av在线播放| 天天日中文| 婷婷伊人五月天| 久久ab| 影音先锋 91工厂| 99色婷婷视频| 亚州精品色情无码A片| 中文字幕+中文在线| 99年操人人爽| 五月丁香六月婷| 久久性视频| 婷婷激情小说| 日本女人久久| 超碰狠狠操| 色欲影香| 久久久97| 99精品无码| 97香蕉碰碰人妻国产欧美| 26uuu精品一区二区| 久久这里只有精品1| 日韩人妻无码一区二区| 2020夜夜操天天爽| 亚州AV超碰人人操| 亚洲国产精品VA在线看黑人| 久草热在线视频| 色J香五月天| 中文字幕久久一区二区三区| 狠狠搞亚洲| 亚洲久久婷婷| 丁香五月激情综合| 九九综合精品| 久久久中文| 亚洲中文乱字字幕在线永久| 99久久国产宗和精品1上映| 六月激情婷婷| 色欲资源网| 婷婷激情伍月网| 久99热| 欧美日韩99| 97干在线| 丁香五月综合在线播放 | 久久33视频| 五月天社区婷婷| 五月婷婷香蕉视频| 四色五月视频| 69热在线| 99视频一区| 99热在线免费| 超碰精品在线| 色五月天婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷 | 亚洲第一影院高清无码网站| 天天日夜夜欢| 99热这里只有精品21| 热99视频精品| 国产午夜精品一区二区| 五月开心网| 中文字幕无码人妻少妇免费视频| 五月丁香A片| 午夜成人在线免费视频| 亚洲激情丁香五月天色| 激情99在线视频| 六月婷婷激情| 九九热视频在线观看| 97热91| 67194中文在线| WWW.久久久久久久久久久久久| 综合色网站| 亚洲九九夜夜| 婷婷五月天黄色小说| 天天婷婷| 91啪啪| 丁香五月激情图片婷婷| 婷婷五月丁香久久| 开心五月色婷婷综合开心网| www.婷婷五月| 亚洲视频另类| 99这里的视频都是精品| 五月丁香亭亭| 草草色情综合网| 成人中文字幕在线| 五月丁香六月香综合激情| 亚洲激情网| 五月丁香激情综合网| 激情五月天天| 天天 日综合| 日日爽日日| 色色五月婷婷| 99人人精品| 久久综合网免费视频| 小视频久久久aaa| 色婷婷免费观看| ..真实国产乱子伦对白在线_欧| 任你干嘛免费视频播放| 五月丁香伊人网| 91超碰在线播放| 日韩成人中文| 亚洲午夜AV| 99热10在线高清播放| 五月天婷婷操逼视频| 91丨九色丨国产打屁股| 亚洲第一色区| 丰满少妇猛烈A片免费看观看| 五月婷婷精品| 欧美婷婷色五月| 日日干夜夜干| 伊人婷婷青青cao| 久久A V无码视频| 五月天激情小说| 麻豆精品| 99re热视频这里只精品5| 天天爽天天爽| 久热精品视频在线观| 亚洲精品国产精品乱码视99| 六月丁香婷婷爱| 欧美日本综合网| 色色五月天婷婷丁香| 欧美三级巜人妻互换| 婷婷97碰碰| 五月情婷婷| 亚洲AV成人片无码网站| 日本欧美国产| 九九久久五月天| 一级黄色操B| 天天久久综合| 色五月婷婷久久| 操碰99| 五月天开心激情综合网| 超碰操日| 中文字幕色色| 97在线日韩| 天天操天天操| 成人无码精品1区2区3区免费看| 婷婷在线播放av| 丁香六月天| 婷婷五月丁香A∨| 99色在线观看视频| 综合激情sV| 2025年最新亚洲在线欧美| JAPANRCEP老熟妇乱子伦视频 | 日日操夜夜骑| 久久久九九视频精品18| 狠狠xx| 色欲AVV| 开心五月丁香婷婷| 亚洲天堂有码| 国产激情av| 亚洲XX网| 美女五月天| 丁香六月啪| 六月婷婷激情| 五月丁香怕啪啪| 久久久婷婷婷| 99re这里只有精品首页| 禁片二区| 婷婷综合精品| 五月花婷婷在线精品视频| www.五月天婷婷| 五月婷婷丁香成人网| 99九九视频| 九九热这里只有精品7| 色五月激情五月开心五月| 丁香色六月婷婷| 熟女激情五月天| 91在线日本| 色播五月综合网| 中文精品在| 91色久| 色玖玖爱| 久久99热免费| 9久热视频| 日日撸夜夜操| 久久久久久久综合狠狠综合| 色香蕉婷婷| 日日噜狠狠色| 久久性爱视频| 2025神马午夜福利| 婷婷六月综合基地| 99视频久久免费视频| 熟妇无码乱子成人精品| 激情文学五月丁香六月婷婷| 色色色欧美| 五月丁香大香蕉| 丁香婷婷久久老熟女综合网| 四季AV综合网| 亚洲综合另类| 色五月五月天色婷婷色五月| 婷婷久久免费看| 91高潮喷水久久久久久久久 | 激情九月婷婷| 潘金莲AAAAAAAAAA| 成人视频一区| 亚洲狠狠操| 日本WWW九九九| 五月天社区| 日本欧美在线| 79成人网| 最近中文字幕2019视频1| 伊人网色婷婷五月天| 久久人人添人人爽添人人片αV| 久久人人添人人爽添人人片αV | 天天色综网| 一本道综合网| 婷婷99中文字幕| 99欧美| 婷婷伊人网| 久9热在线视频| 香蕉AV777XXX色综合一区| 欧美婷婷五月天| 中文字幕婷婷| 久久大香蕉伊人| 99热都是精品| 婷婷午夜综合| 99精品视频在线6| 奇米影视777在线_在线观看午夜_h小视频在线观看_岛国大片 | 自拍偷窥99热| 精品成人a v无码内射| 色久九| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 中文字幕激情综合| 永久天堂日本| 色狠狠色噜噜AV天堂五区| 99只有精品9| 欧美 日韩 成人| 嫩草综合网| 涩综合网| 日韩精品一曲二曲三曲四曲五曲| 丁香五月影院| 天天色综网| 泰州成人视频| 99视频只有这里精品| 丁香婷婷综合激情五月色,开心五月丁香花综合网,激情综合五月亚洲婷婷,五月天 | 五月天色站| 丁香六月综合激情| 在线观看欧美| 久久99网| 深爱激情六月天| 高清无码一区二区三区四区| 热99精品视频在线观看| 婷婷导航| 激情婷婷丁香五月天小说| 97大香蕉五月天| 天天日日夜夜| 色综合99| 久久九九综合| 婷婷天堂综合| 99只有这里有精品在线视频| 丁香五月婷中字幕| 五月丁香久久网| 国产99久9在线| 色色色五月天婷婷| 日日懆天天懆| 激情综合婷婷五月| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | 亚洲人人操| 亚洲五月天婷婷| 综合久久影院| 丁香五月婷婷六月| 天天爽天天日| 久久婷五月| 五月丁香啪啪| 亚洲爆乳无码精品AAA片蜜桃| 91久久1118| 九九热99免费视频| 新97人人上人人| xxxx久| 天天色域综合网| 六月婷婷国产| 日本五月天婷婷丁香| 91久久婷婷人人澡草| 色色亚卅| www.五月天社区| 色欲资源网| 久热这里只有精品视频6| 婷婷五月天激情小说网站| 五月丁香六月婷婷不卡免费无码| 丁香婷五月| caopeng97日韩| 天天舔天天| 99爱最新免费视频在线观看| 婷婷激情五月天在线| 亚洲色婷婷五月| 婷婷久久亚洲| 91九色中文字幕女在线观看| 婷婷伊人网| 性 色 婷婷| 思思99热在线| 丁香五月激情无码视频| 狠狠狠狠狠狠| 欧洲亚洲精品| 五月丁香综合啪啪| 亚洲九九夜夜| 粉嫩AV久久一区二区三区| 国产真人做爰视频免费| 性爱五月婷| 香蕉97碰碰碰超视精品| 婷婷五月69| 婷婷AV丁香| 深爱激情五月天婷婷网| 狠狠色噜噜狠狠| www.91色| 丁香婷婷九月在线| a在线免费v| YJLZZJLZZ亚洲乱熟无码| 五月天婷婷色| 色性日本| 91精品久久久久久| 婷婷狠狠综合网入口| 欧美超碰亚洲| 婷婷久久欧美| 91成人性爱视频| 超碰在线观看99| 五月大香蕉| 99精品综合| 日本97在线视频| 五月婷婷色播视频| 五月丁香久久久| 婷婷网五月天| 97碰碰碰免费公开在线视频| 五月天婷婷狠狠| 五月婷婷六月丁香| 久久sp免费视频| 97九色| 九九婷婷五月天影视| 婷婷婷婷婷婷婷婷| 噼里啪啦在线观看免费完整版视频| 婷婷桃色网| 五月婷婷黄色| 五月丁香六月婷婷免费视频| 五月婷婷婷丁香播| 国产毛片精品一区二区色欲黄A片| 韩日AV片| 亚洲激情电影五月天色婷婷丁香一起草| 色婷五月天激情| 99re8这里只有精品99re8热视频| 97人妻人人| 人人摸人人操人人爽| 激情五婷精品网在线观看网址| 美妞av| 天天色视频| 欧美槡BBBB槡BBB少妇| 国产婷婷五月| 久久66精品| 亚洲综合1024| 久久综合婷| 婷婷在线五月天观看| 天天综合网在线| 99热国品| 五月花综合网| www久| 99久热在线精品99re6热| 五月天婷婷一起草| Av大香蕉| 视频一二区| 五月开心深爱激情网| 99这里都是精品| 色三级色三级| 色婷婷精| 久久66精品| 五月激情小说| 人人爱操| 久久九九综合| 色99在线视频| 天天操B| 久久综合综合综合| 五月丁香无码视频| yw国产AV| 丁香五月婷婷俺也要去| 婷婷五月丁香第四色超碰在线| 色呦呦美女| ji'qing'luan'ren'lun| 色色色热| 中文久久久人妻| 婷婷五月天开心网| 丁香综合婷婷开心激情网| 亚洲欧美婷婷五月色综合| 欧类av怡春院| 丁香五月98| 五月天社区| 97人妻碰碰中文无码久热丝袜| 青青草原伊人网| 久久五月婷综合网| 五月丁香中文字幕| 久热在线观看视频9| 五月婷六月天| 果冻传媒A片一二三区| 无码激情精品色婷婷久久久久| 婷婷五月天基地| 久久er免费视频| 九九九九这里只有精品| 26.uuu丁香五月婷婷| 婷婷丁香五月综合| 久久狠狠干| 中文字幕丰满人妻无码专区| 级情九色| 激情图片亚洲| 国产精品久久久久久亚洲毛片| 丁香五月天欧洲在线| www.99在线| 天天草狠狠擦| 中文幕无线码中文字蜜桃| 丁香婷婷六月激情文学| 久久亚洲婷婷| 五月丁香激情五月天| 搡BBBB搡BBB搡18| 久久伊人日日夜夜| 国产女人十八水真多1| 激情六月综合| 激情综合网五月| www.99热| 米奇影视资源婷婷狠狠色激情欧美五月丁香| 午夜成人片400| 亚洲激情网站无码| 99噜噜噜在线播放| 狠狠操狠狠狠| www.激情com| 婷婷月综合| 综合色情网| 激情五月久久| 久久这里只有国产视频| 婷婷五月色影视先锋| 五月亭亭开心网| 婷婷自拍| 黄网在线播放| 操操操AV| 丁香五月天啪啪| 思思久久99热只有频精品66| 五月丁香中文字幕| 久99热| 99精品视频在线观看| 九九爱激情| 激情性爱五月| 亚洲V国产V欧美V久久久久久| 亚洲国产网站| 丁香色色网| AV 3P| 男人天堂AV在线一区二区| 中文字幕AV网址| 丁香婷婷综合激情五月色,开心五月丁香花综合网,激情综合五月亚洲婷婷,五月天 | 五月丁香性爱| 玖玖爱伊人网| 中文字幕在线免费观看视频| 亚洲五月情| 五月婷婷色播| 大战熟女丰满人妻AV| 五月天成人小说| 五月丁香狠狠爱| 韩国不卡AC视频| 综合色五月| 激情五月天噢美| 乱乱av| 五月丁香色婷婷基地| 97五月婷婷| 国产全是老熟女太爽了| 久久综合丁香| 色婷婷丁香| 丁香五月天色综合| 婷婷久久五月天丁香| 免费视频WWW在线观看网站| 婷婷九月丁香| 五月天激情AAAA| 人人操插| 伊人热婷婷| 国产成人av在线播放| 天天成人综合视频| 婷婷久久五月| 久久激情综合| 国产AV不卡福利| 国产美女无遮挡裸体毛片A片| 人人摸人人澡人人| 涩涩涩.com| 婷色五月天| 色五月丁香婷婷| 青青草蜜臀| 97丁香婷婷| 综合九九日本| 婷婷五月激情基地| 精品无码久久久久久久久| 亚洲网视屏| 亚洲色优| 这里精品| 激情六月一二| www.热99热| 丁香五月综合激情久久潮喷| 色欲天天综合网| 婷婷色色欧美| 久久婷婷六月综合国际| 蜜桃人妻无码AV天堂三区| 激情综合五月天| 色色亚洲视频| 夜夜躁爽日| 九九热短视频在线观看 | 亚洲综合色色| 99在线观看精品| 丁香五月六月激情| 婷婷五月情| 婷婷天天五月天| 久久久天堂国产精品女人| 激情综合网五月婷婷| 五月婷婷网站| 五月婷婷六月少妇激情| 五月天婷婷丁香社区| 婷婷五六月丁香| 五月丁香婷婷色| 久久久大香蕉| 激情文学久久| 亚洲综合激情五月久久| 丁香无月在线观看| 五月色婷婷综合色| 婷婷日| 婷婷五月天激情文学小说| 狼友超碰| 97人人操在线| 五月丁香久久| 久久婷婷综合五月天| 九月丁香| 五月天激情网站| 久热免费| 99精品视频在线观看| www.色五月| 91无码色色| 潘金莲AAAAAAAAAA| 久久99久久99www| 91九九精品| 久激情| 亚洲成人在线综合| 色婷婷小说| 久久婷婷成人视频| 伊人婷婷激情| 五月激情综合五月| www.26uuu.com亚洲电影| 激情网综合| 婷婷五月六月| 色情五月综合婷婷| 天天日天天操心| 国产毛片精品一区二区色欲黄A片| 影音先锋 萱萱| 碰人人97| 五月色色色| 九九热这里有精品视频| 婷婷五月天论坛| 婷婷五月天小说网| 久久九色| 丰满少妇乱A片无码| 国产免费一区二区三州老师F1…… | 亚洲av电影在线| 99热精品网| 在线中文av| 天天舔天天摸天天射| 色综合综合色| 日韩 中文 欧美| 996er热| 久久五月天激情| 色五月婷婷天堂| 亚欧州精品视频| 在线五月色播| 婷婷丁香六月天激情四射网| 丁香五月激情啪啪啪| 伊人激情综合| 五月 激情视频| 天天干,天天舔| 开心四月婷婷在线色播播| 色色色.COM| 99视频自拍| 色色三级视频| 欧美在线操| 99热首页在线30| 久热这里| 婷婷色影音天| 九九综合伊人| 婷婷五月图片小说视频| 色婷婷亚洲婷婷| 高清资源站日A美A欧亚…| 五月天另类图片区99| 亚洲激情无码久久| 丁香综合婷婷五月天| 婷婷中文字幕| 日本一级特黄大片AAAAA级| 亚洲色婷婷网站| 久久综合影院| 色婷青青| 天天五月香欧美| 中文字幕 中文字幕明步| 99综合| 日韩精品成人在线| 婷婷五月噜噜| 婷婷俺去也| 777影视理论片大全在线观看| 九九色之九九色之88| 欧美毛片www| 色九月婷婷| 996热re视频在线观看视频| 午夜理论片最新午夜理论剧 | 天天爱天天操| 丁香五月天AV在线| 五月天婷婷日日爱| 91精品久久久久久久| 99热久久这里只有精品| 亚洲sesesese| 99热亚洲精品| 午夜av网| 综合色、色综合| 久久激情五月天| 99在线精品视频免费观看20| 色婷网| 国内久久久精品99| 婷婷色丁香六月| 少妇高潮呻吟A片免费看软件 | www.狠狠操| 日韩精品呦呦va| 人人色AV| 亚洲精品V天堂中文字幕| 大香蕉综合网| 婷婷五月综合在线| 久久色情| 丁香五月天啪啪| 97操碰视频| 丁香五月开心亚洲| 五月色婷婷夜色| 开心五月丁香啪| 粉嫩AV久久一区二区三区| 九九伊人网| 超碰99久久| 婷婷丁香五月91| 激情网五月| 丁香五月婷婷少妇| 成人超碰Av| 99色人| 久久五月婷天天干| 人妻体体内射精一区二区 | 日逼影音先锋男人AV资源站| caopeng97日韩| 日日鲁鲁鲁夜夜爽爽狠狠视频97 | 五月婷婷这里都是精品| 免费观看全黄做爰的视频| 天天性视频| 五月色婷婷综合| 欧美极品999| www久久艹| 色天使色婷婷| 97se视频在线| AV在线大香蕉| 丁香五月社区| 天天做天天干天天综合网| 青柠影视免费高清电视剧| 三十路磁力链接| 激情五月激情综合网| 色久在| 五月婷婷狠天天色综合| 青青草大香| 亚洲色婷婷视频| 停停五月色宗合| 99激情网| 二人电影免费版在线观看| 久久精品国产AV一区二区三区 | 九久久九精品视频| 久久99热这里只有精品| 91九色在线视频| 婷婷内射视频在线| 天天人人综合| 欧美交换配乱吟粗大25P| 森林影视大全,最好看的2019年视频 | 色婷婷色丁香色欲av| 久久丁香综合| 天天做天天要天天爱| 婷婷亚洲影院| 激情五月天之六月婷婷| 六月色 亚洲| av在线免费网站| 色欲天天综合| 五月天伊人| 99久在线观看| 欧美性生交XXXXX无码小说| 婷婷五月天综合小说网| 久久刺激网| 疯狂做受XXXX高潮A片动画| 天天天天天久久久久久| 天天操无码| 欧美69久成人做爰视频| 99精品免费| 五月综合视频在线| 欲色人妻| 影视av久久久噜噜噜噜噜三级| 日日操人人操| 伊人网碰碰| 久热这里| 可以免费观看的AV| 久久久99久久| 99婷五月| 婷婷色婷婷| 久久五月六月| 99久久精彩视频| 99丁香五月婷| 色.五月综合网| 五月天六月婷婷| 日韩一级A片黄色| 婷婷五月天桃花网| 91人人爽狠狠狠| 五月婷六月天| 九九热色视频| 丁香熟女乱| 任你爽精品免费视频6| 五月噜噜| 久久er视频6| 婷婷激情五月天激情小说| 久操热线| 亚洲无码11| 久热这里只有精品66| 日本精品99| 色婷婷影视99| 色伦专区97中文字幕| 婷婷久久亚洲| 五月婷婷六月丁香在线| 丁香婷婷五月天网站| WWW·色色色·COM| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 久久久这里有精品| 日日日日日| 爱婷婷久久视频| 日韩欧美一区二区三区四区| 99热热这里只精品996小说| 狠狠操狠狠色| 色婷| 亚洲六月婷婷| 天天干狠狠艹| 亚洲十月婷婷综合| 久婷婷五月激情| AV在线免费播放| 五月丁香视频色色| 极品五月天| 蜜乳久AV| 亚洲乱码日产精品BD| 婷婷五月丁香啪啪| 久久丁香五月| 狠狠五月激情丁香六月| 日本九九热| 天天草天天舔| 色婷婷丁香五月天在线视频| 玖玖在线视频福利| 91综合国免费久入| 色狠狠色综合久久久绯色AⅤ影视 大香蕉五月天婷婷丁香91 | 亚洲啪视频| 亚洲色图五月丁香| 久久婷婷五月天激情| 久久久久亚洲AV综合| 五月天精品| 婷婷成人视频| 丁香五月天视频| 婷婷五月丁香基地| 婷婷伊人网| 亚洲激情婷婷| 色色色无码| 97 A I色色| 97在线精品| 丁香婷婷月| 狠狠撸激情综合丁香五月天俺来啦| 丁香婷婷色| 琪琪色五月婷婷老师| 天天干天干| 99福利导航| 999婷婷综合| 九九RE视频在线精品| 色久九| 91操在线视频| 婷丁香五月天| 婷婷五月天综合在线| 激情五月天婷婷五月天| 欧洲色| 丁香婷婷五月色成人网站| aaa久久| 婷婷在线精品| 狠狠狠狠狠狠| 午夜69成人做爰视频| 中文字幕网伦射乱中文| www.色五月| 国产性av| 天花AV无码| 黄网在线免费播放| 综合五月婷婷| 成人婷婷色五月天| 丁香五月六月婷婷综合激情| 色99网站| 99re热在线视频| 99在线播放视频| 99精品热| 天天综合久久| 久久综合五月天| 欧美性生交XXXXX无码小说| 97luluse| 天堂综合久久| 五月色婷婷在线观看| 色情播放| 五月丁香激情综合网| 91色色色| 在线看的免费网站| 亚洲色综合色网| 激情综合区| 五月丁香狠狠爱婷婷综合| 婷婷丁香成人五月天| 五月婷婷啪啪啪| 久碰视频| 激情婷婷丁香色五月| 色婷婷色五月综合| 96丁香六月婷婷蜜桃综合久久| 九九这里只这里只有精品| 天天搞天天色综合| 激情久久五月天| 香蕉AV福利精品导航| 久久久久五月丁香| 丁香色婷婷| 激情亚洲色图片丁香综合| 激情五月综合| 丁香激情网| 91天堂网综合| ri电影在线| 婷婷五月天天天| 久久婷婷亚洲| 成人VAV视频在线观看| 激情欧美婷婷| 大狠狠在线| 日本九九视频| 精品久久穴| 丁香六月激情四射| 婷婷激情丁五月| 丁香九月综合激情| 91无码一起草| 婷婷五月天久久久| 26uuu欧美激情另类| 少妇人妻人伦A片| 99在线精品免费视频| 伊人网啪啪| 亭亭色天香| www.色五月.com| www.91五月| 五月天色色激情综合| 色婷婷色婷婷五月| 亚洲五月天激情| 国产午夜精品一区二区三区四区| 久久综合五月情| AV伊人青草丁香六月| 色情婷婷五月天| 国自产拍偷拍精品啪啪一区二区 | www.wuyuetian啪啪| 久久作爱| 成人色五婷婷| av免费在线看不卡无毒| 久久99网站| 99久久思思| 淫视馆aV二区一区| 激情婷婷丁香色五月| 激情五月综合免费| 色色激情| www.婷婷,com| 天天做天天爱天天要| 国产精品激情AV久久久青桔| 久久三级视频| 激情久久久久久久久| 久久男人网婷婷| 亚洲AV激情五月综合网| 日本色色图| 91九色超碰正在播放| 中文国产五月天| 极品人妻VIDEOSSS人妻| 欧美天天草人人草| 超碰网站在线观看| 欧美色偷偷大香| 丁香五月婷婷乱| 99国产精品久久久久久久久久久| 91chinese在线| 9999三级片| 97操女视频| 天天操天天日天天爱| 日本操逼九九九九58日本操逼 | 婷婷激情丁香五月天综合| 丁香五月香蕉| 五月综合丁香婷婷| 午夜婷婷久久| 亚洲AV成人在线观看| 伊人玖玖精品| 色情五月天se| 天天天天干| 六月五月丁香五月欧美| 天天噜| 丁香六月激情毛片| 妻久久人久久| 国产婷婷久久| 亚洲第一综合| 精品99在线观看| 激情五月天影院| 久草九一| 99热这里只有精品一区| 黃色三级三级三级三级 qixing300.shrkbk.com www.jinbozs.com tianmiaosw.com | 超碰91在线| 凹凸7777操操操| 大香蕉伊人久久| 99热www.| 精品人妻伦一二三区久久| a色婷婷| 丁香六月激情综合啪啪| 五月综合激情网| 五月婷在线播放| 激情五月天婷婷色色色色色色色色色色色| 人人妻久久妻| 久久涩视频| 日日插日日干| 男人天堂AV在线一区二区| 欧美性丁香色色五月天干干| 久久婷婷夜| 色六月婷婷| 色综合久| 丰满少妇猛烈A片免费看观看| 欧洲激情五月天婷婷| 大香网伊人久久综合| 五月丁香 久久久| 伊人久久婷婷| 襙逼网| 超碰成人在线免费观看| 99热精品在线观看| 婷婷综合网| 亚洲爆乳无码精品AAA片蜜桃| 思思热久在线观看视频| 99re欧美精品| 丁香五月天中文字幕| 91人妻人人操人人爽| 婷婷成人五月天成人文学| 日韩欧美四五区| 日韩人人操| 婷婷五月丁香综合激情| 亚州色综合| 五月婷色色| 夜夜夜天天操| 五月J香蕉婷婷| 几激情五月婷婷色五月色天堂| 婷婷五月综合网| 99久久99久久综合| 五月丁香婷婷潮喷中文字幕| 涩涩激情五月婷婷| 91日本在线| 一本道综合网| 欧美日韩国产一区二区| www.日日夜夜.com| 日本熟妇精品99| 人人摸人人| 六月婷婷之青青草| 婷婷五月综合丁香久久| 人。妻久久| 亚洲人妻av| 婷婷丁香五月天综合在线日韩| 狠狠操天天干| 亚洲综合色网站| 日韩色色色色| 91久久九久久九久久九久久九久久| 五月天五月色婷婷综合| 亚洲性爱AV| 99干视频| 91精品国产99久久久久久天美| 国产又粗又大又爽又黄| 久久久无码精品成人A片小说 | 偷拍五月丁香| 欧美啄木乌丝袜人妻系列| 日本 欧美在线| 五月天婷婷狂暴白浆| 亚洲综合另类| 婷婷五月天激情小说网站| 久久精品99久久久久久| 无码人妻丰满熟妇奶水区码| 国产色丁香| 激情啪啪五月天| 99操| 激情婷婷久久| 成人性爱精品视频| 亚洲综合在线伊人婷| 亲子乱AV-区二区三区| 九九99久久| 日日撸夜夜操| 中国AV性爱观看| 日日干天天射| www99xxxx五月丁| 全部老头和老太XXXXX| 婷婷五月激情图片| 丁香五月综合图片在线观看| 五月亭久久无码视频| 欧美私人家庭影院| 99在线观看精品视频| 俺五月| 久操热| 欧美丁香五月| 九热网站| 99精品久久| A久久| 婷婷五月天偷拍| 色婷婷五月天激情在线播放| 狠狠干综合| 九九aV| 亚洲第一综合| 丁香五月综合在线视频| 午夜性爱影视一区77| 丁香六月婷婷久久综合| 婷婷 伊人 久久| 大大香蕉综合在线| 欧美叉叉叉BBB网站| 五月丁香激情综合网| 亚洲视频操| 亚洲天天操| 看国产探花操逼三级片| 久久最新色色色| 丁香婷婷午夜| 少妇大叫太大太粗太爽了A片| 丁香五月婷婷六月| 91婷婷搞| 婷婷娌伦网| 色婷婷五月天激情在线观看| 人人视频色| 第四色色六月色综合| 婷婷综合五月| 久久精品4| 色色激情五月| 操操自拍| 丁香婷婷久久综合在线| 最近免费中文字幕大全高清大全1 免费看欧美成人A片无码 | 激情六月一二| 五月天激情网址| 精品九九在线观看| 五月婷婷丁香深深爱| 久思思热视频在线观看| 色综合色综合网| 级情九色| 大香蕉久久| 99热国产免费| 国产精品美女| 六月婷婷色综合| 99色在线视频| 丁香五月天黄色片| AV在线资源| 在线不卡视频| 婷婷色五月天在线观看| 开心五月网| 婷婷五月天社区| 这里有精品| 精品夜夜澡人妻无码AV| 99这里只有精品视频| 亚洲色五月婷婷| 大香蕉久操| 五月婷亚洲精品| 很很干天天干| 五月综合丁香婷婷| 成人av免费观看| www.狠狠| 色欲一区二区三区精品A片| 日本人妻伦在线中文字幕| 伊人丁香在线| 九九AV| 五月色网| 91狠狠综合久久| 国产麻豆视频| 九九操屄| 色婷婷最新域名| 日韩成人AV在线播放| 亚洲欧洲另类| 99re熱| 超碰AAAAAAV| 俺也去综合| 蜜桃五月天色| 久久99成人性爱高清视频| 青草激情综合| 久久久91| 99国产精品久久久久久久久久久 | 天天噜日日噜综合无码| 亚洲午夜精品久久久久久人妖| 五月天亚洲最大成人| 欧美交换配乱吟粗大25P| 欧美怡红院黄站| 狠狠操狠狠色| se色婷婷视频| 国洲夜色亚热在线久久| 香蕉国产2013| 久久久er热| 五月丁香婷婷俺| 亚洲视色| 人人摸人人澡人人| 色久天| 99热热热99精品丁香| 日韩操啪| 久久久五月天| 九九免费在线视频| 开心五月天激情网站| 婷婷五月激情欧美| 99精品偷自拍| 久久视频婷婷| 夜夜骑日日操| 婷婷五月天首页| 中文字幕AV网址| 精品成人无码A片观看香草视频| 99在线综合视频| 六月丁香婷婷视频综合在线观看| 色婷婷丁香六月| 欧美人妻一区二区| 日日天天干| 久久99精品久| 66精品国产成人| 思思精品久久艹 | 欧美天天五月丁香免费观看| 婷婷五月综合视频| 黄色三级日本| 99色人| 色99在线| 26uuu精品国产| 超碰九色| 色色色色色综合| 情欲综合网| 五月婷婷人人人操| 午夜大香蕉| 色播播婷婷| 色五月色综合| 99热.com| www.五月婷| 久操热| 大香蕉九九热| 五月婷六月丁| 色屌丝中文字幕| 国产1区2区| 国产热精品| 五月婷婷激情久久| 丁香五月手机视频| 中文不卡一二三区| 黄色一级影片| 超碰人人在线观看| 五月丁香久久网| 日韩黄色电影| 久久XX日本综合| 色五月综合网| 色五月av| 久久曰9| 天天干狠狠操| 欧美啪啪9| 精品一区二区三区三区| 婷婷五月天99| 亚洲操操| 日本色99| 996er热| 丁香五月天激情四射网络不好 | 色五月婷婷久久| 亚洲AV综合在线观看| 九九热婷婷| AV性爱网| 四川操逼站| 99色性爰网络| 亚洲色频| 综合五月丁香六月婷婷| 男人大jjc女人免费视频| 啪啪干伊人婷婷| 麻豆AV一区二区三区| 激情五月图| 日本99热| 久久综合网免费视频| 婷婷五月综合在线| 丁香婷婷综合激情五月色,开心五月丁香花综合网,激情综合五月亚洲婷婷,五月天 | 丁香婷婷人妻综合网| 五月婷婷六月天| 丁香五月激情宗合网| 欧美影院婷婷| 国产.亚洲.欧洲视频在线| 99re8这里只有精品99re8热视频| 成人龟情网丁香五月| 色五月天天| 婷婷97色| 综合久久人妻| 精品导航在线x不卡| 深爱开心激情| 九月色婷婷综合| 欧美色97| 黄色AV日韩| 五月丁香综合激情| 99热精品在线播放观看| 成 人片 黄 色 大 片| 九九色99| 丁香久久激情俄| 天天干天天拍| 色综合久久44| 99色综合| 五月色丁香婷婷中文字幕| 五月激情四射网站| 五月丁香六月婷婷国产视频| 97碰在线免费观看| 99热e| 婷婷色五月婷婷姐妹| 亚洲无AV在线中文字幕| 99色看| 五月天色欧美| 色域五月婷婷丁香| 亚洲综合激情五月久久| 激情五月天色播| 思思re视频在线| 精品一区二区三区三区| 五月丁香好婷婷A片网| 五月丁香婷婷爱激情综合网| 中文字幕日产A片在线看| 26uuu亚洲欧美| 玖玖五月丁香| 亚洲精品大片| 丁香五月综合图片在线观看| 九月色婷婷综合亚洲| www.天天干| 久鲁鲁色网 | 九热视频| 99综合激情久久精品久久| 影音先锋天天日| 夜夜操天天干| 深爱激情网噜噜色| 九伊人网| AAA久久| VfJxEwPH| 亚洲国产成人综合| 全部老头和老太XXXXX| www.com五月天| 国产激情综合| 婷婷五月激情四射手| 九九精品热播| 亚洲天天免费| 殴美97色| 色婷婷久久综合中文久久一本| 79色色免费| xx久久| 国产看真人毛片爱做A片| 思思热视频| 丁香婷婷综合激情五月色,开心五月丁香花综合网,激情综合五月亚洲婷婷,五月天 | 九九热这里精品| 人妻激情网| 开心五月深爱五月| 婷婷五月天在线综合| 99 r热| 激情骚五月| 国产在线aaa片一区二区99|