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

死磕JVM | 用Arthas排查JVM內存 真爽!

云計算 虛擬化
Arthas 是Alibaba開源的Java診斷工具,采用命令行交互模式,提供了較為豐富的功能,主要還是他是免費里面的算是好用且功能比較強大的一個JVM排查的插件,在了解這個利器之后,發現還是挺好用的,而且支持的功能也比較全面,那么Arthas到底可以為我們做哪些事情呢?

[[402910]]

本文轉載自微信公眾號「牧小農」,作者牧小農。轉載本文請聯系牧小農公眾號。

Arthas是啥

當我們系統遇到JVM或者內存溢出等問題的時候,如何對我們的程序進行有效的監控和排查,就發現了幾個比較常用的工具,比如JDK自帶的 jconsole、jvisualvm還有一個最好用的工具——jprofiler,但是這個是收費的,或者除了很有錢的公司,一般很少人會用這個,還有一個就是我們今天的主角——Arthas ,為什么今天會重點講這個呢?

官網地址:http://arthas.gitee.io/

GitHub地址:https://github.com/alibaba/arthas/

Arthas 是Alibaba開源的Java診斷工具,采用命令行交互模式,提供了較為豐富的功能,主要還是他是免費里面的算是好用且功能比較強大的一個JVM排查的插件,在了解這個利器之后,發現還是挺好用的,而且支持的功能也比較全面,那么Arthas到底可以為我們做哪些事情呢?

1.提供性能看板,包括線程、cpu、內存等信息,并且會定時的刷新。

2.根據各種條件查看線程快照。找出cpu占用率最高的n個線程

3.輸出jvm的各種信息,如gc算法、jdk版本、ClassPath等

4.遇到問題無法在線上 debug,熱部署加日志直接替換

5.查看某個類的靜態屬性,也可以通過ognl語法執行一些語句

6.查看已加載的類的詳細信息,這個類從哪個jar包加載的,查看類的方法的信息

7.dump 類的字節碼到指定目錄

8.直接反編譯指定的類

9.快速定位應用的熱點,生成火焰圖

10.可以監控到JVM的實時運行狀態

以前,你碰到這些問題,解決的辦法大多是,修改代碼,重新上線。但是在大公司里,上線的流程是非常繁瑣的,如果為了多加一行日志而重新發布版本,無疑是非常折騰人的。但是阿里巴巴開源的Arthas 有了更為優雅的線上調試方法。

Arthas 支持JDK6,同時可以在 Linux/Mac/Windows上運行,自動Tab 補全功能,更方便我們定位問題和診斷

下載地址:https://arthas.gitee.io/download.html 你可以下載zip的包我下載的是arthas-packaging-3.5.0-bin.zip 或者通過命令去下載

wget https://alibaba.github.io/arthas/arthas-boot.jar

使用手冊

1. 快速啟動

當我們下載好之后,我們直接通過命令啟動就可以java -jar arthas-boot.jar,但是在此之前我們需要通過檢測的代碼來掛靠到Arthas上面

  1. import java.math.BigDecimal; 
  2. import java.util.ArrayList; 
  3. import java.util.Date
  4. import java.util.List; 
  5. import java.util.concurrent.ScheduledThreadPoolExecutor; 
  6. import java.util.concurrent.ThreadPoolExecutor; 
  7. import java.util.concurrent.TimeUnit; 
  8.  
  9. public class FullGCTest { 
  10.  
  11.  
  12.     //模擬銀行卡的類 
  13.     private static class CardInfo { 
  14.         //小農的銀行卡信息記錄 
  15.         BigDecimal price = new BigDecimal(10000000.0); 
  16.         String name = "牧小農"
  17.         int age = 18; 
  18.         Date birthdate = new Date(); 
  19.  
  20.         public void m() {} 
  21.     } 
  22.  
  23.     //線程池 定時線程池 
  24.     //50個,然后設置 拒絕策略 
  25.     private static ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(50, 
  26.             new ThreadPoolExecutor.DiscardOldestPolicy()); 
  27.  
  28.     public static void main(String[] args) throws Exception { 
  29.         executor.setMaximumPoolSize(50); 
  30.  
  31.         for (;;){ 
  32.             modelFit(); 
  33.             Thread.sleep(100); 
  34.         } 
  35.     } 
  36.  
  37.     /** 
  38.      * 對銀行卡進行風險評估 
  39.      */ 
  40.     private static void modelFit(){ 
  41.         List<CardInfo> taskList = getAllCardInfo(); 
  42.         //拿出每一個信息出來 
  43.         taskList.forEach(info -> { 
  44.             // do something 
  45.             executor.scheduleWithFixedDelay(() -> { 
  46.                 //調用M方法 
  47.                 info.m(); 
  48.  
  49.             }, 2, 3, TimeUnit.SECONDS); 
  50.         }); 
  51.     } 
  52.  
  53.     private static List<CardInfo> getAllCardInfo(){ 
  54.         List<CardInfo> taskList = new ArrayList<>(); 
  55.         //每次查詢100張卡出來 
  56.         for (int i = 0; i < 100; i++) { 
  57.             CardInfo ci = new CardInfo(); 
  58.             taskList.add(ci); 
  59.         } 
  60.  
  61.         return taskList; 
  62.     } 

這個是上篇文章講述的案例,感興趣的可以了解一下。

首先我們需要使用javac 命令將Java文件進行編譯javac FullGCTest.java進行編譯,然后打印GC日志,進行風險監控打印GC日志:

  1. java -Xms200M -Xmx200M -XX:+PrintGC FullGCTest 

Arthas啟動命令:java -jar arthas-boot.jar,get一下

我們就看到了我們剛才啟動的FullGCTest的應用程序,我們輸入編號 1 回車,這樣我們就把Arthas掛靠到我們的程序上,接下來我們只需要做對應的命令操作就可以了

命令詳情文檔:https://arthas.aliyun.com/doc/commands.html

2. 功能列表

命令 詳細說明
jvm 查看當前JVM信息
thread 查看當前JVM的線程堆棧信息
watch 方法執行數據觀測
dashboard 當前系統的實時數據面板
trace 方法內部調用路徑,并輸出方法路徑上的每個節點上耗時
stack 輸出當前方法被調用的調用路徑
tt 方法執行數據的時空隧道,記錄下指定方法每次調用的入參和返回信息,并能對這些不同的時間下調用進行觀測
vmoption 查看,更新JVM已加載的類信息
sc 查看JVM已加載的類信息
sm 查看已加載類的方法信息
jad 反編譯指定已加載類的源碼
classloader 查看classloader的繼承樹,urls,類加載信息
heapdump 類似jmap命令的heap dump 功能

jvm

OPERATING-SYSTEM:系統相關參數

THREAD相關:

  • COUNT : JVM當前活躍的線程數
  • DAEMON-COUNT : JVM當前活躍的守護線程數
  • PEAK-COUNT: 從JVM啟動開始曾經活著的最大線程數
  • STARTED-COUNT: 從JVM啟動開始總共啟動過的線程次數
  • DEADLOCK-COUNT: JVM當前死鎖的線程數

FILE-DESCRIPTOR(文件描述符相關):

  • MAX-FILE-DESCRIPTOR-COUNT:JVM進程最大可以打開的文件描述符數
  • OPEN-FILE-DESCRIPTOR-COUNT:JVM當前打開的文件描述符數

thread 命令

參數說明:

命令 詳細說明
id 線程id
[n:] 指定最忙的前N個線程并打印堆棧
[b] 找出當前阻塞其他線程的線程
[i] 指定cpu使用率統計的采樣間隔,單位為毫秒,默認值為200
[--all] 顯示所有匹配的線程

打印當前最忙的N個線程并打印堆棧

  1. thread -n 3 

thread 查看所有線程

thread 17:顯示指定線程的運行堆棧

thread -i: 指定采樣時間間隔

thread -i 1000 : 統計最近1000ms內的線程CPU時間。thread -n 3 -i 1000 : 列出1000ms內最忙的3個線程棧

dashboard 命令

運行程序時,會顯示當前程序的實時信息,如qps, rt, 錯誤數, 線程池信息等等

數據說明:

  • ID: Java級別的線程ID
  • NAME: 線程名
  • GROUP: 線程組名
  • PRIORITY: 線程優先級, 1~10之間的數字,越大表示優先級越高
  • STATE: 線程的狀態CPU%: 線程的cpu使用率。比如采樣間隔1000ms,某個線程的增量cpu時間為100ms,則cpu使用率=100/1000=10%
  • DELTA_TIME: 上次采樣之后線程運行增量CPU時間,數據格式為秒
  • TIME: 線程運行總CPU時間,數據格式為分:秒
  • ?NTERRUPTED: 線程當前的中斷位狀態
  • DAEMON: 是否是daemon線程

參數說明:

參數名稱 詳細說明
id 刷新實時數據的時間間隔 (ms),默認5000ms
[n:] 刷新實時數據的次數

sc 命令

查看JVM已加載的類信息,通過SC我們可以看到我們這個類的詳細信息,包括是從哪個jar包讀取的,他是不是接口/枚舉類等,甚至包括他是從哪個類加載器加載的。

參數說明:

參數名稱 詳細說明
class-pattern 類名表達式匹配
method-pattern 方法名表達式匹配
[d] 輸出當前類的詳細信息,包括這個類所加載的原始文件來源、類的聲明、加載的ClassLoader等詳細信息。如果一個類被多個ClassLoader所加載,則會出現多次
[E] 開啟正則表達式匹配,默認為通配符匹配

sc -d *CardInfo:打印類的詳細信息

sc -d -f *CardInfo:打印類的Fiedld信息

heapdump + jhat分析

heapdump:類似于jmap命令

創建到指定文件夾下:

  1. [arthas@365564]$ heapdump /usr/local/mxn/dump.hprof Dumping heap to /usr/local/mxn/dump.hprof ... Heap dump file created 

創建成功后,我們就可以在指定文件夾下看到對應的dump文件,然后使用命令jhat dump.hprof,生成文件,成功后我們就可以通過IP+端口進行訪問了

訪問:

然后我們就可以通過IP+端口去訪問它了,里面有個他的other,我們拉到最底下,找

Show instance counts for all classes (including platform)

從下面我們可以分析出來哪個類包含的對象最多,分析出來哪個類產生的對象

這個里面最強大的功能還是叫做 Execute Object Query Language (OQL) query,這個里面可以顯示有哪些對象,對象有多少個字節和引用,可以觀察到哪個對象產生了問題,如下圖所示,顯示所有String對應的對象

搜索點進去之后我們還能看到這個對象到底占用了多少個字節,有多少個引用指向了這個Object,這個OQL的語法也是很靈活,我們可以使用where條件去過濾

jad

jad:反編譯某個類,或者反編譯某個類的某個方法,動態代理生成類的問題定位 第三方的類(觀察代碼) 版本問題(確定自己最新提交的版本是不是被使用)

有人可能會問這個有啥用,源碼我不是自己就知道嗎?因為有時我們經常會不確定線上或者測試環境的包是否是我們修改過的,這時候就可以通過jad反編譯來看下,是否是最新的代碼

redafine

redafine:熱替換,動態更新代碼,不用重啟jvm目前有些限制條件:只能改方法實現(方法已經運行完成),不能改方法名, 不能改屬性 m() -> mm()

比如我們在線上環境有個class確認有問題,想要重新替換,一般情況下只能停掉服務器重新發布,在普通的小公司這樣是可以的,但是在大規模公司京東淘寶這樣的是不能停的,因為整個流程是非常復雜的,那怎么辦呢?大家可以看到下面的案例

首先我們新建一個測試案例:

  1. public class T{ 
  2.     public static void main(String[] args) throws Exception{ 
  3.                     for(;;){ 
  4.                     System.in.read(); 
  5.                     new TT().m(); 
  6.                 } 
  7.         } 
  1. public class TT{ 
  2.         public void m(){ 
  3.         System.out.println(2); 
  4.     } 

使用命令javac *.java,編譯成class文件,然后運行 T 文件

  1. [root@VM-0-7-centos t]# java T 

當我們輸入a的時候打印2,但是我們上線以后才發現,我們需要輸出的1,這個是如果要從本地更改要重新發布上線,為了這一個修改,明顯是不值當的,但是如果我們用 redafine 熱部署就可以幫助我們直接替換,不用重新發布jvm

然后我們將 T 這個程序掛靠到 Arthas 上面去

然后我們直接修改 TT.java 程序 vi TT.java,將里面打印2的值修改成1

  1. public class TT{ 
  2.         public void m(){ 
  3.             System.out.println(1); 
  4.         } 

然后編譯執行 javac TT.java文件

在回到我們掛靠的Arthas 上面執行 redefine /usr/local/mxn/fuccGc/t/TT.class文件

  1. [arthas@398842]$ redefine /usr/local/mxn/fuccGc/t/TT.class redefine success, size: 1, classes: TT 

執行成功 大家可以看到我們在沒有重新啟動的情況下成功替換了class文件圖片

watch

watch:方法執行的數據觀測,可以通過watch指令,來監控某個類,監控后,運行下你的功能,復現下場景,arthas會提供給你具體的出參和入參,幫助你排查故障

trace

輸出方法調用路徑,并輸出耗時,這個指令對于優化代碼非常的有用,可以看出具體每個方法執行的時間,如果是for循環等重復語句,還能看出n次循環中的最大耗時,最小耗時,和平均耗時,完美!

tt

在我們對某個方法開啟tt后,會記錄每一次調用(我們可以設置最大監控次數)的入參和返回參數,并能對這些不同時間下調進行觀測

  1. [arthas@405136]$ tt -t FullGCTest modelFit 

命令參數解析-t tt 命令有很多個主參數,-t 就是其中之一。這個參數的表明希望記錄下類 *Test 的 print 方法的每次執行情況。-n 3 當你執行一個調用量不高的方法時可能你還能有足夠的時間用 CTRL+C 中斷 tt 命令記錄的過程,但如果遇到調用量非常大的方法,瞬間就能將你的 JVM 內存撐爆。

此時你可以通過 -n 參數指定你需要記錄的次數,當達到記錄次數時 Arthas 會主動中斷tt命令的記錄過程,避免人工操作無法停止的情況。

ognl表達式

ognl表達式

OGNL特殊用法請參考:https://github.com/alibaba/arthas/issues/71 OGNL表達式官方指南:https://commons.apache.org/proper/commons-ognl/language-guide.html

調用靜態函數:ognl '@java.lang.System@out.println("hello")'方法 獲取靜態類的靜態字段:ognl '@FullGCTest@random'方法

Arthas還支持Web Console,詳見:https://alibaba.github.io/arthas/web-console.html

總結

 

Arthas是一個線上Debug神器,相比于其他工具,Arthas有著比較全面的功能,上手也比較容易,對于剛開始入門的小伙伴也是可以輕松掌握的,對于文中有不懂或者有問題的小伙伴,大家可以在下面留言評論。

 

責任編輯:武曉燕 來源: 牧小農
相關推薦

2021-06-02 09:55:20

JVM排查JVM內存過高技術

2021-06-03 08:32:18

JVM調優虛擬機

2021-02-25 07:21:00

JVMJavaava虛擬機

2021-05-25 09:56:42

Jvm類加載機制Java

2021-02-28 11:58:33

JVM機制語言

2025-06-16 07:40:00

2021-06-09 07:56:51

JvmJVM面試題Java

2021-03-16 05:44:26

JVM面試題運行時數據

2017-09-20 08:48:09

JVM內存結構

2022-07-03 20:31:59

JVMJava虛擬機

2012-01-11 10:45:57

JavaJVM

2024-12-04 16:44:51

2023-11-19 23:29:22

Heap DumpJava

2010-09-26 16:42:04

JVM內存組成JVM垃圾回收

2010-09-27 13:48:41

JVM內存結構

2018-11-01 10:34:37

JVM內存配置

2012-05-15 02:04:22

JVMJava

2010-09-25 12:38:40

JVM內存模型

2021-01-21 08:00:25

JVM

2020-08-27 21:36:50

JVM內存泄漏
點贊
收藏

51CTO技術棧公眾號

亚洲第九十九页| 久久久久久视频| 韩国精品主播一区二区在线观看| 久久免费偷拍视频| 国产美女久久精品香蕉69| 成年人视频软件| 国产精品男女| 欧美视频精品在线| 国产av熟女一区二区三区| 牛牛澡牛牛爽一区二区| 六月丁香婷婷色狠狠久久| 欧美激情一区二区三区在线视频观看| 30一40一50老女人毛片| 91精品福利观看| 欧美日在线观看| 亚洲第一导航| 婷婷色在线观看| 狠狠网亚洲精品| 7777精品久久久久久| 91狠狠综合久久久| 一区二区小说| 亚洲精品在线观| 国产三级生活片| 中文字幕av一区二区三区佐山爱| 亚洲激情六月丁香| 亚洲电影免费| 国产在线超碰| 91亚洲精品乱码久久久久久蜜桃| 91网免费观看| 91在线视频国产| 老鸭窝91久久精品色噜噜导演| 欧美裸体男粗大视频在线观看| 男人的天堂官网| 天美av一区二区三区久久| 欧美一区二区福利在线| 三级a在线观看| 伊人色综合一区二区三区影院视频 | 蝌蚪视频在线播放| 成人涩涩免费视频| 91精品久久久久久蜜桃| 国产精品久久777777换脸| 日韩不卡一区二区| 日本久久久久久久久| 国产精品久久久免费视频| 国产精品xvideos88| 久久精品国产久精国产一老狼| 手机免费看av| 欧美日韩xxxx| 亚洲精品一区中文| 亚洲男人在线天堂| 日韩av网站在线免费观看| 精品成人免费观看| 国产一级免费片| 精品三级av| 亚洲成年人在线| 亚洲一级Av无码毛片久久精品| 国产精品视频一区视频二区| 91精品国产乱| 秋霞午夜鲁丝一区二区| 欧美亚洲人成在线| 91精品中文字幕一区二区三区| 国产精品无码一本二本三本色| 欧美天堂视频| 欧美亚洲国产一卡| 天天综合天天添夜夜添狠狠添| 免费视频观看成人| 91麻豆精品国产91久久久资源速度| 日本中文字幕影院| 精品中文在线| 亚洲第一精品自拍| 中出视频在线观看| 伊人春色之综合网| 亚洲图片在线综合| 日日操免费视频| 午夜欧美理论片| 欧美激情一区二区久久久| 日本三级2019| 日韩精品乱码av一区二区| 国产欧美精品一区二区三区-老狼| 一级黄色片视频| 国产a精品视频| 精品国产乱码久久久久久郑州公司 | 美女一区二区久久| 亚洲xxxx在线| 欧美日韩在线精品一区二区三区激情综 | 国产裸体写真av一区二区| 亚洲在线视频播放| 国产精品资源在线观看| 国产一区二区中文字幕免费看| 亚洲欧洲综合在线| 国产精品乱人伦中文| 毛片av在线播放| 小黄鸭精品aⅴ导航网站入口| 欧美日韩视频第一区| 亚洲欧洲日韩综合| 亚洲福利天堂| 欧美理论电影在线播放| 黄色在线观看国产| 国产一区欧美一区| 久久久久国产精品视频| av在线免费观看网| 亚洲一区国产视频| 狠狠躁狠狠躁视频专区| 999久久久精品一区二区| 国产亚洲精品久久久久动| 2018天天弄| 日韩av一区二区三区| 99视频免费观看蜜桃视频| 国产在线91| 亚洲第一综合色| 嫩草视频免费在线观看| 亚洲理论电影片| 色综合色综合网色综合| 中文字幕一二区| 97久久人人超碰| 黑人巨大国产9丨视频| 在线成人视屏| 日韩av资源在线播放| 久久成人小视频| 久久激情综合| 国产一区二区精品在线| 免费黄网站在线观看| 亚洲一区二区三区爽爽爽爽爽| 五月婷婷激情久久| 色天下一区二区三区| 久久99国产精品久久久久久久久| 中文字幕永久免费视频| www日韩大片| 成人免费毛片在线观看| 九九99久久精品在免费线bt| 原创国产精品91| 日日夜夜操视频| 99re66热这里只有精品3直播| 17c丨国产丨精品视频| va天堂va亚洲va影视| 中文字幕av一区| 欧美性猛交xxxx乱大交hd| 26uuu精品一区二区| 国产精品50p| 国产精品丝袜在线播放| 欧美黄色片视频| 精品黑人一区二区三区国语馆| 综合久久综合久久| 九九九九九国产| 99精品网站| 国产在线视频91| 中国日本在线视频中文字幕| 色婷婷一区二区| 精品无码一区二区三区 | 久久久久国产精品免费| 精品国产伦一区二区三区| 亚洲欧美日韩一区二区三区在线观看| 激情黄色小视频| 天天天综合网| 亚洲精品欧美极品| 羞羞网站在线看| 日韩精品一区二区三区中文不卡| 欧美在线视频第一页| 国产一二三精品| 国产精品igao激情视频| 日韩中文字幕在线一区| 欧美国产精品日韩| 日韩在线观看视频一区| 亚洲国产裸拍裸体视频在线观看乱了| 人妻互换一二三区激情视频| 亚洲区一区二| 欧美凹凸一区二区三区视频| 日韩av超清在线观看| 色天天综合狠狠色| www.日韩高清| 精品久久久在线观看| 精品无码国产污污污免费网站 | 国产黄色免费在线观看| 欧美日韩国产中文| 农村妇女精品一区二区| 成人av在线网站| 超碰网在线观看| 手机亚洲手机国产手机日韩| 91黄色精品| 亚洲天堂免费电影| 日韩在线资源网| www.爱爱.com| 色婷婷综合视频在线观看| 91制片厂在线| 成人av中文字幕| 一区二区三区 欧美| 欧美日韩亚洲一区在线观看| 久久av一区二区| 欧美成人福利| 97色在线视频| 蜜芽在线免费观看| 亚洲国产又黄又爽女人高潮的| 亚洲精品无码久久久久| 一区二区国产视频| 人妻精品久久久久中文| 国产精品一区免费视频| 欧美 日韩 国产 激情| 午夜国产欧美理论在线播放| 欧美午夜精品理论片a级大开眼界| 伊人久久大香| 欧洲美女7788成人免费视频| 国产在线激情| 亚洲免费高清视频| 99在线精品视频免费观看软件| 欧美性猛交xxxx久久久| 国产这里有精品| 欧美国产精品一区二区三区| 99免费观看视频| 激情久久久久久久久久久久久久久久| 日日橹狠狠爱欧美超碰| 亚洲精品一区二区妖精| 欧美日韩最好看的视频| 超碰精品在线观看| 国产日韩欧美中文| 欧美一区久久久| 久久免费视频在线观看| 黄色网页在线播放| 国产亚洲精品久久久久久| 人妻视频一区二区三区| 91精品一区二区三区久久久久久 | a'aaa级片在线观看| 久久精彩免费视频| 国产在线小视频| 日韩国产欧美精品在线| 亚洲精华国产精华精华液网站| 欧美日韩不卡一区二区| 神马久久久久久久| 精品日韩视频在线观看| 五月天婷婷丁香| 一区二区在线免费观看| 一级片一级片一级片| 亚洲国产高清不卡| 少妇av片在线观看| 欧美激情中文字幕一区二区| 国产小视频自拍| 久久婷婷综合激情| 波多野结衣办公室33分钟| 岛国一区二区在线观看| 香蕉视频免费网站| 国产成人av一区二区三区在线| 天天做天天干天天操| 极品少妇一区二区| 日本中文字幕精品—区二区| 美女网站一区二区| 亚洲久久中文字幕| 另类中文字幕网| 看看黄色一级片| 久草热8精品视频在线观看| 91极品尤物在线播放国产| 日本免费在线视频不卡一不卡二 | 高清不卡在线观看| 能看毛片的网站| 国产**成人网毛片九色| 91超薄肉色丝袜交足高跟凉鞋| 国产91精品在线观看| 在线观看免费视频国产| 99这里只有久久精品视频| 91av在线免费| 国产日韩欧美在线一区| 亚洲一级黄色录像| 国产精品短视频| 男人的天堂久久久| 亚洲尤物在线视频观看| 日本一级淫片色费放| 欧美日韩在线视频观看| 成人一二三四区| 欧美日韩电影在线| 精品国产无码AV| 亚洲国产精品久久精品怡红院| 天堂网www中文在线| 亚洲欧美日韩爽爽影院| 午夜在线免费观看视频| 色综合91久久精品中文字幕| 国内精彩免费自拍视频在线观看网址 | 九色porny丨国产精品| 亚洲女则毛耸耸bbw| ww久久中文字幕| 91视频青青草| 欧美日韩色婷婷| 亚洲综合一区中| 亚洲第一精品夜夜躁人人躁| 九九热视频在线观看| 久久九九有精品国产23| 狠狠操一区二区三区| 国产精品视频999| 北条麻妃一区二区三区在线观看| 欧美激情专区| 一区二区三区四区日韩| 国产中文字幕在线免费观看| 久久精品久久久精品美女| 国产chinese中国hdxxxx| 日本一区二区三级电影在线观看 | 精品久久久久久一区| 国产91久久精品一区二区| 玖玖精品在线视频| 久久经典综合| 亚洲麻豆一区二区三区| 中文字幕成人av| 国产欧美日韩另类| 欧美日韩久久久| 日韩三级电影网| 欧美日韩ab片| 久久91视频| 欧美性天天影院| 激情久久五月| 手机精品视频在线| 国产亚洲欧美日韩日本| 国产午夜精品无码一区二区| 欧美精品电影在线播放| 丝袜视频国产在线播放| 欧美高清视频免费观看| 高清在线一区| 欧美凹凸一区二区三区视频 | 亚洲男人的天堂一区二区| 五月婷婷激情视频| 精品国产一区二区三区不卡| 欧美黄色激情| 国产精品久久久999| 色婷婷久久久| 国产毛片视频网站| 国产福利精品一区| 99久久久免费精品| 欧美日韩中文字幕一区二区| 蝌蚪视频在线播放| 欧美一级视频免费在线观看| 国产精品xxxav免费视频| 亚洲色图都市激情| 久久97超碰国产精品超碰| 一级黄色片网址| 色偷偷久久一区二区三区| 亚洲欧美激情在线观看| 久久成人综合视频| 亚洲青青一区| 中文字幕中文字幕99 | 国产裸体写真av一区二区| 国产探花一区二区| 激情六月丁香婷婷| 337p粉嫩大胆色噜噜噜噜亚洲| 久草手机在线观看| 日韩电影中文字幕一区| 啊啊啊久久久| 精品国产免费久久久久久尖叫 | www国产亚洲精品久久麻豆| 老湿机69福利| 欧美疯狂性受xxxxx喷水图片| 91电影在线播放| 国产欧美日韩丝袜精品一区| 欧美日韩一二| 午夜在线观看av| 中文字幕一区在线观看| 国产精品久久久久久久免费| 久久久999成人| 嫩呦国产一区二区三区av| 欧美xxxx吸乳| 顶级嫩模精品视频在线看| 日韩福利片在线观看| 日韩精品视频在线播放| 久久91导航| 伊人久久av导航| 国产成人免费视频| 欧美激情亚洲综合| 亚洲欧美中文字幕在线一区| 精品123区| 裸体大乳女做爰69| 成人91在线观看| 国产精品免费无遮挡无码永久视频| 中文字幕亚洲综合| 精品一区二区三区免费看| 日韩欧美不卡在线| 久久日韩精品一区二区五区| 久久国产香蕉视频| 久久精品视频亚洲| 成人在线视频中文字幕| 日韩av黄色网址| 国产精品视频yy9299一区| 国产精品午夜福利| 欧美精品电影免费在线观看| 天堂av一区二区三区在线播放| 污网站免费在线| 亚洲一区在线观看视频| 国产在线一二| 99视频在线免费观看| 久久电影一区| 乱h高h女3p含苞待放| 日韩av网址在线| 日韩精品第二页| 青青草视频在线免费播放| 中文av字幕一区| 人人妻人人澡人人爽精品日本| 国产精品69av| 欧美三级不卡| 少妇太紧太爽又黄又硬又爽小说 | 国产男女猛烈无遮挡91| 欧美日韩精品免费观看视频完整| 可以直接看的无码av| 欧美一区二区久久| 国产日韩另类视频一区| 免费在线看黄色片| 欧美国产精品中文字幕| 亚洲 欧美 激情 另类|