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

欧美这里只有精品| 国产97在线|亚洲| 国产女主播在线播放| 激情黄产视频在线免费观看| 久久婷婷综合激情| 国产欧美最新羞羞视频在线观看| 中文字幕av专区| 性欧美videos高清hd4k| 久久久另类综合| 亚洲japanese制服美女| 国产99久久久| 91日韩免费| 精品一区二区三区四区在线| 中文字幕久久av| 天堂中文最新版在线中文| 国产精品美女www爽爽爽| 国产精品久久久久久久久久直播 | 国产欧美精品在线| 欧美精品久久久久性色| 免费看成人哺乳视频网站| 67194成人在线观看| www精品久久| 日本免费中文字幕在线| 久久婷婷国产综合精品青草| 亚洲影视中文字幕| 又骚又黄的视频| 在线综合欧美| 欧美激情精品久久久久久变态| 中文字幕在线视频一区二区| 欧美第一视频| 欧美日韩亚洲视频| 成人毛片100部免费看| a√资源在线| 国产视频一区在线播放| 精品欧美一区二区久久久伦| 亚洲av少妇一区二区在线观看 | 久久黄色一级视频| 水蜜桃av无码| 国产高清视频一区二区| 91成人看片片| 欧美 日本 亚洲| 免费在线看污片| 亚洲欧洲av另类| 欧美日韩一区二区三| 亚洲不卡免费视频| 狠狠色2019综合网| 国产欧美久久久久久| 无码aⅴ精品一区二区三区| 尤物精品在线| 久久久久久久久久国产精品| 欧美风情第一页| 日韩欧美中字| 中文字幕无线精品亚洲乱码一区| 五月天亚洲视频| xxxxxx欧美| 欧美性色视频在线| 久久网站免费视频| 希岛爱理一区二区三区av高清| 国产精品美女久久久久久久久久久 | 性久久久久久久久久久| 凹凸av导航大全精品| 欧美mv日韩mv国产网站| 日本美女视频网站| 欧美网色网址| 亚洲三级 欧美三级| b站大片免费直播| 亚洲亚洲免费| 最近2019中文字幕大全第二页| 亚洲av综合色区无码另类小说| 国产网站在线| 婷婷国产v国产偷v亚洲高清| 欧美亚洲精品一区二区| 在线天堂新版最新版在线8| 日韩欧美黄色动漫| 五月婷婷深爱五月| 亚洲欧洲一二区| 日韩精品一区二区三区视频在线观看 | 日韩欧美中文字幕在线观看| 国产日产欧美视频| 日韩电影免费观| 欧美日本一区二区三区四区| 免费高清视频在线观看| 国产三级精品三级在线观看国产| 欧美日本在线播放| 日本泡妞xxxx免费视频软件| 综合激情五月婷婷| 日韩国产欧美区| 99在线视频免费| 欧美成人精品| 欧美中文字幕视频| 国产一区二区视频免费观看| 成人动漫中文字幕| 日韩成人av网站| 综合久久2o19| 色av一区二区| 国产人妻精品久久久久野外| 成人在线视频中文字幕| 国产一区二区三区高清在线观看| 国产草草浮力影院| 俺要去色综合狠狠| 久久久久久久一区二区| 激情网站在线观看| 国产精品18久久久久久久久久久久| 国产成人精品视| av中文字幕免费| 99久久精品国产一区| 一本一道久久a久久综合精品| 国产福利在线| 亚洲一区视频在线| 丁香婷婷激情网| jizz久久精品永久免费| 上原亚衣av一区二区三区| 国产一级大片在线观看| 美女在线视频一区| 精品在线不卡| 在线三级中文| 91 com成人网| 波多野结衣一二三四区| 99在线|亚洲一区二区| 成人在线精品视频| 国产69久久| 欧美日韩另类字幕中文| 丰满人妻一区二区三区大胸| 欧美亚洲高清| 欧洲成人免费aa| 秋霞欧美在线观看| 亚洲精品你懂的| 国产熟女高潮视频| 国产欧美自拍一区| 久久久久免费视频| 国产超碰人人模人人爽人人添| 成人中文字幕在线| 18视频在线观看娇喘| 天堂久久午夜av| 亚洲欧美另类在线观看| 日韩黄色精品视频| 成人性色生活片| 波多野结衣与黑人| 99精品女人在线观看免费视频| 欧美一级免费大片| 欧美视频一区二区在线| 奇米精品一区二区三区在线观看一| 91在线免费网站| a天堂中文在线| 欧美综合视频在线观看| 偷拍夫妻性生活| 日韩精品乱码av一区二区| 欧美日韩电影一区二区| 欧美男女交配| 亚洲欧美在线免费观看| 国产欧美一区二区三区在线看蜜臂| 国产日韩欧美视频在线观看| 国产91在线精品| 欧美久久天堂| 亚洲黄色www网站| 日本少妇毛茸茸高潮| 国产精品自拍在线| 免费网站在线观看视频| 粉嫩久久久久久久极品| 7777免费精品视频| 男同在线观看| 欧美丝袜丝交足nylons| 青青青视频在线免费观看| 久久 天天综合| 日韩精品一区二区三区电影| aaa国产精品视频| 91国产视频在线| 韩日视频在线| 欧美剧在线免费观看网站| www深夜成人a√在线| 国产福利精品一区二区| 美女日批免费视频| 狠狠做六月爱婷婷综合aⅴ| 国产欧美精品在线播放| 中国av在线播放| 亚洲精品久久久久| 最新黄色网址在线观看| 亚洲综合一区二区三区| 国产麻豆天美果冻无码视频| 日本美女一区二区三区视频| 精品无码av无码免费专区| 青青草久久爱| 成人观看高清在线观看免费| 久久亚洲资源| 亚洲天堂第一页| 一级特黄aa大片| 亚洲成av人片在线观看无码| 一级在线观看视频| 成人性视频网站| 亚洲无吗一区二区三区| 欧美+亚洲+精品+三区| 麻豆成人av| 成人免费观看49www在线观看| 国产婷婷97碰碰久久人人蜜臀| 成人高潮免费视频| 99国产麻豆精品| 中文字幕一区久久| 9色精品在线| 日韩视频在线免费播放| 亚洲精品合集| 99久热re在线精品996热视频| 国产在线69| 日韩精品在线免费播放| 国产精品呻吟久久| 色妹子一区二区| 不卡的免费av| 亚洲欧美自拍偷拍色图| 一区二区三区免费在线观看视频| 亚洲国产日韩在线| 一区二区成人国产精品| 色天天色综合| 国产成人免费电影| 日日狠狠久久| 国产精品av在线播放| 欧美78videosex性欧美| 神马久久久久久| 国产日产精品久久久久久婷婷| 在线观看免费亚洲| 久草资源在线视频| 亚洲人成网站精品片在线观看| 波多野吉衣在线视频| 蜜桃一区二区三区四区| 免费日韩中文字幕| 黄色亚洲免费| av 日韩 人妻 黑人 综合 无码| 国产一区二区在线视频你懂的| 性欧美xxxx交| 成码无人av片在线观看网站| 在线观看久久av| 欧美日韩国产综合视频| 精品国产乱码久久久久久闺蜜| 国产成人在线播放视频| 亚洲黄色小说网站| 永久免费未视频| 中文字幕中文字幕一区| 国产jk精品白丝av在线观看| av午夜一区麻豆| 国产黄色三级网站| av中文字幕亚洲| 中文字幕在线播放一区| 成人午夜免费电影| 在线播放第一页| 成人在线综合网| 国产人妖在线观看| 丁香六月久久综合狠狠色| 古装做爰无遮挡三级聊斋艳谭| 国产精品久久久久久久免费软件 | 亚洲第一免费视频| 日韩一区二区三区av| 国产三级第一页| 日韩欧美的一区| 日韩中文字幕免费观看| 亚洲第一综合天堂另类专| 色综合久久久久久| 亚洲精品久久久久久久久久久久久| 中文字幕久久久久| 欧美日免费三级在线| 在线观看毛片视频| 91精品中文字幕一区二区三区| 偷偷操不一样的久久| 岛国av一区二区三区| 欧美成人精品欧美一级乱黄| 欧美日韩一区二区在线 | 亚洲jizzjizz日本少妇| 日韩三级av高清片| 国产在线精品一区| 国产精品欧美日韩一区| 一区二区三区四区国产| 欧美成人中文| 日本www在线播放| 青青草伊人久久| 日本中文字幕在线不卡| 91婷婷韩国欧美一区二区| 人妻少妇无码精品视频区| 国产精品久久一级| 精品无码人妻一区二区三区品| 国产精品欧美极品| 999精品视频在线观看播放| 一区二区视频在线看| 五月婷婷开心网| 精品视频免费在线| www.好吊色| 亚洲美女又黄又爽在线观看| 免费在线观看av| 久久欧美在线电影| 91国拍精品国产粉嫩亚洲一区| 欧美一级视频一区二区| 日本亚洲欧洲无免费码在线| 成人三级在线| 欧美日韩精品一区二区视频| 国产精品88久久久久久妇女| 国产日韩欧美三区| 激情黄色小视频| 成人午夜又粗又硬又大| 五月婷婷婷婷婷| 午夜精品免费在线| 国产一区二区网站| 亚洲色图17p| 俺来也官网欧美久久精品| 国产精品国产自产拍高清av水多| 欧美天堂视频| 91久久精品www人人做人人爽| 激情不卡一区二区三区视频在线| 成人h片在线播放免费网站| youjizz欧美| 亚洲一二三区精品| 国产视频一区在线观看一区免费| 国内精品视频一区二区三区| 青娱乐精品在线视频| 国产网站无遮挡| 亚洲美女淫视频| 中文在线免费看视频| 日韩经典第一页| 七七成人影院| 91久久在线播放| 日韩成人影院| 国产xxxxx在线观看| 成人禁用看黄a在线| 久久国产精品国语对白| 日韩欧美极品在线观看| 亚洲精选一区二区三区| 不卡伊人av在线播放| 人人玩人人添人人澡欧美| 奇米精品在线| 丝袜美腿一区二区三区| 日韩免费高清一区二区| 亚洲一二三级电影| h片在线免费看| 精品国产美女在线| 日韩福利影视| 一区二区精品在线观看| 免费av网站大全久久| av网在线播放| 欧美亚洲国产一区二区三区| 国产三级视频在线播放线观看| 久久成人免费视频| 久久福利在线| 在线观看福利一区| 麻豆专区一区二区三区四区五区| 精品国产午夜福利在线观看| 中文字幕一区av| 在线观看日韩一区二区| 一区二区三区动漫| 久久91导航| 欧美中日韩免费视频| 日韩黄色在线观看| 国产 欧美 在线| 欧美三级韩国三级日本三斤| 在线视频1区2区| 91探花福利精品国产自产在线| 偷拍精品福利视频导航| 18禁男女爽爽爽午夜网站免费| 激情综合色丁香一区二区| 一级黄色片日本| 欧美一区二区三区小说| 日韩精品分区| 久久草视频在线看| 久久福利一区| 日本视频在线免费| 91精选在线观看| 精品人人视频| 日韩一区国产在线观看| 狠狠色狠狠色综合日日91app| 日韩精品无码一区二区三区久久久| 亚洲免费观看视频| 亚洲国产精彩视频| 亚洲91精品在线| 国产99久久| 97超碰人人爽| 亚洲国产一区二区三区青草影视| 一本久道久久综合无码中文| 波霸ol色综合久久| 好吊妞国产欧美日韩免费观看网站| 中文字幕一区二区三区5566| 国产精品亚洲视频| 在线天堂中文字幕| 中文字幕一区二区三区电影| 麻豆精品在线| 国产一区二区三区精彩视频| 国产精品婷婷午夜在线观看| 精品国产无码AV| 日本精品免费一区二区三区| 欧美激情国产在线| 亚洲色图欧美日韩| 欧美亚洲动漫另类| 美女航空一级毛片在线播放| 久久久一本精品99久久精品66 | 久久久免费精品视频| 久久不见久久见免费视频7| 亚洲视频第二页| 亚洲国产aⅴ天堂久久| jizz在线免费观看| 国产精品免费在线播放| 免费成人av在线播放| 日韩 欧美 亚洲| 久久激情视频久久| 日韩精品丝袜美腿| 91网址在线观看精品| 欧美色道久久88综合亚洲精品| 国产又爽又黄网站亚洲视频123|