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

久久久久999| 91国在线观看| 高清国产一区| 亚洲男人第一av| 精品日本12videosex| 欧美日韩视频第一区| 妞干网在线播放| 神马电影在线观看| 开心九九激情九九欧美日韩精美视频电影| 久久精品成人一区二区三区| 国产伦精品一区二区免费| av日韩电影| 亚洲免费av网站| 欧美成人蜜桃| 亚洲第一视频在线| 日本伊人精品一区二区三区观看方式| 久久综合电影一区| 四虎永久免费影院| 久久九九精品视频| 91豆麻精品91久久久久久| 欧美另类videosbestsex日本| 日本人妖在线| 成人一区二区在线观看| 国产精品免费视频xxxx| 日韩三级视频在线播放| 天天超碰亚洲| 在线成人免费网站| 黄色网址在线视频| 日韩三级久久| 91精品国产综合久久小美女| 国产成人久久婷婷精品流白浆| av网站在线免费看推荐| 亚洲国产精品t66y| 久久精品人人做人人爽电影| 精品国产亚洲一区二区麻豆| 毛片一区二区三区| 国产精品wwwwww| 国产成人无码一区二区三区在线 | 免费国产一区| 北条麻妃一二三区| 黑人精品欧美一区二区蜜桃 | 亚洲欧美另类在线视频| 在线看片成人| 欧美黑人视频一区| 国产一二三四区| 水蜜桃精品av一区二区| 中文字幕欧美精品在线| 日韩丰满少妇无码内射| 综合国产视频| 国产视频精品久久久| 制服丝袜第一页在线观看| 91精品国产乱码久久久竹菊| 欧美成人a在线| av地址在线观看| 日韩成人精品| 精品第一国产综合精品aⅴ| 午夜免费福利网站| 日韩精品一区二区三区中文字幕 | 国产二区在线播放| 久久久久国产精品厨房| 欧美日韩在线不卡一区| 性xxxx视频| 91一区二区三区在线播放| 激情视频一区二区| 男女污视频在线观看| 国产亚洲欧美日韩俺去了| 日韩免费毛片| 色大18成网站www在线观看| 国产精品美女一区二区三区| 亚洲一区二区三区涩| 欧美激情黑人| 亚洲一区二区在线免费观看视频 | 日韩精品影音先锋| 特级特黄刘亦菲aaa级| 国产精品中文字幕制服诱惑| 亚洲精品国产精品久久清纯直播| 亚洲一区二区乱码| 少妇精品久久久| 在线播放日韩专区| 亚洲色图综合区| 亚洲黄色成人| 国产精品av在线播放| 国产一区二区三区视频免费观看 | 欧美视频第二页| 色一情一区二区三区| 亚洲一区二区三区在线免费| 亚洲精品第一页| 内射毛片内射国产夫妻| 中文字幕免费精品| 97在线日本国产| 影音先锋国产在线| 国产成人亚洲精品青草天美 | 欧美一区三区| 欧美精品情趣视频| 国产成人精品网| 激情欧美一区二区三区在线观看| 国产精品一区二区三区在线观| 日本视频在线观看一区二区三区| 亚洲欧洲av一区二区三区久久| 777av视频| 欧美高清免费| 亚洲激情成人网| 人人艹在线视频| 日韩亚洲在线| 91久热免费在线视频| 亚洲 小说区 图片区 都市| 国产精品青草综合久久久久99| a级片一区二区| 欧美成人app| 亚洲成色999久久网站| 九九九视频在线观看| 欧美午夜一区| 国产日韩综合一区二区性色av| 后进极品白嫩翘臀在线视频| 国产精品免费丝袜| 日本成年人网址| 亚洲日本va| 色偷偷9999www| 波多野结衣mp4| 97精品久久久久中文字幕| 自拍视频一区二区三区| 一区二区三区短视频| 欧美成人官网二区| 强制高潮抽搐sm调教高h| 亚洲在线观看| 国产欧美一区二区视频| 50度灰在线| 欧美日韩性生活| 51妺嘿嘿午夜福利| 国产精品综合| 精品日产一区2区三区黄免费| 超碰在线观看免费版| 欧美日韩精品三区| 在线视频第一页| 亚洲欧美日韩视频二区| 国产一区二区三区四区五区加勒比| 黄视频在线观看网站| 在线欧美一区二区| 亚洲人成人无码网www国产| 99亚洲视频| 好看的日韩精品视频在线| 色黄网站在线观看| 日韩欧美不卡在线观看视频| 国产喷水在线观看| 久久成人18免费观看| 亚洲欧洲精品在线观看| 福利精品一区| 伊人久久久久久久久久| 国产日韩在线免费观看| 久久久久综合网| 国产天堂在线播放| 欧美一区二区三区高清视频| 国产精品视频地址| 国产区在线视频| 欧美在线|欧美| 一级特黄曰皮片视频| 日韩福利电影在线观看| 日韩欧美亚洲v片| 欧美成a人片免费观看久久五月天| 国产午夜精品免费一区二区三区 | 日韩一区二区三区免费| 亚洲天堂2020| 亚洲手机在线观看| 亚洲欧洲日韩综合一区二区| 青娱乐国产精品视频| 一区二区三区四区日韩| 成人动漫在线观看视频| 久久男人天堂| 亚洲色图综合网| 一级黄色免费片| 亚洲精选一二三| 少妇激情一区二区三区视频| 国产毛片一区| 亚洲一区三区电影在线观看| 国产精品va视频| 97人人模人人爽人人喊中文字| 欧洲毛片在线| 88在线观看91蜜桃国自产| 麻豆视频在线免费看| 成人午夜激情视频| 99免费视频观看| 亚洲国产精品久久久天堂 | 亚洲精品一区二区三区区别| 香蕉加勒比综合久久| 日韩丰满少妇无码内射| 国产一区二区福利视频| 国产精品-区区久久久狼| 日韩av在线播放网址| av在线亚洲男人的天堂| 伊人色综合一区二区三区影院视频| 综合国产在线视频| 成人免费视频国产| 在线观看视频欧美| 精品视频一区二区在线观看| 久久精品亚洲乱码伦伦中文| 999热精品视频| 欧美一级一区| 成人在线观看毛片| 国产剧情一区| 国产乱码精品一区二区三区不卡| 国产v综合v| 久久免费高清视频| 永久免费av在线| 亚洲成人久久一区| 国产精品无码在线播放 | 黄色片一级视频| 午夜精品剧场| 亚洲高清视频一区二区| 国产成人高清精品免费5388| 国产精品第一页在线| 国产资源在线观看入口av| 久久精品福利视频| 国产精品四虎| 亚洲第一页在线| 一级久久久久久久| 色国产综合视频| 欧美一二三区视频| 亚洲一区免费在线观看| 亚洲一区电影在线观看| 国产日韩av一区| 在线看黄色的网站| 国产乱人伦偷精品视频不卡| 亚洲精品高清无码视频| a91a精品视频在线观看| 久久久久久久久网| 久久久久国产精品| 亚洲欧美日产图| 欧美裸体在线版观看完整版| 国产在线精品一区二区中文 | 久草中文在线视频| 亚洲视频一二三| 99热99这里只有精品| 久久老女人爱爱| 不卡一区二区在线观看| 成人免费av资源| 国产免费a级片| 国内精品免费**视频| 一区二区在线免费看| 免费成人在线观看视频| 北条麻妃视频在线| 日韩国产欧美在线视频| 国产精品欧美激情在线观看 | 黄色一级片免费的| 美腿丝袜亚洲三区| 国产三级三级看三级| 日本欧美韩国一区三区| 男女啪啪网站视频| 奇米影视一区二区三区小说| 久久久国产欧美| 青青青爽久久午夜综合久久午夜| 欧洲熟妇精品视频| 免费成人在线网站| 手机av在线免费| 激情深爱一区二区| gogo亚洲国模私拍人体| 粉嫩嫩av羞羞动漫久久久 | 老牛国内精品亚洲成av人片| 国产高清自拍99| 日韩动漫一区| 欧美日韩天天操| 波多野结衣一区| 中文字幕色一区二区| 午夜日韩激情| 少妇高潮喷水在线观看| 国产精品日韩| 久久久国产欧美| 精品在线免费视频| 男人女人拔萝卜视频| 99视频一区二区三区| 一级片手机在线观看| 一区在线观看免费| 农村黄色一级片| 精品成人久久av| 做爰无遮挡三级| 欧美一区2区视频在线观看| 亚洲老妇色熟女老太| 亚洲精品天天看| 蜜桃视频网站在线观看| 欧美日韩高清在线观看| 精品极品在线| 国产女同一区二区| 成人av综合网| 日本欧美色综合网站免费| 日韩精品影视| 国产一级爱c视频| 日av在线不卡| 黄色国产在线视频| 国产欧美精品一区| 久草成人在线视频| 在线精品观看国产| jizz国产视频| 亚洲一区二区久久久| 五月婷婷视频在线观看| 日韩免费视频在线观看| 四虎影视精品永久在线观看| 国产亚洲自拍偷拍| 97人人精品| 黑人糟蹋人妻hd中文字幕| 国产在线日韩欧美| www.久久av| 亚洲午夜久久久久| 在线视频欧美亚洲| 亚洲男人天堂2023| 欧美四级在线| 91精品久久久久久久久青青| 校花撩起jk露出白色内裤国产精品 | 成人免费在线观看入口| 九九精品免费视频| 日韩免费观看高清完整版| 国际av在线| 91精品国产91久久久久久不卡| 亚洲最大的免费视频网站| 欧美一区二区三区四区在线观看地址| 伊人青青综合网| 69久久久久久| 久久精品一区二区三区不卡| 黄色小说在线观看视频| 91精品免费在线观看| 爱久久·www| 国产成人在线一区二区| 精品少妇一区| 日韩激情视频一区二区| 精品一区二区三区免费播放| 国产美女免费网站| 欧美日韩亚洲激情| 免费激情视频网站| 欧美肥婆姓交大片| 国产精品日本一区二区不卡视频| 亚洲v欧美v另类v综合v日韩v| 欧美亚洲网站| 中文字幕av网址| 色综合天天狠狠| 日韩三级电影网| 欧美亚洲国产另类| 另类ts人妖一区二区三区| 日韩精品在线观看av| 国产成人在线网站| 青青草原在线免费观看| 欧美一级理论性理论a| 蜜桃视频网站在线观看| 成人乱人伦精品视频在线观看| 日韩理论在线| 亚洲污视频在线观看| 国产精品久久久久久妇女6080| 中国一级特黄视频| 最近的2019中文字幕免费一页| 91国内外精品自在线播放| 亚洲不卡一卡2卡三卡4卡5卡精品| 国产精品久久777777毛茸茸 | 自拍自偷一区二区三区| 可以在线看的黄色网址| 国产午夜久久久久| 中文字幕人妻精品一区| 北条麻妃久久精品| 精品国产一级| 成人免费观看在线| 成人app下载| 亚洲AV无码成人精品区东京热| 精品视频中文字幕| 日韩免费福利视频| 亚洲v日韩v欧美v综合| 国产在线不卡一区| 久草网视频在线观看| 日韩久久午夜影院| 亚洲精品粉嫩美女一区| 亚洲在线不卡| 国产成人精品三级麻豆| 免费在线观看黄网站| 亚洲社区在线观看| 玖玖精品在线| 日本黄色片一级片| 99热这里都是精品| 亚洲精品国产欧美在线观看| 日韩网站在线观看| 狠狠一区二区三区| 国产免费视频传媒| 亚洲人成7777| 午夜小视频在线播放| 国产精品久久99久久| 在线观看国产精品入口| 中文字幕一区三区久久女搜查官| 91福利视频网站| 亚洲性图自拍| 欧美裸体网站| 国产一区二区三区久久久| 日本少妇裸体做爰| 正在播放欧美视频| 韩国女主播一区二区三区| 国产九九在线视频| 亚洲一区影音先锋| 9191在线观看| 精品国产乱码久久久久久88av| 蜜臀av一区二区| 日本少妇xxxx动漫| 社区色欧美激情 | 国产区精品视频在线观看豆花| 国产高潮免费视频| 亚洲成人av一区二区三区| 在线观看美女网站大全免费| 国产欧美一区二区三区不卡高清|