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

Java在線問題排查利器之Btrace&Greys

新聞 后端
本文主要介紹了兩款java 排查問題的工具 Btrace 和 Greys。他們都比較適合對生成環境的問題進行排查,都屬于“事后工具” ,即服務已經上線了,無法再通過打印日志等方式埋點分析。這時可以使用這些工具,來跟蹤代碼執行耗時、堆棧情況等。

1. 背景說明

前段時間升級了urs新的遠程cookie校驗模式。功能上線后,發現涉及用戶cookie 校驗的接口,有時會報接口超時。通過日志埋點方式,確認了與urs提供的jar包內的新驗證方法有關。通過反編譯,看到相關方法執行過程中涉及參數校驗、參數組裝、遠程訪問校驗、本地校驗等步驟,究竟哪個步驟出了問題?

一種方式是讓urs幫忙提供一個新的jar包,在關鍵步驟處加日志,記錄執行時間,另一種方法,就是使用一些在線分析工具。顯然第二種方式更方便快捷。本文主要介紹兩款在線問題排的工具:Btrace 和 Greys 。

2. 工具簡介

Btrace 和 Greys 都比較適合對生成環境的問題進行排查,都屬于“事后工具” ,即服務已經上線了,無法再通過打印日志等方式埋點分析。這時可以使用這些工具,來跟蹤代碼執行耗時、堆棧情況等。

原理

都是基于動態字節碼修改技術(Hotswap)來實現運行時 java 程序的跟蹤和替換。
利用了Java SE 6 新特性Instrumentation 。

使用場景

  • 分析哪些方法慢,查詢具體的故障點;
  • 查看方法的參數、返回值;
  • 查看對象屬性等;

Btrace 和 Greys

Btrace 和 Greys 都屬于工具,本文以實例,介紹如何使用,不再對其本身進行介紹,如果想進一步了解,可以直接去下面的鏈接:

類型 介紹
Btrace https://github.com/btraceio/btrace/wiki
Greys介紹 https://yq.aliyun.com/articles/2390

3. 實例-使用工具排查問題

urs新提供了遠程cookie的校驗jar包,其中關鍵的方法為遠程調用方法
CookieDecoder.requestDecode(**),我們主要對這個方法進行跟蹤。

3.1 使用Btrace

由于我們的tomcat 在 appuser 用戶下,為了有相應權限,我們的操作都在 appuser 用戶下進行。
大體步驟分為:

  • 下載解壓 btrace 工具;
  • 編寫監控腳本;
  • 設置jdk/btrace 環境變量,上傳腳本,編譯
  • 獲取tomcat 進程號
  • 啟動監控
  • 查看詳情

具體操作:

(1)下載btrace工具 btrace-bin-1.3.9.tgz 并解壓縮
alt

(2) 編寫一個監控腳本(java代碼 UrsInterfaceCalls.java),

即需要監控的具體類和方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
@BTrace                         // 備注1
public class UrsInterfaceCalls{

/**
* 備注2
* 本代碼用于監控 CookieDecoder 中 requestDecode 方法的執行時間,如果執行時間大于 500ms,則打印花費的時間和堆棧
* @param duration
*/
@OnMethod(
clazz="com.netease.urs.CookieDecoder",
method="requestDecode",
location=@Location(Kind.RETURN)) // 備注2
public static void requestDecode( @Duration long duration ) { // 備注3
//備注4
if(duration /1000000 > 500){
println("==CookieDecoder requestDecode spend: " + duration /1000000 + " ms");
jstack();
}
}

/**
* 本代碼用于監控 CustomHttpComponent 中 execute 方法的執行時間,如果執行時間大于 500ms,則打印花費的時間和堆棧
* @param duration
*/
@OnMethod(
clazz="com.netease.urs.http.CustomHttpComponent",
method="execute",
location=@Location(Kind.RETURN))
public static void execute( @Duration long duration ) {
if(duration /1000000 > 500){
println("==ursCookieHttp doExecute spend: " + duration /1000000 + " ms");
jstack();
}
}
}

簡要說明

本監控類,寫了兩個監控方法:
一個是監聽CookieDecoder.requestDecode()的執行時間,如果大于 500ms,則打印日志,并打印相關堆棧;
另一個監聽CustomHttpComponent.execute()的執行時間。

備注1: 添加注釋 @BTrace ,代表本腳本將使用btrace相關功能;

備注2: 攔截方法定義 ,@OnMethod 可以指定 clazz 、 method、location。由此組成了在什么時機(location 決定)監控某個類/某些類(clazz 決定)下的某個方法/某些方法(method 決定)。

1
@OnMethod(clazz="com.netease.urs.CookieDecoder",method="requestDecode",location=@Location(Kind.RETURN))

意思是監控CookieDecoder.requestDecode() ,在執行結束后(location=@Location(Kind.RETURN) 執行相關操作。

備注3: @Duration 代表方法執行時間,納秒。

備注4: 只打印 耗時超過500ms的信息及堆棧,防止記錄打印大多。

方法注解說明

  • @OnMethod:指定使用當前注解的方法應該在什么情況下觸發:
    • claszz屬性指定要匹配的類的全限定類名,可以用正則表達式;
    • method屬性指定要匹配的方法名稱,可以用正則表達式;
    • type屬性void(java.lang.String)可以用于匹配:public void funcName(String param) 中的方法入參;
    • location屬性用@Location來表明,匹配了clazz,method情況,在方法執行的何時去執行腳本(前,后,異常,行,某個方法調用)
  • @OnTimer:指定一個定時任務
  • @OnExit:當腳本運行Sys.exit(code)時觸發
  • @OnError:當腳本運行拋出異常時觸發
  • @OnEvent:腳本運行時Ctrl+C可以發送事件
  • @OnLowMemory:讓你指定一個閥值,內存低于閥值觸發
  • @OnProbe:可以用一個xml文件來描述你想在什么時候觸發該方法

方法參數注解說明

  • @Self:目標對象本身
  • @Retrun:目標程序方法返回值(Kind.RETURN)
  • @ProbeClassName:目標類名
  • @ProbeMethodName:目標方法名
  • @targetInstance:@Location指定的clazz,method的目標(Kind.CALL)
  • @targetMethodOrField:@Location指定的clazz,method的目標的方法或字段(Kind.CALL)
  • @Duration:目標方法執行時間,單位是納秒,需要與 Kind.RETURN 或者 Kind.ERROR 一起使用

(3)設置jdk/btrace 環境變量

1
2
3
4
5
6
7
export JAVA_HOME=/home/jdk1.8.0
export JRE_HOME=/home/jdk1.8.0/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=$JAVA_HOME/bin:$PATH

export BTRACE_HOME=/home/appuser/bTrace
export PATH=$BTRACE_HOME/bin:$PATH

 上傳監控腳本 UrsInterfaceCalls.java 到服務器;

可以用 btracec 進行預編譯,以保證代碼無誤

(4)獲取tomcat的執行進程號 ps aux |grep “/fa.163.com”
alt

(5)進入UrsInterfaceCalls.java所在目錄,啟動btrace監控,監聽指定進程號19504(即jvm的進程號)

1
sh btrace -p 2021 19054  UrsInterfaceCalls.java

-p 2021 :指定一個端口號,防止多個執行導致端口沖突;
19054 :要監聽的進程號
UrsInterfaceCalls.java :監聽腳本

(6)查看結果
如果方法執行超過500ms,會打印日志,同時打印堆棧;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

==CookieDecoder requestDecode spend: 525 ms
com.netease.urs.CookieDecoder.requestDecode(CookieDecoder.java:64)
com.netease.urs.ntescode.validate_cookie_online(ntescode.java:49)
com.netease.common.util.CookieUtil.getUserInfoFromUrsRemoteCookie(CookieUtil.java:317)
com.netease.lottery.service.util.CookieUtilServiceImpl.getUserInfoFromUrsRemoteCookie(CookieUtilServiceImpl.java:88)
com.netease.lottery.service.util.CookieUtilServiceImpl$$FastClassByCGLIB$$1bd66cf1.invoke(<generated>)
org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)

.......

org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1708)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.lang.Thread.run(Thread.java:745)

如果要定位具體耗時,需要對各個關鍵方法,都添加監控腳本。

3.2 使用Greys

使用greys,無需編寫 腳步,它是命令交互式的,直接輸入命令指定監控的類、方法。
但是每次只能監控一個方法,不能像 Btrace,可以同時監控多個方法。

使用過程大體步驟:

  • 下載解壓 Greys工具,安裝;
  • 設置jdk 環境變量
  • 獲取tomcat 進程號
  • 啟動監控
  • 查看詳情

具體步驟:
(1)下載***版本的Greys、解壓后,執行安裝命令

1
sh ./install-local.sh

(2)設置環境變量

1
2
3
4
export JAVA_HOME=/home/jdk1.8.0
export JRE_HOME=/home/jdk1.8.0/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=$JAVA_HOME/bin:$PATH

(3)查詢 jvm的進程號,進入greys安裝目錄,啟動Greys

1
./greys.sh 10437

10437 為 jvm的進程號

(4)啟動后,就可以通過交互式命令方式,對指定的類、方法進行分析。

使用help 可以看到各種命令。

alt

(5)使用 trace命令 跟蹤指定類、方法的執行時間、參數、返回值情況;
使用 help trace,查詢使用方式

alt

例如:跟蹤CookieDecoder類中 requestDecode()方法耗時超過500ms 的方法執行情況:

1
trace  -n 2  com.netease.urs.CookieDecoder  requestDecode    '#cost>500'

-n 2 :代表只打印2次就退出(防止刷屏,影響性能);
com.netease.urs.CookieDecoder :監聽的類名
requestDecode :監聽的方法名
‘#cost>500’ : 打印條件為 耗時超過 500ms

執行后,會顯示:

1
2
3
ga?>trace  -n 2  com.netease.urs.CookieDecoder  requestDecode    '#cost>10'
Press Ctrl+D to abort.
Affect(class-cnt:1 , method-cnt:2) cost in 262 ms.

代表動態修改了一個類,對兩個方法(例如方法重載)進行監控,修改花費262毫秒。

如果出現滿足條件的情況,則我們會看到打印結果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
`---+Tracing for : thread_name="http-nio-8003-exec-8" thread_id=0x7a;is_daemon=true;priority=5;
`---+[5283,5283ms]com.netease.urs.CookieDecoder:requestDecode()
+---[1,0ms]java.lang.System:nanoTime()
+---[2,1ms]org.apache.http.client.methods.HttpPost:<init>(@39)
+---[2,0ms]java.lang.StringBuffer:<init>(@41)
+---[2,0ms]java.lang.StringBuffer:append(@42)
+---[2,0ms]java.net.URLEncoder:encode(@43)
+---[2,0ms]java.lang.StringBuffer:append(@43)
+---[2,0ms]java.lang.StringBuffer:append(@44)
+---[2,0ms]java.lang.StringBuffer:append(@45)
+---[2,0ms]java.lang.StringBuffer:append(@46)
+---[2,0ms]java.lang.StringBuffer:append(@47)
+---[2,0ms]java.lang.StringBuffer:append(@48)
+---[2,0ms]java.lang.Integer:<init>(@49)
+---[2,0ms]java.lang.Integer:<init>(@49)
+---[2,0ms]java.lang.reflect.Method:invoke(@49)
+---[2,0ms]java.lang.StringBuffer:append(@49)
+---[2,0ms]java.lang.StringBuffer:toString(@50)
+---[2,0ms]org.apache.http.entity.StringEntity:<init>(@50)
+---[2,0ms]org.apache.http.entity.StringEntity:setContentType(@51)
+---[2,0ms]org.apache.http.client.methods.HttpPost:setEntity(@52)
+---[2,0ms]org.apache.http.client.methods.HttpPost:getParams(@53)
+---[2,0ms]org.apache.http.params.HttpParams:setIntParameter(@55)
+---[2,0ms]org.apache.http.params.HttpParams:setIntParameter(@58)
+---[5282,5280ms]com.netease.urs.http.CustomHttpComponent:execute(@60)
+---[5283,0ms]org.apache.http.HttpResponse:getEntity(@61)
+---[5283,0ms]org.apache.http.util.EntityUtils:toString(@62)
+---[5283,0ms]com.netease.urs.util.LogUtil:debug(@63)
+---[5283,0ms]org.apache.http.client.methods.HttpPost:releaseConnection(@71)
+---[5283,0ms]java.lang.System:nanoTime(@64)
`---[5283,0ms]com.netease.urs.CookieDecoder:$btrace$com$netease$fa$trace$UrsInterfaceCalls$2$requestDecode(@64)

可以看到,主要耗時在

1
+---[5282,5280ms]com.netease.urs.http.CustomHttpComponent:execute(@60)

 只要一層一層跟蹤下去,就可以最終定位問題。

(6)退出前可以使用 reset 恢復增強類(即被動態修改的代碼)

(7)***,使用shutdown 關閉greys 并退出

4.總結說明

(1) 相比兩個工具,btrace 需要手寫腳步,每次更新都要重新上傳再執行,而greys 支持命令式交互,無需手寫腳本;

(2)btrace 腳步中,可以寫多個監聽類和方法,但是greys 命令同時只能輸入一個。(但是greys 可以支持多個用戶操作,所如果想同時監控多個方法,只能開多窗口)

(3)btrace 要確保監控腳本的正確性,使用前***預編譯,防止動態增強后影響在線功能;

(4)監控時,設置合適的條件,例如在 greys實例中,花費時間大于 N ms才輸出,且只打印2個。

(5)greys 中只能顯示1層的方法調用情況,無法直接跟蹤到***層;只能自己一層一層往下跟進。

【編輯推薦】

【責任編輯:張燕妮 TEL:(010)68476606】

責任編輯:張燕妮 來源: 網易樂得技術團隊
相關推薦

2011-03-28 10:03:46

Btrace

2023-03-03 09:33:45

ArthasJava診斷工具

2021-12-01 15:03:56

Java開發代碼

2022-09-21 08:16:18

緩存框架

2025-03-18 08:10:00

iodump開源I/O

2024-08-14 14:20:00

2023-07-19 12:24:48

C++constexpr?語句

2021-11-30 19:58:51

Java問題排查

2020-07-16 10:19:43

程序員技能開發者

2021-11-14 05:00:56

排查Sdk方式

2021-06-01 07:55:42

DockerEOFk8s

2022-01-26 19:42:05

MySQL亂碼排查

2011-06-06 09:57:43

任務管理器

2012-06-25 17:21:15

天天記事

2011-11-14 09:17:14

Linux運維ClusterShel

2024-12-02 09:10:15

Redis性能優化

2021-03-04 07:24:24

JavaSemaphore高并發

2021-03-18 00:14:29

JavaCyclicBarri高并發

2021-03-11 00:05:55

Java高并發編程

2025-08-29 07:32:17

點贊
收藏

51CTO技術棧公眾號

久久伊人精品一区二区三区| 五月婷婷另类国产| 91影院在线免费观看视频| 免看一级a毛片一片成人不卡| 97色成人综合网站| 色婷婷久久久久swag精品| 在线观看一区二区三区三州| 韩国av免费在线| 日日摸夜夜添夜夜添国产精品 | 啪啪免费视频一区| 久久精品一区八戒影视| 91国产在线播放| 国产午夜精品久久久久| 欧美一区在线看| 亚洲视频在线免费观看| 亚洲精品国产久| 在线看片福利| 一区二区三区资源| 日本一区视频在线观看免费| 国产成人三级在线观看视频| 蜜臀av性久久久久蜜臀av麻豆| 久久久久成人精品| а天堂中文在线资源| 欧美爱爱网站| 欧美电影免费观看完整版| 午夜在线观看av| 黄色在线免费观看网站| 亚洲黄色在线视频| 一本久道久久综合| 番号在线播放| 久久久久久久久久久99999| 999精品视频一区二区三区| 中文字幕在线播放av| 免费在线成人| 国内精品久久久久久久| www青青草原| 91精品国产福利在线观看麻豆| 亚洲天堂av高清| 双性尿奴穿贞c带憋尿| 亚洲天堂中文字幕在线观看| 91.com视频| 国产精品久久久久婷婷| 深夜福利一区| www国产成人免费观看视频 深夜成人网| 国产精品一区二区三区毛片淫片| 亚洲男人第一av| 亚洲午夜黄色| 欧美夫妻性生活xx| 久久久久久久久久久久久女过产乱| 巨胸喷奶水www久久久| 色婷婷色综合| 国产视频在线观看一区二区| 国产精品探花一区二区在线观看| 久久九九热re6这里有精品| 精品福利av导航| www.四虎在线| 精品视频在线你懂得| 欧美精品一区二区三区视频| 黄色av电影网站| 成午夜精品一区二区三区软件| 日韩午夜精品电影| 国产a√精品区二区三区四区| 亚洲视频国产精品| 亚洲第一区第二区| 人妻在线日韩免费视频| 免费看av成人| 国产一区二区三区日韩欧美| 亚洲a∨无码无在线观看| 久久亚洲成人| 欧美成人激情视频免费观看| 免费人成视频在线| 影音先锋久久资源网| …久久精品99久久香蕉国产| 日韩美一区二区| 日韩福利电影在线观看| 国产日韩av在线| 精品国产亚洲av麻豆| 国产69精品一区二区亚洲孕妇| 国产精品区一区二区三含羞草| 四虎影视在线观看2413| 国产欧美日韩亚州综合| 亚洲午夜久久久影院伊人| 欧美成人hd| 亚洲尤物视频在线| 无码无遮挡又大又爽又黄的视频| jizzyou欧美16| 日韩欧美123| 日本免费福利视频| 久久综合电影| 久久久亚洲影院你懂的| 欧美brazzers| 国产91高潮流白浆在线麻豆| 欧美久久电影| 操你啦在线视频| 天天色图综合网| 性欧美1819| 久久精品亚洲成在人线av网址| 国产亚洲一区二区在线| 国产又粗又硬又长又爽| 在线一区视频| 91在线观看免费高清| 婷婷久久久久久| 亚洲欧洲精品天堂一级| 久久久亚洲精品无码| 欧美aaa级| 亚洲精品国产精品国自产在线| 国产白丝一区二区三区 | 一区二区三区精品99久久| 成年人一级黄色片| 三级欧美韩日大片在线看| 91久久国产综合久久蜜月精品| 免费a级毛片在线观看| 亚洲免费伊人电影| 久久综合伊人77777麻豆最新章节| 最新国产一区二区| 色吧影院999| aaa人片在线| 国产.欧美.日韩| 亚洲一区三区电影在线观看| 亚洲优女在线| 欧美成人三级电影在线| 少妇高潮惨叫久久久久| 中文在线一区| av蓝导航精品导航| 电影av一区| 色一情一伦一子一伦一区| 国产精品久久久久久在线观看| 国产精品7m凸凹视频分类| 国产91在线高潮白浆在线观看| 日本激情视频网站| 一区二区三区日韩精品| 午夜av中文字幕| 久久综合成人| 国产日韩欧美在线看| 高清国产福利在线观看| 一本一道久久a久久精品综合蜜臀| 91精品又粗又猛又爽| 在线成人直播| 成人啪啪免费看| 视频免费一区| 欧美精品久久99久久在免费线 | 手机福利在线| 黄网站色欧美视频| 中文字幕日韩三级片| 亚洲午夜精品久久久久久app| 91色琪琪电影亚洲精品久久| 午夜免费福利在线观看| 欧美在线视频全部完| 舐め犯し波多野结衣在线观看| 久久精品中文| 日本一区二区视频| 亚洲a∨精品一区二区三区导航| 亚洲男人第一网站| 成人h动漫精品一区二区下载| 国产亚洲美州欧州综合国| 免费高清在线观看免费| 国产精品亚洲片在线播放| 日韩免费中文字幕| aaa日本高清在线播放免费观看| 欧洲激情一区二区| 国产在线免费av| 国产美女一区二区| www.在线观看av| 欧美尿孔扩张虐视频| 欧洲精品在线视频| 国产精品视频二区三区| 欧美日韩国产高清一区二区三区 | 激情欧美日韩| 激情五月综合色婷婷一区二区| 水蜜桃在线视频| 亚洲午夜精品久久久久久久久久久久| 免费精品一区二区| 亚洲欧美色图小说| 性色av蜜臀av浪潮av老女人 | 亚洲18在线看污www麻豆| 亚洲色图欧美| 精品蜜桃一区二区三区| 欧美国产大片| 北条麻妃久久精品| 亚洲乱熟女一区二区| 粉嫩av一区二区三区免费野| 中文字幕av久久爽一区| 国产精品亚洲综合一区在线观看| 高清欧美精品xxxxx| 精品国产美女| 97人摸人人澡人人人超一碰| 校园春色亚洲| 久久视频这里只有精品| 日韩av成人| 91精品国产综合久久久久久漫画| 日韩aaaaaa| 国产精品久久久久久久裸模| 一边摸一边做爽的视频17国产| 久久青草久久| 国产一级大片免费看| 久久99久久人婷婷精品综合| 91在线免费看网站| videos性欧美另类高清| 欧美精品在线观看91| 欧美美女色图| 精品蜜桃在线看| 在线观看毛片av| 精品久久久视频| 国产97免费视频| 欧美经典一区二区| 亚洲图片综合网| 国产成人精品亚洲777人妖| 无人在线观看的免费高清视频| 国语精品一区| 综合操久久久| 精品视频免费| 欧美激情一区二区三区在线视频 | 亚洲成人av在线| 国产精品国产三级国产aⅴ| 精品福利视频导航| 欧美成人手机视频| 国产精品国产精品国产专区不片| 丰满少妇一区二区三区| 国产精品一区不卡| 波多野结衣xxxx| 久久狠狠一本精品综合网| 日韩在线视频在线| 91国语精品自产拍| 亚洲一区三区| 欧美肥老太太性生活| 日本一区二区三区免费观看| 日韩高清在线免费观看| av一区二区在线看| 成人国产精品久久| 国产欧美精品日韩精品| 成人网ww555视频免费看| 欧美怡春院一区二区三区| 9999精品成人免费毛片在线看| 精品综合久久久久久97| 国产淫片在线观看| 久久精品国产亚洲精品| 日韩伦理在线电影| 中文字幕亚洲一区二区三区五十路 | 欧美精品在线一区| 中文字幕精品影院| 免费h精品视频在线播放| 欧美成人基地| 蜜桃麻豆www久久国产精品| 精品三级av| 国内一区在线| 亚洲精品小区久久久久久| 久久久久久久有限公司| 偷拍精品福利视频导航| 久久久久久欧美精品色一二三四| 欧美一性一交| 免费亚洲精品视频| 一区二区三区视频免费观看| 欧美激情国产日韩| av伊人久久| 亚洲成人精品电影在线观看| 成人在线国产| 一卡二卡3卡四卡高清精品视频| 色婷婷一区二区三区| 裸体裸乳免费看| 欧美激情综合色综合啪啪| 国产亚洲黄色片| 一道本一区二区| 国产免费人做人爱午夜视频| 日本麻豆一区二区三区视频| 中文字幕在线观看日| 国产精品自拍毛片| 无码任你躁久久久久久老妇| 99riav久久精品riav| 天天躁日日躁aaaa视频| 国产精品美女久久久久久久久久久| 老司机精品免费视频| 亚洲综合视频网| 美女又爽又黄免费视频| 欧美性一二三区| 精品国产伦一区二区三区| 亚洲第一福利网| 国产高清av在线| 欧美老女人性视频| 日产福利视频在线观看| 国产精品午夜国产小视频| 国产精品成人**免费视频| 黑人巨大精品欧美一区二区小视频| 免费精品国产| 日韩精品手机在线观看| 另类av一区二区| 中文字幕亚洲影院| 99久久99久久精品国产片果冻| 在线观看国产精品一区| 亚洲卡通欧美制服中文| www.国产com| 欧美一区二区视频在线观看| 神马久久精品| 欧美精品免费播放| 日韩高清中文字幕一区二区| 亚洲一区二区三区sesese| 亚洲老女人视频免费| 偷拍盗摄高潮叫床对白清晰| 亚洲国产免费看| 岛国av免费在线| 久久久青草青青国产亚洲免观| 成人免费毛片xxx| 色呦呦一区二区三区| 亚洲成熟女性毛茸茸| 一区二区三区精品99久久 | 国自产拍偷拍福利精品免费一| 日韩视频免费在线播放| 成人晚上爱看视频| 久久国产高清视频| 91久久久免费一区二区| 丰满人妻熟女aⅴ一区| xvideos亚洲人网站| 理论片午夜视频在线观看| 成人激情视频网| 国产一区二区在线| 奇米影视亚洲色图| 国产精品综合二区| 日本 欧美 国产| 色久综合一二码| 性xxxxbbbb| 久久久久久国产精品美女| 国产激情精品一区二区三区| 奇米视频888战线精品播放| 亚洲精品社区| 337p日本欧洲亚洲大胆张筱雨| 国产精品久久久久aaaa| 欧美另类高清videos的特点| 日韩精品高清视频| f2c人成在线观看免费视频| 亚洲jizzjizz日本少妇| 999成人网| 色乱码一区二区三区在线| 久久久久99精品国产片| 国产又大又黄视频| 国产丝袜一区视频在线观看| 美女av在线免费看| 国内精品**久久毛片app| 亚洲国产精品第一区二区| www.四虎精品| 亚洲图片自拍偷拍| 人妻无码中文字幕| 久久久视频在线| 精品精品精品| 日本毛片在线免费观看| bt7086福利一区国产| 国产精品16p| 亚洲国产日韩一区| 黑人巨大亚洲一区二区久| 免费观看成人高| 日韩中文字幕麻豆| 东京热无码av男人的天堂| 精品视频在线看| 老司机精品视频在线观看6| 成人免费看吃奶视频网站| 国产精品久久久久久影院8一贰佰 国产精品久久久久久麻豆一区软件 | 欧美色道久久88综合亚洲精品| 天天干天天干天天干| 96精品视频在线| 国产乱码精品一区二区亚洲 | 国产成人精品免费看| 麻豆影视在线播放| 亚洲黄色成人网| 自拍偷自拍亚洲精品被多人伦好爽 | 一区二区三区精品在线观看| 亚洲精品第五页| 66m—66摸成人免费视频| 欧美**vk| 色一情一区二区三区| 亚洲精品美腿丝袜| 天堂国产一区二区三区| 国产成人精品一区二区三区| 欧美激情理论| 动漫美女无遮挡免费| 色综合久久综合| 五月婷婷在线观看| 国产91精品一区二区绿帽| 亚洲深夜av| 三上悠亚作品在线观看| 亚洲国产91精品在线观看| 高清电影一区| 看一级黄色录像| 2023国产精品自拍| 国产精品久久婷婷| 91精品国产99| 国产大片一区| 免费的av网站| 欧美情侣在线播放| 国产不卡人人| 亚洲一区二区三区涩| 成人av在线播放网址| 这里只有精品999| 色与欲影视天天看综合网| 欧美日本成人| 国产伦精品一区二区三区妓女下载| 欧美日韩视频免费播放| 男人的天堂在线视频免费观看| 国产精品国产精品| 蜜桃精品视频在线观看| 欧美a∨亚洲欧美亚洲| 久久精品国产2020观看福利| 日韩av字幕|