久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

greys在线问题诊断工具

發布時間:2024/3/13 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 greys在线问题诊断工具 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
線上系統為何經常出錯?數據庫為何屢遭黑手?業務調用為何頻頻失敗?連環異常堆棧案,究竟是哪次調用所為? 數百臺服務器意外雪崩的背后又隱藏著什么?是軟件的扭曲還是硬件的淪喪? 走進科學帶你了解Greys, Java線上問題診斷工具。

Greys的誕生

  • LOGO

很早的時候,我們使用BTrace排查問題,在感嘆BTrace的強大之余,也曾好幾次將線上系統折騰掛掉。2012年淘寶的聚石寫了HouseMD,將常用的幾個Btrace腳本整合在一起形成一個獨立風格的應用,但其核心代碼用的是Scala,我們沒這方面的編程維護經驗,所以只好艷羨HouseMD的才思敏捷而無法在其上增加功能。

于是乎,Greys誕生了!
PS:目前Greys僅支持Linux/Unix/Mac上的Java6+,Windows暫時無法支持

Greys是一個JVM進程執行過程中的異常診斷工具。 在不中斷程序執行的情況下輕松完成JVM相關問題排查工作。

和HouseMD一樣,Greys-Anatomy取名同名美劇“實習醫生格蕾”,目的是向前輩致敬。代碼編寫的時候參考了BTrace和HouseMD兩個前輩的思路。

  • 目標群體

有時候突然一個問題反饋上來,需要入參才能完成定位,但恰恰沒有任何日志。回去加上重新部署,一杯咖啡時間過去了,是不是很崩潰?

當你經過反復這樣幾次折騰之后變得聰明了,在自己的代碼的所有入參和出參地方都加上debug日志,但這次問題似乎暴露在別人的代碼中了…是不是很無奈?

突然遇到線上一個性能問題無法確定到底是哪個環節的耗時,只能反復抓jstack猜,還有沒有辦法可以好好的過日子啦?

遇到以上問題時,你就是我們這類工具的目標客戶,此類工具能利用Java6的Instrumentation特性,動態增強你所指定的類,獲取你想要到的信息。

軟件特點

  • ClassLoader隔離

在設計和實現這款程序的時候,花費了非常多的精力在隔離目標類與Greys的ClassLoader隔離上。你可以放心大膽的使用Greys,而不用擔心Greys會干擾到現有業務代碼所使用的三方類庫。

  • 運行時加載

要求目標JVM在JDK6+的基礎上,且當前執行人擁有與目標JVM相同權限。可以做到不中斷當前JVM而動態進行加載、問題分析定位。

  • 常用問題定位命令化

Greys與BTrace、HouseMD等同類軟件最大的不同在于,她擁有我多年來業務代碼疑難雜癥定位的常用技術手段,并將這些排查思路和技巧命令化,將我的問題定位經驗Share給大家。

  • 表達式支持

HouseMD相比BTrace最強大的地方就在于能快速指定攔截的類與方法,但卻無法支持對觀察到的對象進行展開、條件過濾等操作。BTrace的腳本是自己所編寫,可以實現此類功能。但編寫學習成本很高,且容易出錯。

表達式的引用能綜合這兩款軟件的特長同時彌補他們的不足。目前Greys所采用的是OGNL表達式。

  • 多用戶同時訪問

遠程DEBUG最大的問題就在于,只允許一個人訪問DEBUG端口,而且一但斷點條件設置不當,很有可能將其他正常的業務請求攔下,影響其他用戶的使用。

Greys采用的思路是做觀察者,其所設置的斷點不允許阻塞正常業務的流程,但你可以觀察到斷點所攔截到的所有信息。

  • 高性能

精心用ASM設計了字節碼增強,核心的數據結構用數組針對實際場景做裁剪優化。可以放心的用在高負載要求下的JVM環境。

  • 純Java編寫

Greys定位是專業的JVM的業務問題定位工具,既然是JVM那我們所面對的大部分就是Java程序員。我希望能Share自己在編寫軟件時候的所有技巧與思路,讓更多的Java程序員能參與開發或從中受益。

目前已經有非常多的熱心網友在給我的代碼挑錯,非常感謝這些朋友的支持!

不適合的場景

Greys并不萬能,我也沒有計劃讓她能成為萬能的問題定位工具。所以如果你在某些場合能用上更專業的工具,我會非常樂意推薦你使用。

  • 性能環境下的性能損耗定位

性能分析需要有更專業的軟件,我自己常用的則是JProfiler(當然是付費的了)。Greys雖然性能損耗很小,但其分析的維度太少,所以只適合做簡單的性能損耗定位。當你用過專業的性能分析軟件之后,就會發現什么叫專業!

  • 開發環境下的遠程DEBUG

雖然Greys能取代部分的遠程DEBUG行為,但畢竟沒不像DEBUG工具那樣可以看到局部變量的值,而且可操作性上也沒有JVM下Eclipse/IDEA等優秀的IDE自帶的DEBUG工具這么人性化操作。

  • 線上環境大規模部署

與BTrace一樣,Greys獲取到的權限太高,如果線上大規模部署會遭受黑客的攻擊,而今天我為了實現簡單是沒有做過多的鑒權控制。

JDK類庫分析

JDK的類庫存放在rt.jar中,啟動時加載到BootstrapClassLoader中(Hotspot-JVM),但由于Greys也是用Java語言所編寫,所以自身也用到了這些基礎類庫,默認情況下關閉了對這些類的增強。

當然,對于Spring、ibatis、Tomcat等三方類庫是可以放心大膽使用的。

  • 其它不適合場景

BTrace、HouseMD、Greys、JavOSize此類工具都會對Perm區、CodeCache(影響JIT)產生干擾,如果你的程序對這兩塊非常敏感,也請不要在這些場合下使用。

我們的座右銘

讓程序解決繁瑣的事情

  • 特性功能
  • 交互方式
  • 命令行交互
  • 因為很多場景下我們都是用在遠程問題分析中(本地我就直接DEBUG了)。一般Java都會使用在Linux/BSD等類UNIX操作系統下。所以命令行是我最開始不二的選擇,也是目前支持最成熟的交互方案。

    圖形界面交互

    在2.x.x.x版本中將會支持WEB方式訪問,HTTP采用websocket與后臺服務進行交互,預計過年之后能發布上線。

    • 內置主要功能

    查看已被JVM所加載的類、方法信息

    • 方法執行監控

    調用量,成功失敗率,響應時間

    • 方法執行數據操作

    入參、返回值、異常信息記錄與查看;支持動作回放

    • 性能開銷渲染

    跟蹤指定路徑中的方法調用軌跡、耗時

    • 查看方法調用堆棧

    軟件特點

    純Java實現的開源項目

    安裝使用便捷,僅一個jar包

    可無需重啟JVM進行CT式診斷

    觀察變量的出入參

    OGNL表達式展開變量、過濾條件,方便你查看入參、出參、異常、當前對象的各種屬性細節

    常用分析命令集成,monitor、trace等

    時間隧道,tt命令能以時間維度紀錄下監控期內的每一次調用環境

    • 多人并行協作

    基于C/S架構的任務模式甚至能讓多人同時遠程到同一進程上執行不同的指令、腳本,非常適合團隊一起進行線上問題排查與跟蹤。Greys采用純Java編寫并留有良好的擴展,如果你有需求,只要你會Java,就可以為你自己編寫想要的功能。 Greys最有利的武器是他的表達式,能讓你在感受到HouseMD集成功能便利的同時,也能發揮出自定義Btrace腳本的靈活。

    • 多人協作

    應用管理員擁有JVM進程權限,由他來首先在目標JVM上啟動Greys
    技術專家A和B平時沒有對應機器的權限,但只要網絡能訪問,他們可以通過指定ip:port直接訪問目標機器的JVM進程,仿佛在本地一般

    Greys入門

    軟件安裝
    Greys支持在線安裝和本地安裝兩種安裝方案,安裝即可用,推薦使用在線安裝。

    在線安裝(推薦)

    請復制以下內容,并粘貼到命令行中。

    curl -sLk http://ompc.oss.aliyuncs.com/greys/install.sh|bash
    命令將會下載啟動腳本文件greys.sh到當前目錄,你可以放在任何地方或加入到$PATH中

    本地安裝

    在某些情況下,目標服務器無法訪問遠程阿里云主機,此時你需要自行下載greys的安裝文件。

    下載最新版本的GREYS

    http://ompc.oss.aliyuncs.com/greys/release/greys-stable-bin.zip

    解壓zip文件后,執行以下命令

    cd greys
    sh ./install-local.sh
    即完成本地安裝。

    常見安裝問題
    下載失敗

    通常這樣的原因你需要檢查你的網絡是否暢通,核對是否能正確訪問這個網址

    http://ompc.oss.aliyuncs.com/greys/greys.sh

    downloading…
    download failed!
    沒有權限

    安裝腳本首先會將greys文件從阿里云服務器上下載到當前執行腳本的目錄,所以你必須要擁有當前目錄的寫權限。

    permission denied, target directory is not writable.
    啟動Greys
    參數說明

    ./greys.sh [@IP:PORT]
    **PID:**目標Java進程ID(請確保執行當前執行命令的用戶必須有足夠的權限操作對應的Java進程)

    **IP:**目標服務器IP地址,當遠程服務開啟之后,其他人可以通過指定IP的形式加載到對應目標機器的Java進程中,從而實現遠程協助。專門用于解決目標主機賬號沒有權限,但對方兄弟卻非常需要你支援的時候。Greys允許多個用戶同時訪問,并且各自的命令不會相互干擾執行。

    **PORT:**目標服務器端口號,設計端口號的初心則是希望解決同臺機器上存在多個Java進程需要被Greys分析的情況,默認的端口號是3658,如果不做區分則會引起端口沖突。

    啟動范例

    如果不指定IP和PORT,默認是127.0.0.1和3658

    ./greys.sh 12345
    等價于

    ./greys.sh 12345@127.0.0.1
    等價于

    ./greys.sh 12356@127.0.0.1:3658
    sudo支持

    成熟的線上管理環境一般都不會直接開放JVM部署用戶權限給你,而是通過sudo-list來控制和監控用戶的越權操作。由于greys.sh腳本中會對當前用戶的環境變量產生感知,所以需要加上-H參數

    sudo -u admin -H ./greys.sh 12345
    TELNET的支持

    Greys支持通過telnet來訪問服務端,如果當你手頭的機器沒有安裝Greys的客戶端,你可以簡單的通過telnet命令來進行訪問。

    telnet 10.232.12.113 3658
    當然了,telnet命令和Greys自帶的Console在使用友好度上還是有一定的差距,不過解決應急之需沒有問題。

    會話與任務
    Greys是一個C/S架構的程序,所以當Client訪問到Server時,Server會維護一個session(會話),以及session的心跳、超時機制。事務(Tx)機制則是建立在session的基礎上,所有的命令交互都會創建一個事務,并且產生對應的隊列進行輸出緩沖。

    事務伴隨著命令的生命周期而存在,命令分兩種:

    立即返回

    立即返回的命令定義是:敲下命令后Server端立即返回最終結果,后續無持續反饋信息,釋放Client對輸入的鎖定,重新開放讓用戶輸入信息,比如version、sc、sm等。

    等待中止

    等待中止的命令則是需要用戶主動輸入Ctrl+D完成的命令中止操作。命令執行后無法立即返回最終結果,而是不斷的將中間產生的輸出源源不斷的輸出到客戶端中,這種命令比如stack、monitor等。

    當session關閉時,所有掛在session的事務也會立即被關閉。

    表達式
    Greys相對于HouseMD、BTrace而言最靈活的地方就是在用表達式來靈活的支持不同的問題排查、分析場景。

    表達式分兩種:條件表達式與觀察表達式

    條件表達式

    條件表達式用在使用表達式表達TRUE或FALSE的場景,從1.6.0.6版本開始,trace、stack、tt、watch命令都增加了條件表達式支持。

    條件表達式將會使用greys內置的表達式解析引擎,識別OGNL語法。

    特別指出的是,如果你書寫了一個錯誤的條件表達式,greys為了兼容錯誤會解析為FALSE。

    以下是一些條件表達式使用的例子和預測結果

    條件表達式 預測結果 解析結果說明
    11 TRUE 條件表達式為真
    true TRUE 條件表達式為真
    @@@ FALSE 非法的條件表達式
    paramsnull FALSE 條件表達式為假
    false FALSE 條件表達式為假
    1!=1 FALSE 條件表達式為假
    觀察表達式

    觀察表達式用在使用表達式表達輸出內容的場景,尤其在watch和tt命令中,觀察表達式至關重要。

    條件表達式將會使用greys內置的表達式解析引擎,識別OGNL語法,將表達式轉換為待輸出的對象。

    以下是一些觀察表達式使用的例子

    字符串拼接

    clazz.name+"."+method.name
    數字運算

    clazz.name.length()+method.name.length()
    表達式核心變量
    無論是匹配表達式也好、觀察表達式也罷,他們核心判斷變量都是圍繞著一個greys中的通用通知對象Advice進行。

    它的簡略代碼結構如下

    public class Advice {private final ClassLoader loader;private final Class<?> clazz;private final GaMethod method;private final Object target;private final Object[] params;private final Object returnObj;private final Throwable throwExp;private final boolean isBefore;private final boolean isThrow;private final boolean isReturn;// getter/setter }

    這里列一個表格來說明不同變量的含義

    變量名 變量解釋
    loader 本次調用類所在的ClassLoader
    clazz 本次調用類的Class引用
    method 本次調用方法反射引用
    target 本次調用類的實例
    params 本次調用參數列表,這是一個數組,如果方法是無參方法則為空數組
    returnObj 本次調用返回的對象。當且僅當isReturntrue成立時候有效,表明方法調用是以正常返回的方式結束。如果當前方法無返回值void,則值為null
    throwExp 本次調用拋出的異常。當且僅當isThrowtrue成立時有效,表明方法調用是以拋出異常的方式結束。
    isBefore 輔助判斷標記,當前的通知節點有可能是在方法一開始就通知,此時isBeforetrue成立,同時isThrowfalse和isReturn==false,因為在方法剛開始時,還無法確定方法調用將會如何結束。
    isThrow 輔助判斷標記,當前的方法調用以拋異常的形式結束。
    isReturn 輔助判斷標記,當前的方法調用以正常返回的形式結束。
    所有變量都可以在表達式中直接使用,如果在表達式中編寫了不符合OGNL腳本語法或者引入了不在表格中的變量,

    對條件表達式、檢索表達式而言,則一律當成false來處理

    對觀察表達式而言,則放棄當前方法調用的處理(不輸出)

    JDK類支持
    JDK的類默認由BootstrapClassLoader負責加載,由于Greys自己也適用了大量的JDK類,所以我不建議使用Greys直接對JDK相關類進行增強、代理。

    默認而言,Greys會拒絕執行關于JDK類的操作命令。你需顯式用options命令打開。

    ga?>options unsafe true +--------+--------------+-------------+ | NAME | BEFORE-VALUE | AFTER-VALUE | +--------+--------------+-------------+ | unsafe | false | true | +--------+--------------+-------------+ Affect(row-cnt:1) cost in 4 ms. ga?>

    模式匹配
    一些命令需要對類、方法進行模式匹配過濾,從1.5.4.6及其之后的版本之后,Greys默認支持通配符匹配,目前僅支持*和?兩個通配符,正則表達式需要顯式指定-E參數激活。

    模式匹配舉例

    原sc命令的正則表達式匹配

    sc com.apache.commons.lang.StringUtils
    在1.5.4.6及其之后的版本中將會默認使用通配符表達式

    sc com.apache.commons.lang.StringUtils
    sc *lang.StringUtils
    若想繼續使用正則表達式匹配,需要顯式-E參數激活

    sc -E com.apache.commons.lang.StringUtils
    sc -E com…*StringUtils
    支持模式匹配的命令

    所有需要模式匹配的命令都支持參數-E,他們分別是:sc、sm、stack、monitor、watch、tt、trace

    Greys命令詳解
    命令清單
    命令 說明
    help 查看命令的幫助文檔,每個命令和參數都有很詳細的說明
    sc 查看JVM已加載的類信息
    sm 查看已加載的方法信息
    monitor 方法執行監控
    trace 渲染方法內部調用路徑,并輸出方法路徑上的每個節點上耗時
    ptrace 強化版的trace命令。通過指定渲染路徑,并可記錄下路徑中所有方法的入參、返值;與tt命令聯動。
    watch 方法執行數據觀測
    tt 方法執行數據的時空隧道,記錄下指定方法每次調用的入參和返回信息,并能對這些不同的時間下調用進行觀測
    stack 輸出當前方法被調用的調用路徑
    js 支持使用JavaScript腳本;支持CommonJS部分規范模塊化(BMD規范)
    version 輸出當前目標Java進程所加載的Greys版本號
    quit 退出greys客戶端
    shutdown 關閉greys服務端
    reset 重置增強類,將被greys增強過的類全部還原
    session 查看當前會話
    jvm 查看當前JVM的信息
    help命令
    help命令會是你第一個在Greys中使用的命令,也會是今后使用最頻繁的命令之一,當你在使用的過程中有任何不熟悉的疑問,請直接help吧~

    查看命令清單

    進入Greys的歡迎界面后,所有命令都可以通過help獲取幫助。此時你直接輸入一個help,Greys則會返回所有命令的大概用途介紹。

    ga?>help +----------+----------------------------------------------------------------------------------+ | sc | Search all the classes loaded by JVM | +----------+----------------------------------------------------------------------------------+ | sm | Search the method of classes loaded by JVM | +----------+----------------------------------------------------------------------------------+ | monitor | Monitor the execution of specified Class and its method | +----------+----------------------------------------------------------------------------------+ | watch | Display the details of specified class and method | +----------+----------------------------------------------------------------------------------+ | tt | Time Tunnel | +----------+----------------------------------------------------------------------------------+ | stack | Display the stack trace of specified class and method | +----------+----------------------------------------------------------------------------------+ | ptrace | Display the detailed thread path stack of specified class and method | +----------+----------------------------------------------------------------------------------+ | trace | Display the detailed thread stack of specified class and method | | js | Enhanced JavaScript | +----------+----------------------------------------------------------------------------------+ | session | Display current session information | +----------+----------------------------------------------------------------------------------+ | quit | Quit Greys console | +----------+----------------------------------------------------------------------------------+ | version | Display Greys version | +----------+----------------------------------------------------------------------------------+ | jvm | Display the target JVM information | +----------+----------------------------------------------------------------------------------+ | reset | Reset all the enhanced classes | +----------+----------------------------------------------------------------------------------+ | shutdown | Shut down Greys server and exit the console | +----------+----------------------------------------------------------------------------------+ | help | Display Greys Help | +----------+----------------------------------------------------------------------------------+ Affect(row-cnt:1) cost in 9 ms. ga?>

    嗯,囋囋,我知道我的英文翻譯很爛,就不用吐槽了。期望能有人能幫我重新打理英文的幫助界面和英文xwiki,小生感激不盡!

    查看命令詳細幫助

    help命令同時也支持對其他命令的一個解釋說明,比如我們鍵入help watch,greys將會返回watch命令的所有參數解釋、用法介紹等詳細信息。

    ga?>help watch +---------+----------------------------------------------------------------------------------+ | USAGE | -[bfesx:En:] class-pattern method-pattern express condition-express | | | Display the details of specified class and method | +---------+----------------------------------------------------------------------------------+ | OPTIONS | [b] | Watch before invocation | | | -----------------+-------------------------------------------------------------- | | | [f] | Watch after invocation | | | -----------------+-------------------------------------------------------------- | | | [e] | Watch after throw exception | | | -----------------+-------------------------------------------------------------- | | | [s] | Watch after successful invocation | | | -----------------+-------------------------------------------------------------- | | | [x:] | Expand level of object (0 by default) | | | -----------------+-------------------------------------------------------------- | | | [E] | Enable regular expression to match (wildcard matching by def | | | | ault) | | | -----------------+-------------------------------------------------------------- | | | [n:] | Threshold of execution times | | | -----------------+-------------------------------------------------------------- | | | class-pattern | Path and classname of Pattern Matching | | | -----------------+-------------------------------------------------------------- | | | method-pattern | Method of Pattern Matching | | | -----------------+-------------------------------------------------------------- | | | express | express, write by OGNL. | | | | | | | | FOR EXAMPLE params[0] | | | | params[0]+params[1] | | | | returnObj | | | | throwExp | | | | target | | | | clazz | | | | method | | | | | | | | THE STRUCTURE | | | | target : the object | | | | clazz : the object's class | | | | method : the constructor or method | | | | params[0..n] : the parameters of method | | | | returnObj : the returned object of method | | | | throwExp : the throw exception of method | | | | isReturn : the method ended by return | | | | isThrow : the method ended by throwing exception | | | -----------------+-------------------------------------------------------------- | | | condition-expre | Conditional expression by OGNL | | | ss | | | | | FOR EXAMPLE | | | | TRUE : 1==1 | | | | TRUE : true | | | | FALSE : false | | | | TRUE : params.length>=0 | | | | FALSE : 1==2 | | | | | | | | THE STRUCTURE | | | | target : the object | | | | clazz : the object's class | | | | method : the constructor or method | | | | params[0..n] : the parameters of method | | | | returnObj : the returned object of method | | | | throwExp : the throw exception of method | | | | isReturn : the method ended by return | | | | isThrow : the method ended by throwing exception | +---------+----------------------------------------------------------------------------------+ | EXAMPLE | watch -Eb org\.apache\.commons\.lang\.StringUtils isBlank params[0] | | | watch -b org.apache.commons.lang.StringUtils isBlank params[0] | | | watch -f org.apache.commons.lang.StringUtils isBlank returnObj | | | watch -bf *StringUtils isBlank params[0] | | | watch *StringUtils isBlank params[0] | | | watch *StringUtils isBlank params[0] params[0].length==1 | +---------+----------------------------------------------------------------------------------+ Affect(row-cnt:1) cost in 15 ms. ga?>

    幫助信息組成

    幫助文檔分成Usage、Options、Example三個區域,分別是用途說明、參數列表、實際例子

    ga?>help session +---------+----------------------------------------------------------------------------------+ | USAGE | -[c:] | | | Display current session information | +---------+----------------------------------------------------------------------------------+ | OPTIONS | [c:] | Modify the character set of session | +---------+----------------------------------------------------------------------------------+ | EXAMPLE | session | | | session -c GBK | | | session -c UTF-8 | +---------+----------------------------------------------------------------------------------+ Affect(row-cnt:1) cost in 2 ms. ga?>

    參數選項說明

    []中的參數為選填項,比如[d],意思是該命令可接受一個名稱為d的選填參數,且不用參數值。

    [:]中的參數則為選填,但有值的參數,比如[c:]

    class-pattern/method-pattern,這兩個參數為隱性參數,即在輸入的時候不需要特意聲明參數。class-pattern為類路徑.類名稱的表達式匹配,method-pattern則為方法名的表達式匹配。

    sc命令
    “Search-Class”的簡寫,這個命令能搜索出所有已經加載到JVM中的Class信息。

    參數說明

    參數名稱 參數說明
    class-pattern 類名表達式匹配
    method-pattern 方法名表達式匹配
    [d] 輸出當前類的詳細信息,包括這個類所加載的原始文件來源、類的聲明、加載的e2ClassLoader等詳細信息。
    如果一個類被多個ClassLoader所加載,則會出現多次
    [f] 輸出當前類的成員變量信息
    [E] 支持正則表達式匹配
    使用參考

    ga?>sc -df *alibaba.Address +------------------+-----------------------------------------------+ | class-info | com.alibaba.Address | +------------------+-----------------------------------------------+ | code-source | /Users/vlinux/temp/agent-test/target/ | +------------------+-----------------------------------------------+ | name | com.alibaba.Address | +------------------+-----------------------------------------------+ | isInterface | false | +------------------+-----------------------------------------------+ | isAnnotation | false | +------------------+-----------------------------------------------+ | isEnum | false | +------------------+-----------------------------------------------+ | isAnonymousClass | false | +------------------+-----------------------------------------------+ | isArray | false | +------------------+-----------------------------------------------+ | isLocalClass | false | +------------------+-----------------------------------------------+ | isMemberClass | false | +------------------+-----------------------------------------------+ | isPrimitive | false | +------------------+-----------------------------------------------+ | isSynthetic | false | +------------------+-----------------------------------------------+ | simple-name | Address | +------------------+-----------------------------------------------+ | modifier | public | +------------------+-----------------------------------------------+ | annotation | | +------------------+-----------------------------------------------+ | interfaces | | +------------------+-----------------------------------------------+ | super-class | com.alibaba.CountObject | | | `-java.lang.Object | +------------------+-----------------------------------------------+ | class-loader | sun.misc.Launcher$AppClassLoader@2a139a55 | | | `-sun.misc.Launcher$ExtClassLoader@5fb20bfd | +------------------+-----------------------------------------------+ | fields | modifier : private | | | type : java.lang.String | | | name : username | | | | | | modifier : private | | | type : int | | | name : addressId | | | | | | modifier : private | | | type : java.lang.String | | | name : addressName | | | | +------------------+-----------------------------------------------+ Affect(row-cnt:1) cost in 9 ms. ga?>

    sm命令
    “Search-Method”的簡寫,這個命令能搜索出所有已經加載了Class信息的方法信息。

    參數說明

    參數名稱 參數說明
    class-pattern 類名表達式匹配
    method-pattern 方法名表達式匹配
    [d] 展示每個方法的詳細信息
    [E] 支持正則表達式匹配
    使用參考

    ga?>sm -d *alibaba.Address * +-----------------------------+-------------------------------------------------+ | DECLARED-CLASS | VISIBLE-METHOD | +-----------------------------+-------------------------------------------------+ | com.alibaba.Address | declaring-class : class com.alibaba.Address | | | method-name : getAddressId | | | modifier : public | | | annotation : | | | parameters : | | | return : int | | | exceptions : | +-----------------------------+-------------------------------------------------+ | com.alibaba.Address | declaring-class : class com.alibaba.Address | | | method-name : getAddressName | | | modifier : public | | | annotation : | | | parameters : | | | return : java.lang.String | | | exceptions : | +-----------------------------+-------------------------------------------------+ | com.alibaba.Address | declaring-class : class com.alibaba.CountObject | | `-com.alibaba.CountObject | method-name : finalize | | | modifier : protected | | | annotation : | | | parameters : | | | return : void | | | exceptions : java.lang.Throwable | +-----------------------------+-------------------------------------------------+ | com.alibaba.Address | declaring-class : class com.alibaba.CountObject | | `-com.alibaba.CountObject | method-name : count | | | modifier : public | | | annotation : | | | parameters : | | | return : int | | | exceptions : | +-----------------------------+-------------------------------------------------+ Affect(row-cnt:4) cost in 9 ms. ga?>

    monitor命令
    對匹配class-pattern/method-pattern的類.方法的調用進行監控。

    monitor命令是介紹到的第一個非實時返回命令,實時返回命令是輸入之后立即返回,而非實時返回的命令,則是不斷的等待目標Java進程返回信息,直到用戶輸入Ctrl+D為止。服務端是以任務的形式在后臺跑任務,植入的代碼隨著任務的中止而停止執行,所以任務關閉后,不會對原有性能產生太大影響,而且原則上,任何Greys的命令也不會引起任何原有業務邏輯的改變。

    監控的維度說明

    監控項 說明
    timestamp 時間戳
    class Java類
    method 方法(構造方法、普通方法)
    total 調用次數
    success 成功次數
    fail 失敗次數
    rt 平均RT
    fail-rate 失敗率
    參數說明

    方法擁有一個命名參數[c:],意思是統計周期(cycle of output),擁有一個整形的參數值

    參數名稱 參數說明
    [c:] 統計周期,默認值為120秒
    使用參考

    ga?>monitor -c 5 *alibaba*Test printAddress Press Ctrl+D to abort. Affect(class-cnt:1 , method-cnt:1) cost in 22 ms. +-----------+-------+--------+-------+---------+------+-----------+------------+------------+------------+ | TIMESTAMP | CLASS | METHOD | TOTAL | SUCCESS | FAIL | FAIL-RATE | AVG-RT(ms) | MIN-RT(ms) | MAX-RT(ms) | +-----------+-------+--------+-------+---------+------+-----------+------------+------------+------------++---------------------+-----------------------+--------------+-------+---------+------+-----------+------------+------------+------------+ | TIMESTAMP | CLASS | METHOD | TOTAL | SUCCESS | FAIL | FAIL-RATE | AVG-RT(ms) | MIN-RT(ms) | MAX-RT(ms) | +---------------------+-----------------------+--------------+-------+---------+------+-----------+------------+------------+------------+ | 2015-12-06 16:34:56 | com.alibaba.AgentTest | printAddress | 5 | 3 | 2 | 40.00% | 0.20 | 0 | 1 | +---------------------+-----------------------+--------------+-------+---------+------+-----------+------------+------------+------------++---------------------+-----------------------+--------------+-------+---------+------+-----------+------------+------------+------------+ | TIMESTAMP | CLASS | METHOD | TOTAL | SUCCESS | FAIL | FAIL-RATE | AVG-RT(ms) | MIN-RT(ms) | MAX-RT(ms) | +---------------------+-----------------------+--------------+-------+---------+------+-----------+------------+------------+------------+ | 2015-12-06 16:35:01 | com.alibaba.AgentTest | printAddress | 5 | 3 | 2 | 40.00% | 0.00 | 0 | 0 | +---------------------+-----------------------+--------------+-------+---------+------+-----------+------------+------------+------------+ga?>

    trace命令
    命令能主動搜索class-pattern/method-pattern所渲染的方法調用路徑,渲染和統計整個調用鏈路上的所有性能開銷和追蹤調用鏈路。

    參數說明

    參數名稱 參數說明
    class-pattern 類名表達式匹配
    method-pattern 方法名表達式匹配
    condition-express 條件表達式
    [n:] 命令執行次數
    [E] 支持正則表達式匹配
    注意事項

    trace能方便的幫助你定位和發現因RT高而導致的性能問題缺陷,但其每次只能跟蹤一級方法的調用鏈路,目前暫時沒有精力去解決往下幾個層級的調用。如果真有需求可以Issues我。

    使用參考

    ga?>trace com.alibaba.manager.DefaultAddressManager toStringPass2 Press Ctrl+D to abort. Affect(class-cnt:1 , method-cnt:1) cost in 19 ms. `---+Tracing for : thread_name="agent-test-address-printer" thread_id=0xb;is_daemon=false;priority=5;`---+[0,0ms]com.alibaba.manager.DefaultAddressManager:toStringPass2()+---[0,0ms]com.alibaba.Address:getAddressId()+---[0,0ms]com.alibaba.Address:getAddressId()+---[0,0ms]java.lang.Integer:valueOf()+---[0,0ms]com.alibaba.Address:getAddressName()+---[0,0ms]com.alibaba.Address:count()+---[0,0ms]java.lang.Integer:valueOf()`---[0,0ms]java.lang.String:format()

    是不是很眼熟,沒錯,在JProfiler等收費軟件中你曾經見識過類似的功能,這里你通過命令就能打印出指定調用路徑。

    [10,1ms]的含義,10所代表的含義是:當前節點的整體耗時;1的含義是:當前節點在當前步驟的耗時;兩者之間用逗號分割,單位為毫秒。

    ptrace命令
    命令解釋

    命令為trace命令的強化版,通過指定渲染路徑來完成對方法執行路徑的渲染過程

    命令能主動搜索tracing-path-pattern所渲染的路徑,渲染和統計整個調用鏈路上的所有性能開銷和追蹤調用鏈路。

    參數說明

    參數名稱 參數說明
    class-pattern 類名表達式匹配
    method-pattern 方法名表達式匹配
    condition-express 條件表達式
    [t] 記錄下渲染路徑上所有方法的入參與返回值,記錄下的返回值可以與tt命令聯動
    [n:] 命令執行次數
    [E] 支持正則表達式匹配
    [path:] 渲染路徑表達式匹配,該參數可多次使用
    [Epath:] 正則表達式渲染路徑表達式匹配,該參數可多次使用
    使用例子

    ga?>ptrace -t *alibaba*Test printAddress --path=*alibaba* Press Ctrl+D to abort. Affect(class-cnt:10 , method-cnt:36) cost in 148 ms. `---+pTracing for : thread_name="agent-test-address-printer" thread_id=0xb;is_daemon=false;priority=5;process=1004;`---+[2,2ms]com.alibaba.AgentTest:printAddress(); index=1021;+---+[1,1ms]com.alibaba.manager.DefaultAddressManager:newAddress(); index=1014;| +---[1,1ms]com.alibaba.CountObject:<init>(); index=1012;| `---[1,0ms]com.alibaba.Address:<init>(); index=1013;+---+[2,1ms]com.alibaba.manager.DefaultAddressManager:toString(); index=1020;| +---+[2,1ms]com.alibaba.manager.DefaultAddressManager:toStringPass1(); index=1019;| | +---+[2,1ms]com.alibaba.manager.DefaultAddressManager:toStringPass2(); index=1017;| | | +---[1,0ms]com.alibaba.Address:getAddressId(); index=1015;| | | +---+[1,0ms]com.alibaba.manager.DefaultAddressManager:throwRuntimeException(); index=1016;| | | | `---[1,0ms]throw:java.lang.RuntimeException| | | `---[1,0ms]throw:java.lang.RuntimeException| | +---[2,0ms]com.alibaba.AddressException:<init>(); index=1018;| | `---[2,0ms]throw:com.alibaba.AddressException| `---[2,0ms]throw:com.alibaba.AddressException`---[2,0ms]throw:com.alibaba.AddressException

    ±---------±-----------±---------------------±-----------±---------±---------±----------------±-------------------------------±-------------------------------+
    | INDEX | PROCESS-ID | TIMESTAMP | COST(ms) | IS-RET | IS-EXP | OBJECT | CLASS | METHOD |
    ±---------±-----------±---------------------±-----------±---------±---------±----------------±-------------------------------±-------------------------------+
    | 1012 | 1004 | 2015-12-06 16:46:49 | 0 | true | false | 0x943cff | CountObject | |
    ±---------±-----------±---------------------±-----------±---------±---------±----------------±-------------------------------±-------------------------------+
    | 1013 | 1004 | 2015-12-06 16:46:49 | 0 | true | false | 0x943cff | Address | |
    ±---------±-----------±---------------------±-----------±---------±---------±----------------±-------------------------------±-------------------------------+
    | 1014 | 1004 | 2015-12-06 16:46:49 | 1 | true | false | 0x6833b8a5 | DefaultAddressManager | newAddress |
    ±---------±-----------±---------------------±-----------±---------±---------±----------------±-------------------------------±-------------------------------+
    | 1015 | 1004 | 2015-12-06 16:46:49 | 0 | true | false | 0x943cff | Address | getAddressId |
    ±---------±-----------±---------------------±-----------±---------±---------±----------------±-------------------------------±-------------------------------+
    | 1016 | 1004 | 2015-12-06 16:46:49 | 0 | false | true | 0x6833b8a5 | DefaultAddressManager | throwRuntimeException |
    ±---------±-----------±---------------------±-----------±---------±---------±----------------±-------------------------------±-------------------------------+
    | 1017 | 1004 | 2015-12-06 16:46:49 | 0 | false | true | 0x6833b8a5 | DefaultAddressManager | toStringPass2 |
    ±---------±-----------±---------------------±-----------±---------±---------±----------------±-------------------------------±-------------------------------+
    | 1018 | 1004 | 2015-12-06 16:46:49 | 0 | true | false | 0x67e7a923 | AddressException | |
    ±---------±-----------±---------------------±-----------±---------±---------±----------------±-------------------------------±-------------------------------+
    | 1019 | 1004 | 2015-12-06 16:46:49 | 1 | false | true | 0x6833b8a5 | DefaultAddressManager | toStringPass1 |
    ±---------±-----------±---------------------±-----------±---------±---------±----------------±-------------------------------±-------------------------------+
    | 1020 | 1004 | 2015-12-06 16:46:49 | 1 | false | true | 0x6833b8a5 | DefaultAddressManager | toString |
    ±---------±-----------±---------------------±-----------±---------±---------±----------------±-------------------------------±-------------------------------+
    | 1021 | 1004 | 2015-12-06 16:46:49 | 2 | false | true | 0x2062a3d | AgentTest | printAddress |
    ±---------±-----------±---------------------±-----------±---------±---------±----------------±-------------------------------±-------------------------------+
    watch命令
    能方便的讓你觀察到指定方法的調用情況。能觀察到的范圍為:返回值、拋出異常、入參,通過編寫OGNL表達式進行對應變量的查看。

    參數說明

    watch的參數比較多,主要是因為它能在4個不同的場景觀察對象

    參數名稱 參數說明
    class-pattern 類名表達式匹配
    method-pattern 方法名表達式匹配
    condition-express 條件表達式
    express 觀察表達式
    [b] 在方法調用之前觀察
    [e] 在方法異常之后觀察
    [s] 在方法返回之后觀察
    [f] 在方法結束之后(正常返回和異常返回)觀察
    這里重點要說明的是觀察表達式,觀察表達式的構成主要由OGNL表達式組成,所以你可以這樣寫params[0]+"$"+target,只要是一個合法的OGNL表達式,都能被正常支持。

    觀察的維度也比較多,主要體現在參數advice的數據結構上。Advice參數最主要是封裝了通知節點的所有信息。參考表達式核心變量中關于該節點的描述。

    使用參考

    ga?>watch -b *Test printAddress '"params[0]="+params[0]' Press Ctrl+D to abort. Affect(class-cnt:1 , method-cnt:1) cost in 32 ms. params[0]=3163 params[0]=3164 params[0]=3165 params[0]=3166

    這里需要說明的一個參數x,這個參數決定了輸出的結果的層級遍歷輸出對象,當加上這個參數之后,greys會將輸出的對象按照指定層級進行剝開。-x 1表明展開第1層級。

    ga?>watch -s com.alibaba.manager.DefaultAddressManager newAddress returnObj -x 1 Press Ctrl+D to abort. Affect(class-cnt:1 , method-cnt:1) cost in 34 ms. @Address[username=@String[dukun],addressId=@Integer[3244],addressName=@String[ADDRESS], ]

    tt命令
    時間隧道命令是我在使用watch命令進行問題排查的時候衍生出來的想法。watch雖然很方便和靈活,但需要提前想清楚觀察表達式的拼寫,這對排查問題而言要求太高,因為很多時候我們并不清楚問題出自于何方,只能靠蛛絲馬跡進行猜測。

    這個時候如果能記錄下當時方法調用的所有入參和返回值、拋出的異常會對整個問題的思考與判斷非常有幫助。

    于是乎,TimeTunnel命令就誕生了。

    記錄方法的調用

    基本用法

    對于一個最基本的使用來說,就是記錄下當前方法的每次調用環境現場。

    ga?>tt -t -n 3 *Test printAddress Press Ctrl+D to abort. Affect(class-cnt:1 , method-cnt:1) cost in 33 ms.

    ±---------±-----------±---------------------±-----------±---------±---------±----------------±-------------------------------±-------------------------------+
    | INDEX | PROCESS-ID | TIMESTAMP | COST(ms) | IS-RET | IS-EXP | OBJECT | CLASS | METHOD |
    ±---------±-----------±---------------------±-----------±---------±---------±----------------±-------------------------------±-------------------------------+
    | 1036 | 1009 | 2015-12-06 16:57:06 | 1 | false | true | 0x2062a3d | AgentTest | printAddress |
    ±---------±-----------±---------------------±-----------±---------±---------±----------------±-------------------------------±-------------------------------+
    | 1037 | 1010 | 2015-12-06 16:57:07 | 0 | false | true | 0x2062a3d | AgentTest | printAddress |
    ±---------±-----------±---------------------±-----------±---------±---------±----------------±-------------------------------±-------------------------------+
    | 1038 | 1011 | 2015-12-06 16:57:08 | 0 | true | false | 0x2062a3d | AgentTest | printAddress |
    ±---------±-----------±---------------------±-----------±---------±---------±----------------±-------------------------------±-------------------------------+
    ga?>
    命令參數解析

    -t

    tt命令有很多個主參數,-t就是其中之一。這個參數的表明希望記錄下類*Test的print方法的每次執行情況。

    -n 3

    當你執行一個調用量不高的方法時可能你還能有足夠的時間用CTRL+D中斷tt命令記錄的過程,但如果遇到調用量非常大的方法,瞬間就能將你的JVM內存撐爆。

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

    表格字段說明

    表格字段 字段解釋
    INDEX 時間片段記錄編號,每一個編號代表著一次調用,后續tt還有很多命令都是基于此編號指定記錄操作,非常重要。
    PROCESS-ID 過程編號,我們認為同一個線程的一次同步調用為一個過程
    TIMESTAMP 方法執行的本機時間,記錄了這個時間片段所發生的本機時間
    COST(ms) 方法執行的耗時
    IS-RET 方法是否以正常返回的形式結束
    IS-EXP 方法是否以拋異常的形式結束
    OBJECT 執行對象的hashCode(),注意,曾經有人誤認為是對象在JVM中的物理內存地址,但很遺憾他不是。但他能幫助你簡單的標記當前執行方法的類實體
    CLASS 執行的類名
    METHOD 執行的方法名
    條件表達式

    不知道大家是否有在使用過程中遇到以下困惑

    似乎很難區分出重載的方法
    我只需要觀察特定參數,但是tt卻全部都給我記錄了下來
    從1.6.0.6版本之后,應廣大婦女群眾的要求,增加了條件表達式,這樣你可以通過簡單的條件表達式解決上邊的困惑。

    條件表達式也是用OGNL來編寫,核心的判斷對象依然是Advice對象。

    除了tt命令之外,watch、trace、stack命令也都支持條件表達式

    解決方法重載

    tt -t *Test print params[0].length==1

    通過制定參數個數的形式解決不同的方法簽名,如果參數個數一樣,你還可以這樣寫

    tt -t *Test print ‘params[1].class == Integer.class’

    解決指定參數

    tt -t *Test print params[0].mobile==“13989838402”

    檢索調用記錄

    當你用tt記錄了一大片的時間片段之后,你希望能從中篩選出自己需要的時間片段,這個時候你就需要對現有記錄進行檢索。

    假設我們有這些記錄

    ga?>tt -l
    ±---------±-----------±---------------------±-----------±---------±---------±----------------±-------------------------------±-------------------------------+
    | INDEX | PROCESS-ID | TIMESTAMP | COST(ms) | IS-RET | IS-EXP | OBJECT | CLASS | METHOD |
    ±---------±-----------±---------------------±-----------±---------±---------±----------------±-------------------------------±-------------------------------+
    | 1047 | 1020 | 2015-12-06 17:03:00 | 1 | true | false | 0x2062a3d | AgentTest | printUser |
    ±---------±-----------±---------------------±-----------±---------±---------±----------------±-------------------------------±-------------------------------+
    | 1048 | 1021 | 2015-12-06 17:03:01 | 0 | true | false | 0x2062a3d | AgentTest | printUser |
    ±---------±-----------±---------------------±-----------±---------±---------±----------------±-------------------------------±-------------------------------+
    | 1049 | 1022 | 2015-12-06 17:03:01 | 1 | true | false | 0x2062a3d | AgentTest | printAddress |
    ±---------±-----------±---------------------±-----------±---------±---------±----------------±-------------------------------±-------------------------------+
    | 1050 | 1023 | 2015-12-06 17:03:01 | 0 | true | false | 0x2062a3d | AgentTest | printUser |
    ±---------±-----------±---------------------±-----------±---------±---------±----------------±-------------------------------±-------------------------------+
    | 1051 | 1024 | 2015-12-06 17:03:02 | 1 | true | false | 0x2062a3d | AgentTest | printUser |
    ±---------±-----------±---------------------±-----------±---------±---------±----------------±-------------------------------±-------------------------------+
    | 1052 | 1025 | 2015-12-06 17:03:02 | 1 | false | true | 0x2062a3d | AgentTest | printAddress |
    ±---------±-----------±---------------------±-----------±---------±---------±----------------±-------------------------------±-------------------------------+
    | 1053 | 1026 | 2015-12-06 17:03:02 | 0 | true | false | 0x2062a3d | AgentTest | printUser |
    ±---------±-----------±---------------------±-----------±---------±---------±----------------±-------------------------------±-------------------------------+
    | 1054 | 1027 | 2015-12-06 17:03:03 | 0 | true | false | 0x2062a3d | AgentTest | printUser |
    ±---------±-----------±---------------------±-----------±---------±---------±----------------±-------------------------------±-------------------------------+
    | 1055 | 1028 | 2015-12-06 17:03:03 | 0 | false | true | 0x2062a3d | AgentTest | printAddress |
    ±---------±-----------±---------------------±-----------±---------±---------±----------------±-------------------------------±-------------------------------+
    | 1056 | 1029 | 2015-12-06 17:03:03 | 0 | true | false | 0x2062a3d | AgentTest | printUser |
    ±---------±-----------±---------------------±-----------±---------±---------±----------------±-------------------------------±-------------------------------+
    Affect(row-cnt:10) cost in 3 ms.
    ga?>
    我需要篩選出printAddress方法的調用信息

    ga?>tt -s method.name==“printAddress”
    ±---------±-----------±---------------------±-----------±---------±---------±----------------±-------------------------------±-------------------------------+
    | INDEX | PROCESS-ID | TIMESTAMP | COST(ms) | IS-RET | IS-EXP | OBJECT | CLASS | METHOD |
    ±---------±-----------±---------------------±-----------±---------±---------±----------------±-------------------------------±-------------------------------+
    | 1049 | 1022 | 2015-12-06 17:03:01 | 1 | true | false | 0x2062a3d | AgentTest | printAddress |
    ±---------±-----------±---------------------±-----------±---------±---------±----------------±-------------------------------±-------------------------------+
    | 1052 | 1025 | 2015-12-06 17:03:02 | 1 | false | true | 0x2062a3d | AgentTest | printAddress |
    ±---------±-----------±---------------------±-----------±---------±---------±----------------±-------------------------------±-------------------------------+
    | 1055 | 1028 | 2015-12-06 17:03:03 | 0 | false | true | 0x2062a3d | AgentTest | printAddress |
    ±---------±-----------±---------------------±-----------±---------±---------±----------------±-------------------------------±-------------------------------+
    Affect(row-cnt:3) cost in 8 ms.
    ga?>
    你需要一個-s參數。同樣的,搜索表達式的核心對象依舊是Advice對象。

    查看調用信息

    對于具體一個時間片的信息而言,你可以通過-i參數后邊跟著對應的INDEX編號查看到他的詳細信息。

    ga?>tt -i 1055
    ±----------------±-------------------------------------------------------------------------------------------------------------------------------------------------------+
    | INDEX | 1055 |
    ±----------------±-------------------------------------------------------------------------------------------------------------------------------------------------------+
    | PROCESS-ID | 1028 |
    ±----------------±-------------------------------------------------------------------------------------------------------------------------------------------------------+
    | GMT-CREATE | 2015-12-06 17:03:03 |
    ±----------------±-------------------------------------------------------------------------------------------------------------------------------------------------------+
    | COST(ms) | 0 |
    ±----------------±-------------------------------------------------------------------------------------------------------------------------------------------------------+
    | OBJECT | 0x2062a3d |
    ±----------------±-------------------------------------------------------------------------------------------------------------------------------------------------------+
    | CLASS | com.alibaba.AgentTest |
    ±----------------±-------------------------------------------------------------------------------------------------------------------------------------------------------+
    | METHOD | printAddress |
    ±----------------±-------------------------------------------------------------------------------------------------------------------------------------------------------+
    | IS-RETURN | false |
    ±----------------±-------------------------------------------------------------------------------------------------------------------------------------------------------+
    | IS-EXCEPTION | true |
    ±----------------±-------------------------------------------------------------------------------------------------------------------------------------------------------+
    | PARAMETERS[0] | 3789 |
    ±----------------±-------------------------------------------------------------------------------------------------------------------------------------------------------+
    | THROW-EXCEPTION | com.alibaba.AddressException: java.lang.RuntimeException: test |
    | | at com.alibaba.manager.DefaultAddressManager.toStringPass1(DefaultAddressManager.java:22) |
    | | at com.alibaba.manager.DefaultAddressManager.toString(DefaultAddressManager.java:15) |
    | | at com.alibaba.AgentTest.printAddress(AgentTest.java:80) |
    | | at com.alibaba.AgentTest.access$300(AgentTest.java:7) |
    | | at com.alibaba.AgentTest$3.null(Unknown Source) |
    | | Caused by: java.lang.RuntimeException: test |
    | | at com.alibaba.manager.DefaultAddressManager.throwRuntimeException(DefaultAddressManager.java:39) |
    | | at com.alibaba.manager.DefaultAddressManager.toStringPass2(DefaultAddressManager.java:29) |
    | | at com.alibaba.manager.DefaultAddressManager.toStringPass1(DefaultAddressManager.java:20) |
    | | … 4 more |
    ±----------------±-------------------------------------------------------------------------------------------------------------------------------------------------------+
    | STACK | thread_name=“agent-test-address-printer” thread_id=0xb;is_daemon=false;priority=5; |
    | | @com.alibaba.AgentTest.access$300() |
    | | at com.alibaba.AgentTest$3.null(null:-1) |
    ±----------------±-------------------------------------------------------------------------------------------------------------------------------------------------------+
    Affect(row-cnt:1) cost in 7 ms.
    ga?>
    重做一次調用

    當你少少做了一些調整之后,你可能需要前端系統重新觸發一次你的調用,此時得求爺爺告奶奶的需要前端配合聯調的同學再次發起一次調用。而有些場景下,這個調用不是這么好觸發的。

    tt命令由于保存了當時調用的所有現場信息,所以我們可以自己主動對一個INDEX編號的時間片自主發起一次調用,從而解放你的溝通成本。此時你需要-p參數。

    ga?>tt -i 1055 -p
    ±----------------±-------------------------------------------------------------------------------------------------------------------------------------------------------+
    | INDEX | 1055 |
    ±----------------±-------------------------------------------------------------------------------------------------------------------------------------------------------+
    | PROCESS-ID | 1028 |
    ±----------------±-------------------------------------------------------------------------------------------------------------------------------------------------------+
    | GMT-CREATE | 2015-12-06 17:03:03 |
    ±----------------±-------------------------------------------------------------------------------------------------------------------------------------------------------+
    | COST(ms) | 1 |
    ±----------------±-------------------------------------------------------------------------------------------------------------------------------------------------------+
    | OBJECT | 0x2062a3d |
    ±----------------±-------------------------------------------------------------------------------------------------------------------------------------------------------+
    | CLASS | com.alibaba.AgentTest |
    ±----------------±-------------------------------------------------------------------------------------------------------------------------------------------------------+
    | METHOD | printAddress |
    ±----------------±-------------------------------------------------------------------------------------------------------------------------------------------------------+
    | IS-RETURN | true |
    ±----------------±-------------------------------------------------------------------------------------------------------------------------------------------------------+
    | IS-EXCEPTION | false |
    ±----------------±-------------------------------------------------------------------------------------------------------------------------------------------------------+
    | PARAMETERS[0] | 3789 |
    ±----------------±-------------------------------------------------------------------------------------------------------------------------------------------------------+
    | RETURN-OBJ | 1 |
    ±----------------±-------------------------------------------------------------------------------------------------------------------------------------------------------+
    | STACK | thread_name=“ga-command-execute-daemon” thread_id=0x22;is_daemon=true;priority=9; |
    | | @com.github.ompc.greys.core.command.TimeTunnelCommand$6.action() |
    | | at com.github.ompc.greys.core.server.DefaultCommandHandler.execute(DefaultCommandHandler.java:210) |
    | | at com.github.ompc.greys.core.server.DefaultCommandHandler.executeCommand(DefaultCommandHandler.java:87) |
    | | at com.github.ompc.greys.core.server.GaServer 4. r u n ( G a S e r v e r . j a v a : 332 ) ∣ ∣ ∣ a t j a v a . u t i l . c o n c u r r e n t . T h r e a d P o o l E x e c u t o r . r u n W o r k e r ( T h r e a d P o o l E x e c u t o r . j a v a : 1142 ) ∣ ∣ ∣ a t j a v a . u t i l . c o n c u r r e n t . T h r e a d P o o l E x e c u t o r 4.run(GaServer.java:332) | | | at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) | | | at java.util.concurrent.ThreadPoolExecutor 4.run(GaServer.java:332)atjava.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)atjava.util.concurrent.ThreadPoolExecutorWorker.run(ThreadPoolExecutor.java:617) |
    | | at java.lang.Thread.run(Thread.java:745) |
    ±----------------±-------------------------------------------------------------------------------------------------------------------------------------------------------+
    Time fragment[1055] successfully replayed.
    Affect(row-cnt:1) cost in 2 ms.
    ga?>
    你會發現結果雖然一樣,但調用的路徑發生了變化,有原來的程序發起變成了greys自己的內部線程發起的調用了。

    得益于Greys的ClassLoader隔離策略,Greys在內部自己發起線程請求調用的時候,依然采用的是目標類所歸屬的ClassLoader,所以在OSGI、Tomcat容器等場景下,Greys依然能正確的重做此次調用。

    需要強調的點

    ThreadLocal信息丟失

    很多框架偷偷的將一些環境變量信息塞到了發起調用線程的ThreadLocal中,由于調用線程發生了變化,這些ThreadLocal線程信息無法通過greys保存,所以這些信息將會丟失。

    一些常見的CASE比如:阿里鷹眼系統的TraceId、阿里全鏈路平臺的壓測流量標記位。

    引用的對象

    需要強調的是,tt命令是將當前環境的對象引用保存起來,但僅僅也只能保存一個引用而已。如果方法內部對入參進行了變更,或者返回的對象經過了后續的處理,那么在tt查看的時候將無法看到當時最準確的值。這也是為什么watch命令存在的意義。

    stack命令
    很多時候我們都知道一個方法被執行,但這個方法被執行的路徑非常多。或者你根本就不知道這個方法是從那里被執行了,正在郁悶,正在彷徨。此時你需要的是stack命令。

    參數說明

    參數名稱 參數說明
    class-pattern 類名表達式匹配
    method-pattern 方法名表達式匹配
    condition-express 條件表達式
    [n:] 命令執行次數
    [E] 支持正則表達式匹配
    使用例子

    ga?>stack com.alibaba.manager.DefaultAddressManager newAddress Press Ctrl+D to abort. Affect(class-cnt:1 , method-cnt:1) cost in 36 ms. thread_name="agent-test-address-printer" thread_id=0xb;is_daemon=false;priority=5;@java.lang.reflect.Method.invoke()at com.alibaba.manager.DefaultAddressManager.newAddress(DefaultAddressManager.java:-1)at com.alibaba.AgentTest.printAddress(AgentTest.java:73)at com.alibaba.AgentTest.access$300(AgentTest.java:7)at com.alibaba.AgentTest$3.null(null:-1)

    js命令
    js命令幾經波折,幾乎在兩個重要版本中絕跡,所以我不得不先介紹這個命令的歷史背景。

    在GREYS的1.5版本時代,字節碼增強使用的是javassist進行,里面的黑盒嚴重,我比較難介入和調試其中的字節碼生成過程。在這種情況下我們發現了一個JavaScript引擎rhino與Javassist結合存在嚴重漏洞的問題卻沒有更多調試的手段。

    考慮到性能、后續擴展的發展,GREYS從1.6開始替換成asm,之后我擁有了最精細的字節碼控制權限。在1.7.4.0版本中我恢復了GREYS對JavaScript的支持,并通過了之前BUG的測試。一切正常。

    現有的GREYS命令不能完全滿足所有人的需求,有一些需要根據業務場景進行個性化處理的場景,現有的GREYS命令就比較難支持了。

    比如我需要查看目標JVM中所有SQL的執行情況,因為java.sql.PreparedStatement在不同的JDBC協議實現下,存儲的原生SQL獲取的方式也不盡相同,JDBC規范中并未提供標準的API獲取原生的SQL。這個時候需要對原生SQL進行統計就必須進行個性化開發。

    參數說明

    參數名稱 參數說明
    [c:] 指定腳本字符編碼
    [E] 支持正則表達式匹配
    class-pattern 類名表達式匹配
    method-pattern 方法名表達式匹配
    script-path 腳本存放位置,支持HTTP/HTTPS
    使用例子

    運行第一個JavaScript

    目標

    我們編寫一個watch.js腳本,這個腳本的主要是在方法運行之前輸出方法的大概信息。類似于

    watch -b Test print clazz.name+"."+method.name+"()"
    步驟

    首先我們先生成一個腳本文件

    touch /tmp/watch.js
    然后往里面寫入以下內容

    require([‘greys’], function (greys) {
    greys.watching({

    before: function (o, a) {o.println(a.clazz.name+"."+a.method.name+"()");},});

    })
    接下來啟動GREYS之行命令運行

    js Test print /tmp/watch.js
    執行效果

    ga?>js Test print /tmp/watch.js
    Press Ctrl+D to abort.
    Affect(class-cnt:1 , method-cnt:2) cost in 35 ms.
    com.alibaba.AgentTest.printAddress()
    com.alibaba.AgentTest.printUser()
    com.alibaba.AgentTest.printAddress()
    com.alibaba.AgentTest.printUser()
    com.alibaba.AgentTest.printUser()
    com.alibaba.AgentTest.printAddress()
    運行一個遠程的JavaScript

    除了本地臨時寫代碼之外,你也可以將平時積累好的腳本代碼放在遠程服務端(比如Github),可以使用遠程加載的方式運行。

    我在Github上提前準備了一個watch.js文件,內容和原來差不多

    執行命令

    js Test print https://raw.githubusercontent.com/oldmanpushcart/images/master/greys/watch.js
    執行效果

    ga?>js Test print https://raw.githubusercontent.com/oldmanpushcart/images/master/greys/watch.js
    Press Ctrl+D to abort.
    Affect(class-cnt:1 , method-cnt:2) cost in 43 ms.
    call from remote script: com.alibaba.AgentTest.printUser()
    call from remote script: com.alibaba.AgentTest.printAddress()
    call from remote script: com.alibaba.AgentTest.printUser()
    call from remote script: com.alibaba.AgentTest.printAddress()
    更詳細的命令幫助可以見JavaScriptSupport

    version命令
    這估計是最好理解的一個命令了,輸出當前Greys的版本號,這里輸出的版本號不是Client的版本,而是當前加載到目標Java進程中的Greys版本。

    quit命令
    這里說明下與shutdown命令的區別,quit命令僅僅是將客戶端關閉,而不會將目標Java進程中的與Greys的Server關閉。所以如果僅僅是希望簡單的退出Greys控制臺,則使用quit命令足矣。

    一旦Greys控制臺退出,控制臺所綁定的Session將會被關閉,Session上所有存活的事務也都會被中止并釋放。

    shutdown命令
    命令執行后將會完成兩件事:

    關閉Greys在目標Java所加載的Socket服務,所占用的端口將會被釋放,同時,本地的Greys控制臺也因為遠程Socket關閉而主動退出。

    重置所有被Greys所增強的類。同reset命令。

    reset命令
    重置指定被Greys所增強的類。

    session命令
    會話命令是在1.6版本之后新增,整個命令的定位是維護好會話級的參數。目前可修改的就一個字符集。

    參數說明

    參數名稱 參數說明
    [c:] 指定會話字符集
    使用例子

    直接查看會話信息

    ga?>session
    ±-----------±-----------------+
    | JAVA_PID | 8609 |
    ±-----------±-----------------+
    | SESSION_ID | 2 |
    ±-----------±-----------------+
    | DURATION | 300000 |
    ±-----------±-----------------+
    | CHARSET | UTF-8 |
    ±-----------±-----------------+
    | PROMPT | ga?> |
    ±-----------±-----------------+
    | FROM | /127.0.0.1:58186 |
    ±-----------±-----------------+
    | TO | /127.0.0.1:3658 |
    ±-----------±-----------------+
    Affect(row-cnt:1) cost in 0 ms.
    ga?>
    修改字符集

    ga?>session -c GBK
    change charset before[UTF-8] -> new[GBK]
    Affect(row-cnt:1) cost in 26 ms.
    jvm命令
    查看當前JVM的信息,無參數。

    ga?>jvm
    ±-------------------±----------------------------------------------------------------------------------------------------+
    | CATEGORY | INFO |
    ±-------------------±----------------------------------------------------------------------------------------------------+
    | RUNTIME | MACHINE-NAME : 25428@vlinux-air.local |
    | | JVM-START-TIME : 2015-06-16 22:12:20 |
    | | MANAGEMENT-SPEC-VERSION : 1.2 |
    | | SPEC-NAME : Java Virtual Machine Specification |
    | | SPEC-VENDOR : Oracle Corporation |
    | | SPEC-VERSION : 1.8 |
    | | VM-NAME : Java HotSpot? 64-Bit Server VM |
    | | VM-VENDOR : Oracle Corporation |
    | | VM-VERSION : 25.25-b02 |
    | | INPUT-ARGUMENTS : [] |
    | | CLASS-PATH : . |
    | | BOOT-CLASS-PATH : /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/li |
    | | b/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Conte |
    | | nts/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_25.j |
    | | dk/Contents/Home/jre/lib/sunrsasign.jar:/Library/Java/JavaVirtualMachin |
    | | es/jdk1.8.0_25.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVir |
    | | tualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/jce.jar:/Library/Jav |
    | | a/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/charsets.ja |
    | | r:/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/l |
    | | ib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/H |
    | | ome/jre/classes |
    | | LIBRARY-PATH : /Users/vlinux/Library/Java/Extensions:/Library/Java/Extensions:/Networ |
    | | k/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java |
    | | :. |
    ±-------------------±----------------------------------------------------------------------------------------------------+
    | CLASS-LOADING | LOADED-CLASS-COUNT : 3045 |
    | | TOTAL-LOADED-CLASS-COUNT : 3045 |
    | | UNLOADED-CLASS-COUNT : 0 |
    | | IS-VERBOSE : false |
    ±-------------------±----------------------------------------------------------------------------------------------------+
    | COMPILATION | NAME : HotSpot 64-Bit Tiered Compilers |
    | | TOTAL-COMPILE-TIME : 8903(ms) |
    ±-------------------±----------------------------------------------------------------------------------------------------+
    | GARBAGE-COLLECTORS | PS Scavenge : 4/40(ms) |
    | | [count/time] |
    | | PS MarkSweep : 0/0(ms) |
    | | [count/time] |
    ±-------------------±----------------------------------------------------------------------------------------------------+
    | MEMORY-MANAGERS | CodeCacheManager : Code Cache |
    | | Metaspace Manager : Metaspace |
    | | Compressed Class Space |
    | | PS Scavenge : PS Eden Space |
    | | PS Survivor Space |
    | | PS MarkSweep : PS Eden Space |
    | | PS Survivor Space |
    | | PS Old Gen |
    ±-------------------±----------------------------------------------------------------------------------------------------+
    | MEMORY | HEAP-MEMORY-USAGE : 163053568/134217728/1908932608/54796080 |
    | | [committed/init/max/used] |
    | | NO-HEAP-MEMORY-USAGE : 32571392/2555904/-1/31757608 |
    | | [committed/init/max/used] |
    | | PENDING-FINALIZE-COUNT : 0 |
    ±-------------------±----------------------------------------------------------------------------------------------------+
    | OPERATING-SYSTEM | OS : Mac OS X |
    | | ARCH : x86_64 |
    | | PROCESSORS-COUNT : 4 |
    | | LOAD-AVERAGE : 2.50634765625 |
    | | VERSION : 10.10.3 |
    ±-------------------±----------------------------------------------------------------------------------------------------+
    | THREAD | COUNT : 8 |
    | | DAEMON-COUNT : 7 |
    | | LIVE-COUNT : 9 |
    | | STARTED-COUNT : 19 |
    ±-------------------±----------------------------------------------------------------------------------------------------+
    Affect cost in 22 ms.
    常見問題答疑
    安裝問題
    安裝失敗

    $:>curl -sLk http://ompc.oss.aliyuncs.com/greys/install.sh|ksh
    downloading… greys.zip.43678
    download file failed!
    問:

    為什么我在安裝Greys的時候失敗了?

    答:

    Greys的安裝腳本首先先從阿里云上下載greys.zip,然后進行解壓、安裝。所以必須要求執行安裝腳本的用戶必須有對當前目錄的寫權限,一般出現這個問題,可以檢查網絡、磁盤空間以及當前目錄是否有寫權限。

    安裝目錄

    問:

    如果我在/tmp/目錄下執行安裝腳本,請問Greys會怎么安裝?

    答:

    安裝在/tmp/greys/目錄下,該目錄下一共有三個重要文件

    /tmp/greys/greys-agent.jar
    /tmp/greys/greys-core.jar
    /tmp/greys/greys.sh
    其中greys-core.jar為greys的程序主體,啟動類、加載類都在這個jar包當中;greys-agent.jar則為目標JVM的加載引導程序;greys.sh為一個可執行腳本,為Greys的啟動腳本。

    如何刪除

    問:

    安裝的Greys如何進行刪除?

    答:

    Greys是一個綠色環保軟件,不會修改你的注冊表,但會在 H O M E 目 錄 下 創 建 隱 藏 目 錄 HOME目錄下創建隱藏目錄 HOMEHOME/.greys,用于保存不同的版本和Jline的歷史命令,你可以直接刪除。

    啟動問題
    啟動報Operation not permitted錯誤

    問:

    我在啟動Greys的時候報這樣的錯誤

    $:> ./greys.sh 11064
    start greys failed, because : Operation not permitted
    答:

    Greys要求執行執行啟動命令的用戶必須擁有和目標進程ID同樣的權限(在這個Case中,目標進程ID為11064),否則JVM將無法掛載Greys對應的jar包

    啟動報No such process錯誤

    問:

    我在啟動Greys的時候報這樣的錯誤

    $:> ./greys.sh 11063
    start greys failed, because : No such process
    答:

    目標進程ID不存在。報這樣的錯誤,請核對你的目標進程是否存在。

    啟動報Unable to open socket file: target process not responding or HotSpot VM not loaded

    問:

    我在啟動Greys的時候報這樣的錯誤

    $:> sudo -u admin ./greys.sh 12592
    密碼:
    start greys failed, because : Unable to open socket file: target process not responding or HotSpot VM not loaded
    答:

    目標進程ID不是JVM進程,或目標JVM進程不支持加載操作,比如低于JDK6的版本等。 一般遇到這種問題一定要非常小心謹慎的執行,如果對方進程編程不嚴謹,很可能會讓對方進程CORE掉。上次我就弄死了個nginx的worker -_-!!

    啟動沒有響應

    問:

    啟動之后就什么反應也沒有,也沒有出現預期的ga?>提示符

    答:

    很有可能你的3658端口已經被別的進程占據,請核對你當前機器所開的端口

    netstat -anp|grep LIST
    解決方案也很簡單,換個端口

    ./greys.sh 4567@127.0.0.1:6666
    sudo -u方式啟動報權限不足

    請給你的sudo命令加上-H參數

    sudo -u admin -H ./greys.sh 4567
    使用問題
    哪些命令會導致性能問題

    Greys的大部分命令性能開銷都非常低廉,當然前提是一次性操作的類不要太多。

    是否能增強由BootstrapClassLoader所加載的類

    當然是可以的,但默認我封印了這個能力。主要是Greys自己也使用了大量BootstrapClassLoader所加載的類,如果處理不好極其容易造成故障。

    你可以通過隱藏命令options激活這個功能

    ga?>options unsafe true

    ±-------±-------------±------------+
    | NAME | BEFORE-VALUE | AFTER-VALUE |
    ±-------±-------------±------------+
    | unsafe | false | true |
    ±-------±-------------±------------+
    Affect(row-cnt:1) cost in 2 ms.
    接下來你可以嘗試增強系統類了

    ga?>monitor -c 5 java.lang.String substring Press Ctrl+D or Ctrl+X to abort. Affect(class-cnt:1 , method-cnt:2) cost in 35 ms.

    ±--------------------±-----------------±----------±------±--------±-----±-----±----------+
    | timestamp | class | method | total | success | fail | rt | fail-rate |
    ±--------------------±-----------------±----------±------±--------±-----±-----±----------+
    | 2015-06-16 23:44:54 | java.lang.String | substring | 30 | 30 | 0 | 0.23 | 0.00% |
    ±--------------------±-----------------±----------±------±--------±-----±-----±----------+
    但我話就放在這里,隨意增強系統類。后果自負!

    其他問題
    Greys支持將信息輸出到文件中么?

    支持,不過要做一些小命令。

    ./greys.sh 4567|tee -a ./greys.log
    Greys能使用在Sun JDK5的版本么?

    很遺憾抱歉的說,不行。

    Greys的原理和Btrace一樣,依賴了JDK6+提供的Instumentation特性,所以必須要求目標的JDK環境是JDK6及其以上的版本。

    理論上Greys應該能在各種實現了SUN標準的各種JVM實現中運行,比如JRockit、Zing等,但我自己沒有機會嘗試,若有朋友能提供環境能進行測試并反饋,我將不勝感激。

    JRE中由于缺少tools.jar,所以無法直接運行Greys,需要稍作一些修改。同樣的也沒有需求要在JRE中運行Greys,我這里也偷個懶,留給其他有需要的人來實現吧。

    程序中是否有彩蛋?

    有,我當初做這個軟件的唯一目的就是希望能快速定位問題,然后好陪她逛街。為了不忘記這個初心,我將這位她的英文名作為命令整合到了Greys中,可以嘗試找找!

    版本管理

    多版本管理

    從1.7.x.x版本開始,greys.sh腳本支持自動更新,在網絡允許的情況下會自動監測遠程服務器上是否存在可升級的最新版本。

    若網絡不可達(網絡隔離的環境)則需要進行本地安裝。本地安裝也一樣會納入到多版本管理識別范圍。

    大版本兼容性問題

    大版本之間不做任何兼容性保障,比如1.7.x.x版本的客戶端不保證能訪問1.6.x.x啟動的服務端。

    版本號說明
    主版本.大版本.小版本.漏洞修復

    主版本

    這個版本更新說明程序架構體系進行了重大升級,比如之前的0.1版升級到1.0版本,整個軟件的架構從單機版升級到了SOCKET多機版。并將Greys的性質進行的確定:Java版的HouseMD,但要比前輩們更強。

    大版本

    程序的架構設計進行重大改造,但不影響用戶對這款軟件的定位。

    小版本

    增加新的命令和功能

    漏洞修復

    對現有版本進行漏洞修復和增強

    版本升級說明

    主版本、大版本之間不做任何向下兼容的承諾。即0.1版本的Client不保證一定能正常訪問1.0版本的Server。
    小版本不兼容的功能會在版本升級中指出
    漏洞修復保證所有功能向下兼容

    心路感悟

    多年的問題排查經驗我沒有過多的分享,一個Java程序員個中的苦悶也無從分享,一切我都融入到了這款軟件的命令中,希望這些沉淀能幫助到可能需要到的你少走一些彎路,同時我也非常期待你們對她的反饋,這樣我將感到非常開心和有成就感。

    總結

    以上是生活随笔為你收集整理的greys在线问题诊断工具的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    欧美人与牲动交xxxx | 美女黄网站人色视频免费国产 | 亚洲欧美综合区丁香五月小说 | 免费中文字幕日韩欧美 | 偷窥日本少妇撒尿chinese | 欧美日韩一区二区综合 | 成熟妇人a片免费看网站 | 国产手机在线αⅴ片无码观看 | 老司机亚洲精品影院 | 国产精品久久久一区二区三区 | 一个人看的www免费视频在线观看 | 久久亚洲中文字幕无码 | 丰满诱人的人妻3 | 中文字幕乱码中文乱码51精品 | 日本www一道久久久免费榴莲 | 精品国产一区二区三区四区在线看 | 成人无码精品1区2区3区免费看 | 精品无码国产一区二区三区av | 精品久久久中文字幕人妻 | 色爱情人网站 | 国产午夜视频在线观看 | 东京热无码av男人的天堂 | 国产成人无码午夜视频在线观看 | 日本成熟视频免费视频 | 精品久久久无码中文字幕 | 一本色道婷婷久久欧美 | 精品无码国产一区二区三区av | 在线观看国产一区二区三区 | 亚洲乱亚洲乱妇50p | 国产在线无码精品电影网 | 色婷婷av一区二区三区之红樱桃 | 理论片87福利理论电影 | 国产亚av手机在线观看 | 精品国产一区二区三区四区 | 在线亚洲高清揄拍自拍一品区 | 午夜肉伦伦影院 | 国产suv精品一区二区五 | 国产人妖乱国产精品人妖 | 欧美日韩综合一区二区三区 | 国产精品igao视频网 | 波多野结衣高清一区二区三区 | 国产网红无码精品视频 | 亚洲精品成人av在线 | 熟妇人妻无乱码中文字幕 | 波多野结衣 黑人 | aⅴ亚洲 日韩 色 图网站 播放 | 成人综合网亚洲伊人 | 国内少妇偷人精品视频 | 国产欧美精品一区二区三区 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 亚洲日韩av一区二区三区中文 | 55夜色66夜色国产精品视频 | 精品无码成人片一区二区98 | 扒开双腿疯狂进出爽爽爽视频 | 中文字幕无码日韩欧毛 | 中国女人内谢69xxxxxa片 | 青青草原综合久久大伊人精品 | 蜜桃臀无码内射一区二区三区 | 欧美熟妇另类久久久久久多毛 | 中文字幕无码av波多野吉衣 | 欧美日本精品一区二区三区 | 精品无码国产一区二区三区av | 亚洲啪av永久无码精品放毛片 | 日产精品99久久久久久 | 色综合久久久久综合一本到桃花网 | 亚洲日韩av片在线观看 | 欧美高清在线精品一区 | 亚洲另类伦春色综合小说 | 国产精品亚洲а∨无码播放麻豆 | 成人精品视频一区二区三区尤物 | 久久国产精品_国产精品 | 日本成熟视频免费视频 | 夫妻免费无码v看片 | 久久亚洲中文字幕无码 | 国产激情无码一区二区 | 东京无码熟妇人妻av在线网址 | 日本va欧美va欧美va精品 | 熟妇人妻无乱码中文字幕 | 亚洲欧洲无卡二区视頻 | 国产va免费精品观看 | 美女极度色诱视频国产 | 久久精品中文闷骚内射 | 亚洲乱码中文字幕在线 | 亚洲天堂2017无码 | 欧美熟妇另类久久久久久不卡 | 婷婷五月综合激情中文字幕 | 人人妻人人澡人人爽欧美一区九九 | 1000部夫妻午夜免费 | 欧美人与动性行为视频 | 成人片黄网站色大片免费观看 | 无码人妻精品一区二区三区不卡 | 99久久亚洲精品无码毛片 | 老熟女乱子伦 | 久久综合九色综合欧美狠狠 | а√天堂www在线天堂小说 | 国产精品久久久久久久9999 | √8天堂资源地址中文在线 | 精品人妻人人做人人爽夜夜爽 | 亚洲精品久久久久中文第一幕 | 日本欧美一区二区三区乱码 | 窝窝午夜理论片影院 | 久久aⅴ免费观看 | 999久久久国产精品消防器材 | 日韩无套无码精品 | 日本护士毛茸茸高潮 | 在线欧美精品一区二区三区 | 色婷婷香蕉在线一区二区 | 好屌草这里只有精品 | 国产精品免费大片 | 无套内谢的新婚少妇国语播放 | 亚洲日韩av片在线观看 | 久久精品国产99精品亚洲 | 纯爱无遮挡h肉动漫在线播放 | 色窝窝无码一区二区三区色欲 | 日韩人妻少妇一区二区三区 | 丰满人妻精品国产99aⅴ | 日本熟妇乱子伦xxxx | 久久午夜无码鲁丝片秋霞 | 骚片av蜜桃精品一区 | 熟女少妇在线视频播放 | 久久www免费人成人片 | 天天摸天天透天天添 | 天下第一社区视频www日本 | 久久综合九色综合欧美狠狠 | 久久精品无码一区二区三区 | 国产一区二区三区四区五区加勒比 | 六十路熟妇乱子伦 | 精品日本一区二区三区在线观看 | 国产性生交xxxxx无码 | 婷婷丁香六月激情综合啪 | 成人无码精品一区二区三区 | 男女超爽视频免费播放 | 国模大胆一区二区三区 | 性欧美大战久久久久久久 | 久久99精品国产麻豆蜜芽 | 东京无码熟妇人妻av在线网址 | 无码午夜成人1000部免费视频 | 红桃av一区二区三区在线无码av | 亚洲色欲色欲天天天www | 亚洲色大成网站www国产 | 久久视频在线观看精品 | v一区无码内射国产 | 久久 国产 尿 小便 嘘嘘 | 国产性生交xxxxx无码 | 蜜臀av在线播放 久久综合激激的五月天 | 久久精品国产日本波多野结衣 | 国产卡一卡二卡三 | 国产真人无遮挡作爱免费视频 | 亚洲精品鲁一鲁一区二区三区 | 国产精品对白交换视频 | 色综合久久久无码中文字幕 | 国产综合色产在线精品 | 久久午夜无码鲁丝片 | 成人性做爰aaa片免费看不忠 | 免费无码一区二区三区蜜桃大 | 国产乡下妇女做爰 | 丰腴饱满的极品熟妇 | 久久精品一区二区三区四区 | 牛和人交xxxx欧美 | 日本免费一区二区三区最新 | 亚洲va中文字幕无码久久不卡 | 欧美猛少妇色xxxxx | 精品水蜜桃久久久久久久 | 亚洲gv猛男gv无码男同 | 4hu四虎永久在线观看 | 窝窝午夜理论片影院 | 88国产精品欧美一区二区三区 | 全黄性性激高免费视频 | 成熟妇人a片免费看网站 | 国产精品99爱免费视频 | 天天躁夜夜躁狠狠是什么心态 | 国产av久久久久精东av | 国产精品亚洲专区无码不卡 | 久久精品成人欧美大片 | 欧美zoozzooz性欧美 | 人人妻人人澡人人爽人人精品浪潮 | 亚洲综合色区中文字幕 | 中文字幕无码日韩欧毛 | 午夜精品一区二区三区的区别 | 1000部啪啪未满十八勿入下载 | 免费男性肉肉影院 | 亚洲中文字幕va福利 | 国产情侣作爱视频免费观看 | 双乳奶水饱满少妇呻吟 | av人摸人人人澡人人超碰下载 | 国产成人一区二区三区别 | 无码av岛国片在线播放 | 97精品人妻一区二区三区香蕉 | 自拍偷自拍亚洲精品10p | 欧美一区二区三区视频在线观看 | 亚洲精品国偷拍自产在线观看蜜桃 | 亚洲乱亚洲乱妇50p | 夜先锋av资源网站 | 国产精品高潮呻吟av久久 | 成人免费无码大片a毛片 | 亚洲大尺度无码无码专区 | 亚洲成色www久久网站 | 亚洲精品国产a久久久久久 | 国产亚洲精品久久久久久 | 国产乱人伦av在线无码 | 国产精品二区一区二区aⅴ污介绍 | 大色综合色综合网站 | 小sao货水好多真紧h无码视频 | 在线a亚洲视频播放在线观看 | 97久久国产亚洲精品超碰热 | 国内丰满熟女出轨videos | 丰满岳乱妇在线观看中字无码 | 丁香花在线影院观看在线播放 | 夜精品a片一区二区三区无码白浆 | 国产无遮挡又黄又爽又色 | 亚洲成a人片在线观看日本 | 少妇性l交大片欧洲热妇乱xxx | 波多野结衣av在线观看 | 日本一卡二卡不卡视频查询 | 亚洲精品成a人在线观看 | 久久精品一区二区三区四区 | 黑人大群体交免费视频 | 久久97精品久久久久久久不卡 | 国产乱子伦视频在线播放 | 亚洲热妇无码av在线播放 | 久久久无码中文字幕久... | 欧美 日韩 亚洲 在线 | 狠狠噜狠狠狠狠丁香五月 | 国产精品美女久久久网av | 亚洲呦女专区 | 久在线观看福利视频 | 亚洲成熟女人毛毛耸耸多 | 色诱久久久久综合网ywww | 日日天干夜夜狠狠爱 | 色综合久久久无码网中文 | 日日麻批免费40分钟无码 | 无码毛片视频一区二区本码 | 久久久久久久久蜜桃 | 丰满肥臀大屁股熟妇激情视频 | 撕开奶罩揉吮奶头视频 | 无码免费一区二区三区 | 日韩 欧美 动漫 国产 制服 | 国产精品久久精品三级 | 麻豆成人精品国产免费 | 性欧美videos高清精品 | 九九久久精品国产免费看小说 | 乱人伦中文视频在线观看 | 久久精品人人做人人综合 | 亚洲精品一区二区三区婷婷月 | 久久久久se色偷偷亚洲精品av | av在线亚洲欧洲日产一区二区 | 亚洲中文字幕av在天堂 | 国产精品美女久久久久av爽李琼 | 岛国片人妻三上悠亚 | 国产电影无码午夜在线播放 | 亚洲国产精品无码久久久久高潮 | 真人与拘做受免费视频一 | 欧美性猛交xxxx富婆 | 久久精品成人欧美大片 | 亚洲一区二区观看播放 | √天堂中文官网8在线 | 伦伦影院午夜理论片 | 无码福利日韩神码福利片 | 窝窝午夜理论片影院 | 最近中文2019字幕第二页 | 学生妹亚洲一区二区 | 帮老师解开蕾丝奶罩吸乳网站 | 精品久久久久久人妻无码中文字幕 | 真人与拘做受免费视频 | 欧美日韩亚洲国产精品 | 伊人久久大香线蕉av一区二区 | 国产成人综合色在线观看网站 | 亚洲一区二区三区在线观看网站 | 俺去俺来也www色官网 | 中文字幕无码乱人伦 | 亚洲精品中文字幕久久久久 | 亚洲天堂2017无码中文 | 久久久精品国产sm最大网站 | 中文字幕久久久久人妻 | 亚洲а∨天堂久久精品2021 | 女人被男人躁得好爽免费视频 | 国产精品无码一区二区桃花视频 | 精品少妇爆乳无码av无码专区 | 精品国产一区二区三区四区 | 麻豆md0077饥渴少妇 | 国产美女极度色诱视频www | 亚洲中文字幕无码中文字在线 | 好男人www社区 | 精品国产乱码久久久久乱码 | 亚洲精品综合一区二区三区在线 | 51国偷自产一区二区三区 | 色一情一乱一伦一视频免费看 | 99久久婷婷国产综合精品青草免费 | 亚洲成色www久久网站 | 午夜丰满少妇性开放视频 | 精品久久久久久人妻无码中文字幕 | 77777熟女视频在线观看 а天堂中文在线官网 | 人妻夜夜爽天天爽三区 | 婷婷丁香六月激情综合啪 | 乱中年女人伦av三区 | 香港三级日本三级妇三级 | 波多野结衣av一区二区全免费观看 | 扒开双腿疯狂进出爽爽爽视频 | 97夜夜澡人人爽人人喊中国片 | 小鲜肉自慰网站xnxx | 精品国产一区二区三区四区 | 丰满人妻精品国产99aⅴ | 日韩精品乱码av一区二区 | 成人免费视频视频在线观看 免费 | 少妇无套内谢久久久久 | 伊人久久大香线焦av综合影院 | 亚洲一区av无码专区在线观看 | 亚洲中文字幕在线无码一区二区 | 无码av中文字幕免费放 | 国产内射爽爽大片视频社区在线 | 亚洲人亚洲人成电影网站色 | 天堂一区人妻无码 | 久久国产精品偷任你爽任你 | 久久亚洲中文字幕精品一区 | 性欧美疯狂xxxxbbbb | 毛片内射-百度 | 久久综合狠狠综合久久综合88 | 无套内谢的新婚少妇国语播放 | 秋霞成人午夜鲁丝一区二区三区 | 亚洲欧美综合区丁香五月小说 | 亚洲色欲色欲天天天www | 日本护士xxxxhd少妇 | 精品久久综合1区2区3区激情 | a在线观看免费网站大全 | 亚洲小说春色综合另类 | 伊在人天堂亚洲香蕉精品区 | 人妻天天爽夜夜爽一区二区 | 色噜噜亚洲男人的天堂 | 欧美性猛交内射兽交老熟妇 | 搡女人真爽免费视频大全 | 在线播放无码字幕亚洲 | 精品无码一区二区三区爱欲 | 国产精品久久久久久久9999 | 欧洲vodafone精品性 | 波多野结衣 黑人 | 一本久久a久久精品亚洲 | 久久国产精品_国产精品 | 国产成人亚洲综合无码 | 又湿又紧又大又爽a视频国产 | 精品国偷自产在线 | 丰满少妇女裸体bbw | 午夜精品一区二区三区在线观看 | 人妻无码αv中文字幕久久琪琪布 | 日本一区二区更新不卡 | 日韩视频 中文字幕 视频一区 | 精品国产麻豆免费人成网站 | 真人与拘做受免费视频一 | 蜜臀av在线播放 久久综合激激的五月天 | 国产肉丝袜在线观看 | 强伦人妻一区二区三区视频18 | 国产又粗又硬又大爽黄老大爷视 | 午夜无码人妻av大片色欲 | 蜜桃无码一区二区三区 | 国产三级久久久精品麻豆三级 | 亚洲人成网站在线播放942 | 成人无码精品1区2区3区免费看 | 国内精品人妻无码久久久影院 | 国内揄拍国内精品人妻 | 亚洲精品一区三区三区在线观看 | 兔费看少妇性l交大片免费 | 老熟女乱子伦 | 水蜜桃色314在线观看 | 丰满人妻一区二区三区免费视频 | 欧美人与善在线com | 免费看男女做好爽好硬视频 | 三级4级全黄60分钟 | 无码精品人妻一区二区三区av | 强伦人妻一区二区三区视频18 | 四虎影视成人永久免费观看视频 | 久久亚洲精品成人无码 | 香蕉久久久久久av成人 | 国产亚洲精品久久久久久久久动漫 | 日本丰满护士爆乳xxxx | 国产激情无码一区二区app | 日本乱人伦片中文三区 | 久久综合激激的五月天 | 久久国产劲爆∧v内射 | 丝袜足控一区二区三区 | 精品国偷自产在线视频 | 亚洲综合无码一区二区三区 | 麻豆精产国品 | 亚洲狠狠婷婷综合久久 | 久久精品人人做人人综合 | 蜜桃av抽搐高潮一区二区 | 精品久久久久久人妻无码中文字幕 | 女人被男人爽到呻吟的视频 | 香蕉久久久久久av成人 | 无码免费一区二区三区 | 国产精品美女久久久网av | 日本熟妇乱子伦xxxx | 亚洲熟妇自偷自拍另类 | 中文字幕无线码免费人妻 | 国产肉丝袜在线观看 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 精品国产一区二区三区av 性色 | 精品偷自拍另类在线观看 | 成熟人妻av无码专区 | 国产熟妇另类久久久久 | 台湾无码一区二区 | 亚洲性无码av中文字幕 | 亚洲精品一区二区三区在线 | 亚洲色大成网站www国产 | 国产亚洲日韩欧美另类第八页 | 在教室伦流澡到高潮hnp视频 | 巨爆乳无码视频在线观看 | 久久精品国产99精品亚洲 | 露脸叫床粗话东北少妇 | 日日夜夜撸啊撸 | 欧美精品免费观看二区 | 欧美肥老太牲交大战 | 亚洲国产精品无码一区二区三区 | 人人爽人人爽人人片av亚洲 | 人妻互换免费中文字幕 | 少妇邻居内射在线 | 欧美精品在线观看 | 国产偷国产偷精品高清尤物 | 国内精品久久久久久中文字幕 | 国内精品一区二区三区不卡 | 亚洲国产成人a精品不卡在线 | 中文毛片无遮挡高清免费 | 国产人妻人伦精品1国产丝袜 | 精品乱码久久久久久久 | 精品国产国产综合精品 | 精品无人区无码乱码毛片国产 | 精品久久综合1区2区3区激情 | 老头边吃奶边弄进去呻吟 | 亚洲 a v无 码免 费 成 人 a v | 欧美日韩综合一区二区三区 | 中文字幕人妻无码一区二区三区 | 久久综合激激的五月天 | 精品国产精品久久一区免费式 | 国产午夜精品一区二区三区嫩草 | 天天综合网天天综合色 | 夜夜影院未满十八勿进 | 日韩成人一区二区三区在线观看 | 精品国产麻豆免费人成网站 | 国产无遮挡又黄又爽又色 | 色欲久久久天天天综合网精品 | 狠狠色噜噜狠狠狠狠7777米奇 | 少妇性l交大片欧洲热妇乱xxx | 久久午夜夜伦鲁鲁片无码免费 | 18精品久久久无码午夜福利 | av香港经典三级级 在线 | 国产激情艳情在线看视频 | 永久免费观看国产裸体美女 | 午夜成人1000部免费视频 | 国产精品99爱免费视频 | 成人av无码一区二区三区 | 国产成人精品三级麻豆 | 日韩 欧美 动漫 国产 制服 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 美女极度色诱视频国产 | 2019nv天堂香蕉在线观看 | 国产suv精品一区二区五 | yw尤物av无码国产在线观看 | 国产精品久久久久久无码 | 无码吃奶揉捏奶头高潮视频 | 1000部夫妻午夜免费 | 天堂а√在线地址中文在线 | 亚洲国产精品美女久久久久 | 精品久久久久久人妻无码中文字幕 | 夜夜影院未满十八勿进 | 国产真实乱对白精彩久久 | 亚洲一区av无码专区在线观看 | 一本久久a久久精品vr综合 | 国产午夜精品一区二区三区嫩草 | 国产人妻精品一区二区三区不卡 | 国产女主播喷水视频在线观看 | 国产超级va在线观看视频 | 亚洲色大成网站www国产 | 久久久久久a亚洲欧洲av冫 | 午夜不卡av免费 一本久久a久久精品vr综合 | 亚洲精品美女久久久久久久 | 乱码午夜-极国产极内射 | 亚洲人成网站在线播放942 | 久久伊人色av天堂九九小黄鸭 | 影音先锋中文字幕无码 | 亚洲va中文字幕无码久久不卡 | 成人片黄网站色大片免费观看 | 亚欧洲精品在线视频免费观看 | 麻豆精品国产精华精华液好用吗 | 国产亚洲精品久久久久久大师 | 国产精品嫩草久久久久 | 一本久道久久综合狠狠爱 | 丰满护士巨好爽好大乳 | 亚洲国精产品一二二线 | 国产免费久久精品国产传媒 | 玩弄人妻少妇500系列视频 | 亚洲国产综合无码一区 | 亚洲 欧美 激情 小说 另类 | 任你躁在线精品免费 | 99国产精品白浆在线观看免费 | 人人澡人人妻人人爽人人蜜桃 | 国产精品无码mv在线观看 | 色欲人妻aaaaaaa无码 | 97无码免费人妻超级碰碰夜夜 | 无码国内精品人妻少妇 | 亚洲爆乳精品无码一区二区三区 | 人妻天天爽夜夜爽一区二区 | 日韩av激情在线观看 | 成人精品一区二区三区中文字幕 | 亚洲色大成网站www | 人人爽人人爽人人片av亚洲 | 亚洲综合无码久久精品综合 | 97久久精品无码一区二区 | 黑人大群体交免费视频 | 国产sm调教视频在线观看 | 日本乱偷人妻中文字幕 | 蜜桃无码一区二区三区 | 欧美性黑人极品hd | 激情国产av做激情国产爱 | 日韩精品无码一区二区中文字幕 | 久久这里只有精品视频9 | 窝窝午夜理论片影院 | 欧美xxxxx精品 | 高清无码午夜福利视频 | 日本护士xxxxhd少妇 | 人妻天天爽夜夜爽一区二区 | 国产在热线精品视频 | 中文字幕无码日韩专区 | 人妻熟女一区 | 无码精品国产va在线观看dvd | 亚洲区欧美区综合区自拍区 | 亚洲精品一区二区三区在线观看 | 亚洲国产精华液网站w | 欧美日韩人成综合在线播放 | 人人妻人人澡人人爽人人精品浪潮 | 漂亮人妻洗澡被公强 日日躁 | 曰本女人与公拘交酡免费视频 | 国内精品久久久久久中文字幕 | 激情内射亚州一区二区三区爱妻 | 久久亚洲精品成人无码 | www国产亚洲精品久久久日本 | 国内少妇偷人精品视频免费 | 欧美日韩综合一区二区三区 | 色五月五月丁香亚洲综合网 | 亚洲国产av美女网站 | 国产精品久久久 | 狠狠噜狠狠狠狠丁香五月 | 东京无码熟妇人妻av在线网址 | 亚洲熟妇自偷自拍另类 | 久久婷婷五月综合色国产香蕉 | 精品久久久久香蕉网 | 国产极品视觉盛宴 | 欧美激情综合亚洲一二区 | 欧美猛少妇色xxxxx | 精品久久久久久亚洲精品 | 亚洲成av人片在线观看无码不卡 | 欧美人与牲动交xxxx | 疯狂三人交性欧美 | 国产午夜手机精彩视频 | 亚洲色在线无码国产精品不卡 | 久久伊人色av天堂九九小黄鸭 | 一本久久a久久精品vr综合 | 精品久久综合1区2区3区激情 | 久久视频在线观看精品 | 色婷婷香蕉在线一区二区 | 3d动漫精品啪啪一区二区中 | 成人试看120秒体验区 | 日日摸天天摸爽爽狠狠97 | 18禁止看的免费污网站 | 亚洲精品鲁一鲁一区二区三区 | 亚洲成av人综合在线观看 | 乱人伦中文视频在线观看 | 国产在热线精品视频 | 中国大陆精品视频xxxx | 中文无码伦av中文字幕 | 亚洲精品国产a久久久久久 | 图片小说视频一区二区 | 国产亚洲精品久久久闺蜜 | 久久久久久九九精品久 | 好爽又高潮了毛片免费下载 | 久久精品视频在线看15 | 欧美熟妇另类久久久久久不卡 | 亚洲综合伊人久久大杳蕉 | 精品一区二区三区无码免费视频 | 又大又黄又粗又爽的免费视频 | 欧美熟妇另类久久久久久多毛 | 日本在线高清不卡免费播放 | 成在人线av无码免观看麻豆 | 日本高清一区免费中文视频 | 亚洲中文字幕av在天堂 | 国内少妇偷人精品视频 | 97久久精品无码一区二区 | 久久久久99精品国产片 | 一本加勒比波多野结衣 | 久久久久久久女国产乱让韩 | 激情内射亚州一区二区三区爱妻 | 领导边摸边吃奶边做爽在线观看 | 精品偷自拍另类在线观看 | 成 人 免费观看网站 | 亚洲精品无码人妻无码 | 日韩精品久久久肉伦网站 | 久久精品人人做人人综合试看 | 亚洲成av人片在线观看无码不卡 | 人人妻人人澡人人爽欧美一区 | 亚洲の无码国产の无码影院 | 亚洲熟妇色xxxxx欧美老妇 | 久久久无码中文字幕久... | 玩弄少妇高潮ⅹxxxyw | 色综合久久网 | 在线看片无码永久免费视频 | 亚洲一区二区三区国产精华液 | 国产精品鲁鲁鲁 | 亚洲熟妇色xxxxx亚洲 | 无遮无挡爽爽免费视频 | 国产在热线精品视频 | 少妇无码一区二区二三区 | 一本久道久久综合狠狠爱 | 亚洲 高清 成人 动漫 | 亚洲欧美综合区丁香五月小说 | 日日麻批免费40分钟无码 | 水蜜桃亚洲一二三四在线 | 午夜福利试看120秒体验区 | 久久久久成人片免费观看蜜芽 | 老子影院午夜精品无码 | 国产成人精品久久亚洲高清不卡 | 国精产品一区二区三区 | 六十路熟妇乱子伦 | 国产性生交xxxxx无码 | 131美女爱做视频 | 久久www免费人成人片 | 激情综合激情五月俺也去 | 亚洲一区二区三区香蕉 | 亚无码乱人伦一区二区 | 人人妻人人澡人人爽人人精品 | 亚洲中文字幕乱码av波多ji | 亚洲一区二区观看播放 | 激情国产av做激情国产爱 | 亚洲欧洲日本综合aⅴ在线 | 麻豆国产人妻欲求不满 | 久久精品国产大片免费观看 | 亚洲一区二区三区含羞草 | 午夜精品一区二区三区在线观看 | 十八禁真人啪啪免费网站 | 夜夜躁日日躁狠狠久久av | 亚洲欧美日韩国产精品一区二区 | 亚洲乱亚洲乱妇50p | 国产97在线 | 亚洲 | 国产精品亚洲专区无码不卡 | 强伦人妻一区二区三区视频18 | 国产精品丝袜黑色高跟鞋 | 精品无码av一区二区三区 | 亚洲一区二区三区四区 | 人人妻人人藻人人爽欧美一区 | 在线 国产 欧美 亚洲 天堂 | 超碰97人人做人人爱少妇 | 国产av无码专区亚洲a∨毛片 | 亚洲精品久久久久中文第一幕 | 狠狠色欧美亚洲狠狠色www | 日日躁夜夜躁狠狠躁 | 一本久道高清无码视频 | 亚洲国产日韩a在线播放 | 中文字幕人妻无码一夲道 | 成人精品视频一区二区三区尤物 | 人妻互换免费中文字幕 | 国产午夜福利100集发布 | 午夜福利一区二区三区在线观看 | 欧洲vodafone精品性 | www国产亚洲精品久久网站 | 熟女少妇人妻中文字幕 | 精品无码一区二区三区的天堂 | 成人无码视频在线观看网站 | 在线精品亚洲一区二区 | 激情爆乳一区二区三区 | 在线观看免费人成视频 | 曰韩少妇内射免费播放 | 人人妻人人澡人人爽人人精品浪潮 | 岛国片人妻三上悠亚 | 国产成人久久精品流白浆 | 国产精品人妻一区二区三区四 | 网友自拍区视频精品 | 久久99精品久久久久久 | 免费看少妇作爱视频 | 永久免费精品精品永久-夜色 | 无码乱肉视频免费大全合集 | 亚洲天堂2017无码 | 初尝人妻少妇中文字幕 | 狠狠噜狠狠狠狠丁香五月 | 国产免费久久精品国产传媒 | 97精品国产97久久久久久免费 | 少妇激情av一区二区 | 精品久久久无码中文字幕 | 欧美三级不卡在线观看 | 亚洲人亚洲人成电影网站色 | 少妇性l交大片 | 精品人妻中文字幕有码在线 | 无码人妻av免费一区二区三区 | 狠狠色噜噜狠狠狠狠7777米奇 | 国产猛烈高潮尖叫视频免费 | 色综合久久中文娱乐网 | 狂野欧美性猛交免费视频 | 国产精品亚洲一区二区三区喷水 | 日本丰满熟妇videos | 亚洲 高清 成人 动漫 | 久久99精品久久久久久 | 无码播放一区二区三区 | 人妻插b视频一区二区三区 | 欧美日韩精品 | aⅴ在线视频男人的天堂 | 在线欧美精品一区二区三区 | 自拍偷自拍亚洲精品被多人伦好爽 | 精品国产青草久久久久福利 | 国产热a欧美热a在线视频 | 狠狠cao日日穞夜夜穞av | 日日噜噜噜噜夜夜爽亚洲精品 | www成人国产高清内射 | 亚洲日韩乱码中文无码蜜桃臀网站 | 日本一卡二卡不卡视频查询 | 久久精品人人做人人综合试看 | 一本大道伊人av久久综合 | 在线精品国产一区二区三区 | 亚洲欧美综合区丁香五月小说 | 久久久国产一区二区三区 | 狠狠色丁香久久婷婷综合五月 | 久久久久久国产精品无码下载 | 国产成人无码av一区二区 | 亚洲国产精品成人久久蜜臀 | 欧美成人免费全部网站 | 九月婷婷人人澡人人添人人爽 | 国产精品资源一区二区 | 国产精品国产三级国产专播 | 少妇一晚三次一区二区三区 | 欧美老人巨大xxxx做受 | 人人爽人人澡人人人妻 | 2020久久超碰国产精品最新 | 四虎影视成人永久免费观看视频 | 久久亚洲中文字幕精品一区 | 无码精品国产va在线观看dvd | 无人区乱码一区二区三区 | 国产又粗又硬又大爽黄老大爷视 | 亚洲中文字幕成人无码 | 图片区 小说区 区 亚洲五月 | 日本一卡二卡不卡视频查询 | 亚洲综合伊人久久大杳蕉 | 亚洲狠狠婷婷综合久久 | 永久免费观看国产裸体美女 | 亚洲の无码国产の无码影院 | 亚洲毛片av日韩av无码 | 在线成人www免费观看视频 | 日产国产精品亚洲系列 | 一二三四社区在线中文视频 | 日本va欧美va欧美va精品 | 亚洲经典千人经典日产 | 中文无码成人免费视频在线观看 | 亚洲伊人久久精品影院 | 人妻互换免费中文字幕 | 久久人妻内射无码一区三区 | 内射后入在线观看一区 | 亚洲日韩一区二区三区 | 国产va免费精品观看 | 精品无码一区二区三区的天堂 | 久久综合网欧美色妞网 | 亚洲精品一区二区三区婷婷月 | 综合网日日天干夜夜久久 | 久久99国产综合精品 | 免费播放一区二区三区 | 亚洲狠狠婷婷综合久久 | 狂野欧美性猛xxxx乱大交 | 两性色午夜视频免费播放 | 亚洲一区二区三区偷拍女厕 | 色婷婷香蕉在线一区二区 | 亚洲欧美综合区丁香五月小说 | 日本乱偷人妻中文字幕 | 日韩无套无码精品 | 伊在人天堂亚洲香蕉精品区 | 国产无遮挡又黄又爽免费视频 | 3d动漫精品啪啪一区二区中 | 国产免费无码一区二区视频 | 成人精品天堂一区二区三区 | 少妇无码av无码专区在线观看 | 性啪啪chinese东北女人 | 国产69精品久久久久app下载 | 亚洲欧美综合区丁香五月小说 | 色欲av亚洲一区无码少妇 | 狂野欧美性猛交免费视频 | 无码人中文字幕 | 亚洲中文字幕在线无码一区二区 | 亚洲精品www久久久 | 成人免费视频一区二区 | 久久99精品久久久久久 | 玩弄中年熟妇正在播放 | 国产激情无码一区二区app | 亚洲精品一区二区三区婷婷月 | 97人妻精品一区二区三区 | 亚洲成熟女人毛毛耸耸多 | 国产精品无码永久免费888 | 亚洲日韩av一区二区三区中文 | 久久精品中文字幕一区 | 国产综合久久久久鬼色 | 精品国产乱码久久久久乱码 | 国内揄拍国内精品少妇国语 | 国模大胆一区二区三区 | 少妇高潮喷潮久久久影院 | 乌克兰少妇xxxx做受 | 国产农村乱对白刺激视频 | 久久久av男人的天堂 | 麻豆精产国品 | 欧美第一黄网免费网站 | 国产激情无码一区二区app | 亚洲熟悉妇女xxx妇女av | 黑人大群体交免费视频 | 国产又爽又猛又粗的视频a片 | 国内精品久久毛片一区二区 | 亚洲色欲色欲天天天www | 国产精品久久久久影院嫩草 | 精品国偷自产在线 | 国产精品香蕉在线观看 | 无遮挡国产高潮视频免费观看 | 国产 精品 自在自线 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 国产欧美亚洲精品a | 亚洲一区二区三区播放 | 成人毛片一区二区 | 日日摸夜夜摸狠狠摸婷婷 | 狠狠噜狠狠狠狠丁香五月 | 曰韩少妇内射免费播放 | 久久精品一区二区三区四区 | 日韩无码专区 | 丰腴饱满的极品熟妇 | 一本色道婷婷久久欧美 | 国产精品办公室沙发 | 久久精品国产一区二区三区肥胖 | 精品国产一区av天美传媒 | 水蜜桃亚洲一二三四在线 | 麻花豆传媒剧国产免费mv在线 | 一二三四社区在线中文视频 | 欧美老妇与禽交 | 99视频精品全部免费免费观看 | 日本熟妇大屁股人妻 | 少女韩国电视剧在线观看完整 | 好爽又高潮了毛片免费下载 | 曰本女人与公拘交酡免费视频 | 国语自产偷拍精品视频偷 | 丰满少妇熟乱xxxxx视频 | 亚洲欧美国产精品久久 | 无码免费一区二区三区 | 东京一本一道一二三区 | 国产sm调教视频在线观看 | 99国产欧美久久久精品 | 真人与拘做受免费视频 | 人人妻人人澡人人爽欧美精品 | 色窝窝无码一区二区三区色欲 | 亚洲天堂2017无码中文 | 日产精品99久久久久久 | 真人与拘做受免费视频一 | 国产精品久久精品三级 | 中文久久乱码一区二区 | 男人的天堂av网站 | 久久视频在线观看精品 | 大地资源网第二页免费观看 | 亚洲精品美女久久久久久久 | 欧美自拍另类欧美综合图片区 | 强伦人妻一区二区三区视频18 | 成熟人妻av无码专区 | 激情国产av做激情国产爱 | 人妻少妇精品无码专区二区 | 最近中文2019字幕第二页 | 亚洲精品中文字幕久久久久 | 精品久久久无码人妻字幂 | 无遮挡国产高潮视频免费观看 | 国产精品无码久久av | 国产成人无码午夜视频在线观看 | 日韩av无码中文无码电影 | 欧美日韩一区二区免费视频 | 欧美丰满熟妇xxxx | 午夜精品久久久久久久 | 国产舌乚八伦偷品w中 | 国产香蕉97碰碰久久人人 | 中文字幕乱码中文乱码51精品 | 清纯唯美经典一区二区 | 日本丰满熟妇videos | av人摸人人人澡人人超碰下载 | 久久精品人妻少妇一区二区三区 | 国内精品一区二区三区不卡 | 亚洲第一网站男人都懂 | 国产莉萝无码av在线播放 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 成人欧美一区二区三区黑人免费 | 免费无码午夜福利片69 | 六月丁香婷婷色狠狠久久 | 中文字幕 亚洲精品 第1页 | 国产一区二区三区影院 | 久久无码专区国产精品s | 激情综合激情五月俺也去 | 国产激情艳情在线看视频 | 久久久国产一区二区三区 | 久久久中文字幕日本无吗 | www国产亚洲精品久久久日本 | 亚洲爆乳精品无码一区二区三区 | 国产欧美熟妇另类久久久 | 大肉大捧一进一出好爽视频 | 无码人妻av免费一区二区三区 | 又紧又大又爽精品一区二区 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 成人女人看片免费视频放人 | 国产网红无码精品视频 | 荫蒂被男人添的好舒服爽免费视频 | 99精品无人区乱码1区2区3区 | 无码午夜成人1000部免费视频 | 97精品国产97久久久久久免费 | 强开小婷嫩苞又嫩又紧视频 | 东京无码熟妇人妻av在线网址 | 国产一区二区三区四区五区加勒比 | 骚片av蜜桃精品一区 | 久久精品国产日本波多野结衣 | 中文字幕av无码一区二区三区电影 | 特大黑人娇小亚洲女 | а√资源新版在线天堂 | 色婷婷久久一区二区三区麻豆 | 青青草原综合久久大伊人精品 | 亚洲欧美精品aaaaaa片 | 国产精品久久久久9999小说 | 国产极品美女高潮无套在线观看 | 国产人妻久久精品二区三区老狼 | 久久99久久99精品中文字幕 | 免费男性肉肉影院 | 九月婷婷人人澡人人添人人爽 | 日本精品久久久久中文字幕 | 特黄特色大片免费播放器图片 | av香港经典三级级 在线 | 亚洲毛片av日韩av无码 | 久久天天躁狠狠躁夜夜免费观看 | 日本爽爽爽爽爽爽在线观看免 | 少妇无套内谢久久久久 | 成人免费视频在线观看 | 亚洲男人av天堂午夜在 | 欧美黑人巨大xxxxx | 欧美性猛交内射兽交老熟妇 | 欧美日韩在线亚洲综合国产人 | 九九久久精品国产免费看小说 | 熟妇人妻无码xxx视频 | 又大又紧又粉嫩18p少妇 | 日本va欧美va欧美va精品 | 国产精品无码久久av | 国产片av国语在线观看 | 波多野42部无码喷潮在线 | 东京热一精品无码av | 精品国精品国产自在久国产87 | 国产农村妇女高潮大叫 | 兔费看少妇性l交大片免费 | 熟女少妇在线视频播放 | 国产性生交xxxxx无码 | 色狠狠av一区二区三区 | 丰满妇女强制高潮18xxxx | 亚洲va欧美va天堂v国产综合 | 国产成人精品久久亚洲高清不卡 | 男女下面进入的视频免费午夜 | 中文精品久久久久人妻不卡 | 久久97精品久久久久久久不卡 | 国产精品多人p群无码 | 成熟人妻av无码专区 | 国产精品va在线播放 | 中文字幕无码av波多野吉衣 | 97久久精品无码一区二区 | 久热国产vs视频在线观看 | 又大又硬又黄的免费视频 | 亚洲国产午夜精品理论片 | 亚洲人成人无码网www国产 | 久久久精品国产sm最大网站 | 亚洲精品无码人妻无码 | 熟妇人妻无码xxx视频 | 国产精品-区区久久久狼 | 欧洲精品码一区二区三区免费看 | 欧美熟妇另类久久久久久多毛 | 国产亚洲日韩欧美另类第八页 | 日韩亚洲欧美中文高清在线 | 永久免费观看国产裸体美女 | 精品国偷自产在线视频 | 国产成人精品久久亚洲高清不卡 | 国产精品美女久久久 | 国产乱人伦偷精品视频 | 野外少妇愉情中文字幕 | 国产内射老熟女aaaa | 97夜夜澡人人爽人人喊中国片 | 一本色道久久综合亚洲精品不卡 | 欧美精品在线观看 | 福利一区二区三区视频在线观看 | 精品无码一区二区三区爱欲 | 欧美性猛交内射兽交老熟妇 | 亚洲国产精品美女久久久久 | 午夜无码人妻av大片色欲 | 成人亚洲精品久久久久 | 色综合视频一区二区三区 | 国产又爽又猛又粗的视频a片 | 亚洲一区二区三区无码久久 | av无码久久久久不卡免费网站 | 国产精品多人p群无码 | 内射后入在线观看一区 | 亚洲国产精品美女久久久久 | 成人免费无码大片a毛片 | 少妇人妻大乳在线视频 | 蜜桃臀无码内射一区二区三区 | а√资源新版在线天堂 | 久久精品国产精品国产精品污 | 无码乱肉视频免费大全合集 | 国产情侣作爱视频免费观看 | 国产午夜精品一区二区三区嫩草 | 亚洲国产精品美女久久久久 | 中文字幕 人妻熟女 | 久久99精品久久久久婷婷 | 国产成人午夜福利在线播放 | 婷婷丁香六月激情综合啪 | 樱花草在线社区www | 亚洲高清偷拍一区二区三区 | 婷婷丁香六月激情综合啪 | 少妇一晚三次一区二区三区 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 东北女人啪啪对白 | 亚洲码国产精品高潮在线 | 国产极品美女高潮无套在线观看 | 国产av无码专区亚洲a∨毛片 | а√天堂www在线天堂小说 | 国产色视频一区二区三区 | 亚洲码国产精品高潮在线 | 国产成人精品一区二区在线小狼 | 男女超爽视频免费播放 | 国产特级毛片aaaaaaa高清 | 国产精品人人爽人人做我的可爱 | 国产乱人无码伦av在线a | 女人高潮内射99精品 | 精品aⅴ一区二区三区 | 乌克兰少妇性做爰 | 久久精品99久久香蕉国产色戒 | 亚洲区小说区激情区图片区 | 国产va免费精品观看 | 色综合久久中文娱乐网 | 超碰97人人做人人爱少妇 | 亚洲欧美精品aaaaaa片 | 亚洲狠狠色丁香婷婷综合 | 中文字幕无码人妻少妇免费 | 女人和拘做爰正片视频 | 国产精品资源一区二区 | 免费无码一区二区三区蜜桃大 | 亚洲一区二区三区国产精华液 | 最近中文2019字幕第二页 | 高清不卡一区二区三区 | 欧美性猛交xxxx富婆 | 精品厕所偷拍各类美女tp嘘嘘 | 18黄暴禁片在线观看 | 夜夜夜高潮夜夜爽夜夜爰爰 | 日韩欧美群交p片內射中文 | 少妇厨房愉情理9仑片视频 | 无码av免费一区二区三区试看 | 久久久久成人片免费观看蜜芽 | 国产人妻精品一区二区三区 | 亚洲爆乳精品无码一区二区三区 | 99国产精品白浆在线观看免费 | 久久精品人妻少妇一区二区三区 | 2019午夜福利不卡片在线 | 久久精品国产99久久6动漫 | 国产亚洲精品久久久闺蜜 | 国产亚洲精品久久久久久久 | 少妇愉情理伦片bd | 中文字幕人妻丝袜二区 | 极品嫩模高潮叫床 | 亚洲成在人网站无码天堂 | 欧美激情综合亚洲一二区 | 曰本女人与公拘交酡免费视频 | 国产在热线精品视频 | 成人一在线视频日韩国产 | 成人亚洲精品久久久久 | 亚洲自偷自偷在线制服 | 欧美午夜特黄aaaaaa片 | 国产午夜视频在线观看 | 乱人伦人妻中文字幕无码 | 久久久久久久人妻无码中文字幕爆 | 日本高清一区免费中文视频 | 少妇激情av一区二区 | 国精产品一品二品国精品69xx | 欧美丰满熟妇xxxx性ppx人交 | 人人妻人人澡人人爽欧美一区九九 | 一个人免费观看的www视频 | 男女超爽视频免费播放 | 久久久久久亚洲精品a片成人 | 国精产品一品二品国精品69xx | 国产av久久久久精东av | 东京一本一道一二三区 | 精品水蜜桃久久久久久久 | 亚洲春色在线视频 | 无码人妻av免费一区二区三区 | 男人和女人高潮免费网站 | 日韩av激情在线观看 | √8天堂资源地址中文在线 | 国产精品久久福利网站 | 少妇厨房愉情理9仑片视频 | 中文字幕av日韩精品一区二区 | 亚洲欧美综合区丁香五月小说 | 久久精品99久久香蕉国产色戒 | 亚洲aⅴ无码成人网站国产app | 亚洲国产精品久久人人爱 | 国产乱人伦偷精品视频 | 人人妻在人人 | 亚洲人亚洲人成电影网站色 | 精品国产aⅴ无码一区二区 | 奇米影视7777久久精品人人爽 | 欧美日韩综合一区二区三区 | 亚洲一区二区观看播放 | 国产9 9在线 | 中文 | 荡女精品导航 | 最新国产乱人伦偷精品免费网站 | aa片在线观看视频在线播放 | 老司机亚洲精品影院无码 | 无码国产色欲xxxxx视频 | 成人欧美一区二区三区 | 77777熟女视频在线观看 а天堂中文在线官网 | 4hu四虎永久在线观看 | 久久久亚洲欧洲日产国码αv | 成人性做爰aaa片免费看 | 精品aⅴ一区二区三区 | 亚洲va欧美va天堂v国产综合 | 伊人色综合久久天天小片 | 欧美黑人巨大xxxxx | 无码中文字幕色专区 | 一二三四在线观看免费视频 | 精品成在人线av无码免费看 | 欧美精品一区二区精品久久 | 欧美日韩人成综合在线播放 | 一本一道久久综合久久 | 伦伦影院午夜理论片 | 丰满少妇熟乱xxxxx视频 | 大胆欧美熟妇xx | 九月婷婷人人澡人人添人人爽 | 99riav国产精品视频 | 九九在线中文字幕无码 | 18无码粉嫩小泬无套在线观看 | 国产福利视频一区二区 | 人妻插b视频一区二区三区 | 久久精品中文字幕一区 | 波多野结衣高清一区二区三区 | 欧美自拍另类欧美综合图片区 | 狠狠色噜噜狠狠狠狠7777米奇 | 18禁黄网站男男禁片免费观看 | 成在人线av无码免观看麻豆 | 4hu四虎永久在线观看 | 999久久久国产精品消防器材 | 乱码午夜-极国产极内射 | 无码帝国www无码专区色综合 | 国产色视频一区二区三区 | 久久久久国色av免费观看性色 | 精品午夜福利在线观看 | 男女超爽视频免费播放 | 亚洲国产一区二区三区在线观看 | 亚洲春色在线视频 | 中文字幕av无码一区二区三区电影 | 亚洲色在线无码国产精品不卡 | 国产三级精品三级男人的天堂 | 毛片内射-百度 | 亚洲人成影院在线观看 | 99精品视频在线观看免费 | 亚洲精品一区二区三区婷婷月 | 熟妇人妻无乱码中文字幕 | www国产亚洲精品久久久日本 | 在线成人www免费观看视频 | 最近中文2019字幕第二页 | 亚洲国产精品久久久久久 | 76少妇精品导航 | 沈阳熟女露脸对白视频 | 日韩av无码一区二区三区不卡 | 国产香蕉97碰碰久久人人 | 国产手机在线αⅴ片无码观看 | 久久久久久亚洲精品a片成人 | 天堂无码人妻精品一区二区三区 | 黑人巨大精品欧美黑寡妇 | 国产色视频一区二区三区 | 亚洲人成影院在线无码按摩店 | 十八禁真人啪啪免费网站 | 2020久久香蕉国产线看观看 | 一二三四在线观看免费视频 | 国産精品久久久久久久 | 51国偷自产一区二区三区 | 国产明星裸体无码xxxx视频 | 成熟妇人a片免费看网站 | 成在人线av无码免观看麻豆 | 熟女俱乐部五十路六十路av | 亚洲成av人影院在线观看 | 四虎影视成人永久免费观看视频 | 国产尤物精品视频 | 妺妺窝人体色www在线小说 | 粉嫩少妇内射浓精videos | 亚洲娇小与黑人巨大交 | 亚洲色成人中文字幕网站 | 欧美国产日产一区二区 | 日本护士毛茸茸高潮 | 18精品久久久无码午夜福利 | 国产精品18久久久久久麻辣 | 亚洲国产成人a精品不卡在线 | 天天拍夜夜添久久精品大 | 国内老熟妇对白xxxxhd | 国产麻豆精品一区二区三区v视界 | 99视频精品全部免费免费观看 | 亚洲日韩av一区二区三区中文 | 成人亚洲精品久久久久 | 欧美人与物videos另类 | 亚洲自偷自偷在线制服 | 露脸叫床粗话东北少妇 | 国产精品久久精品三级 | 99久久人妻精品免费一区 | 亚洲一区二区三区国产精华液 | 欧美三级不卡在线观看 | 帮老师解开蕾丝奶罩吸乳网站 | 亚洲精品午夜无码电影网 | 国语精品一区二区三区 | 亚洲精品鲁一鲁一区二区三区 | 亚洲国产精华液网站w | 天堂无码人妻精品一区二区三区 | 亚洲欧美日韩成人高清在线一区 | 国产精品无码一区二区三区不卡 | 成人一区二区免费视频 | 99久久精品午夜一区二区 | 激情亚洲一区国产精品 | 精品久久久中文字幕人妻 | 国产激情精品一区二区三区 | 中国女人内谢69xxxxxa片 | 国产精品人妻一区二区三区四 | 亚洲人成网站在线播放942 | www成人国产高清内射 | 麻豆国产97在线 | 欧洲 | 日本熟妇乱子伦xxxx | 亚洲国产高清在线观看视频 | 99riav国产精品视频 | 精品国产乱码久久久久乱码 | 国产精品多人p群无码 | 亚洲人成人无码网www国产 | 又黄又爽又色的视频 | 国产成人无码av片在线观看不卡 | 午夜精品久久久久久久 | 人妻有码中文字幕在线 | a片在线免费观看 | 色窝窝无码一区二区三区色欲 | 色情久久久av熟女人妻网站 | 日韩 欧美 动漫 国产 制服 | 亚洲熟妇色xxxxx欧美老妇y | 亚洲精品美女久久久久久久 | 久久亚洲中文字幕精品一区 | 蜜桃无码一区二区三区 | 国产69精品久久久久app下载 | 人人爽人人澡人人高潮 | 国产精品高潮呻吟av久久4虎 | 麻豆果冻传媒2021精品传媒一区下载 | www国产精品内射老师 | 狠狠色色综合网站 | 日韩av无码一区二区三区 | 国产精品人人妻人人爽 | 中文字幕乱码中文乱码51精品 | 久久国产精品精品国产色婷婷 | 亚洲の无码国产の无码步美 | 国产亚洲美女精品久久久2020 | 青春草在线视频免费观看 | 久久精品中文字幕大胸 | 欧美性黑人极品hd | 国产国产精品人在线视 | 人人妻在人人 | 暴力强奷在线播放无码 | 人妻aⅴ无码一区二区三区 | 亚洲gv猛男gv无码男同 | 18禁黄网站男男禁片免费观看 | 给我免费的视频在线观看 | 欧美怡红院免费全部视频 | 久久国产精品偷任你爽任你 | 成人无码精品一区二区三区 | 久久精品国产99精品亚洲 | 无人区乱码一区二区三区 | 中国女人内谢69xxxxxa片 | 性欧美大战久久久久久久 | 美女极度色诱视频国产 | 亚洲国产av精品一区二区蜜芽 | 亚洲一区二区三区偷拍女厕 | 无码乱肉视频免费大全合集 | 97夜夜澡人人爽人人喊中国片 | 无套内谢的新婚少妇国语播放 | 国产精品无码一区二区桃花视频 | 国产成人一区二区三区别 | 中文字幕人妻无码一夲道 | 欧美xxxxx精品 | 国产精品无码mv在线观看 | 内射欧美老妇wbb | 性生交片免费无码看人 | 午夜精品久久久久久久 | 性生交大片免费看l | 国产精品无码成人午夜电影 | 日产精品高潮呻吟av久久 | 国产乱子伦视频在线播放 | 亚洲 日韩 欧美 成人 在线观看 | 国产日产欧产精品精品app | 国产香蕉尹人视频在线 | 丰满人妻翻云覆雨呻吟视频 | 亚洲国产日韩a在线播放 | 国产精品亚洲一区二区三区喷水 | 国产97人人超碰caoprom | 熟女体下毛毛黑森林 | 一本久久伊人热热精品中文字幕 | 国产美女精品一区二区三区 | 性欧美疯狂xxxxbbbb | 99久久人妻精品免费二区 | 欧美日韩综合一区二区三区 | 精品久久8x国产免费观看 | 国产精品久久久午夜夜伦鲁鲁 | 免费观看的无遮挡av | 青草青草久热国产精品 | 色综合久久久久综合一本到桃花网 | 国产亚洲精品久久久ai换 | 亚洲狠狠色丁香婷婷综合 | 亚洲最大成人网站 | 香蕉久久久久久av成人 | 欧美熟妇另类久久久久久不卡 | 台湾无码一区二区 | 7777奇米四色成人眼影 | 日本熟妇人妻xxxxx人hd | 无码av最新清无码专区吞精 | 国产在热线精品视频 | 在线成人www免费观看视频 | 精品无码av一区二区三区 | 亚洲精品久久久久久一区二区 | 亚洲最大成人网站 | 在线播放无码字幕亚洲 | 国产精品久久久久7777 | 少妇高潮喷潮久久久影院 | 成人免费视频一区二区 | 粉嫩少妇内射浓精videos | 精品无码国产一区二区三区av | 无码午夜成人1000部免费视频 | 老熟妇乱子伦牲交视频 | 精品久久8x国产免费观看 | 久久久久99精品国产片 | 2020久久香蕉国产线看观看 | 亚洲熟妇自偷自拍另类 | 欧美性生交活xxxxxdddd | 成人亚洲精品久久久久 | 国产精品二区一区二区aⅴ污介绍 | 欧美日韩视频无码一区二区三 | 国产精品人妻一区二区三区四 | 亚洲精品一区二区三区在线 | 精品久久久久久人妻无码中文字幕 | 久久综合九色综合欧美狠狠 | 欧美日韩亚洲国产精品 | 少妇性l交大片欧洲热妇乱xxx | 性色av无码免费一区二区三区 | 国语精品一区二区三区 | 国产熟妇另类久久久久 | 成人精品天堂一区二区三区 | 中文精品久久久久人妻不卡 | 牛和人交xxxx欧美 | 亚洲а∨天堂久久精品2021 | 少妇性俱乐部纵欲狂欢电影 | 免费人成在线观看网站 | 国产精品va在线观看无码 | 偷窥村妇洗澡毛毛多 | 日本高清一区免费中文视频 | 高清不卡一区二区三区 | 任你躁国产自任一区二区三区 | 成人精品天堂一区二区三区 | 在线а√天堂中文官网 | 乱码av麻豆丝袜熟女系列 | 欧美 亚洲 国产 另类 | 高清国产亚洲精品自在久久 | 精品成人av一区二区三区 | 娇妻被黑人粗大高潮白浆 | 亚洲理论电影在线观看 | 日韩精品a片一区二区三区妖精 | 成人免费无码大片a毛片 | 日本精品人妻无码免费大全 | 三上悠亚人妻中文字幕在线 | 欧美日韩在线亚洲综合国产人 | 熟妇人妻中文av无码 | 久久久久成人片免费观看蜜芽 | 久久久久se色偷偷亚洲精品av | 亚洲中文字幕无码中字 | 精品国产aⅴ无码一区二区 | 欧美 亚洲 国产 另类 | 丝袜美腿亚洲一区二区 | 欧美日韩色另类综合 | 国产免费观看黄av片 | 国产成人无码一二三区视频 | 欧美日韩一区二区综合 | 美女极度色诱视频国产 | 亚洲精品中文字幕久久久久 | 四虎永久在线精品免费网址 | 少妇一晚三次一区二区三区 | 精品人妻人人做人人爽夜夜爽 | 性生交大片免费看女人按摩摩 | 日韩无套无码精品 | 巨爆乳无码视频在线观看 | 欧美三级a做爰在线观看 | 国产成人午夜福利在线播放 | 人人澡人人妻人人爽人人蜜桃 | 国精产品一区二区三区 | 国模大胆一区二区三区 | 日日碰狠狠躁久久躁蜜桃 | 亚洲欧美日韩成人高清在线一区 | 国产莉萝无码av在线播放 | 欧美精品一区二区精品久久 | 久久五月精品中文字幕 | 天堂在线观看www | 亚洲日韩精品欧美一区二区 | 免费观看又污又黄的网站 | 人妻中文无码久热丝袜 | 久久精品女人天堂av免费观看 | 乱人伦人妻中文字幕无码久久网 | 老头边吃奶边弄进去呻吟 | 色综合天天综合狠狠爱 | 一本久道高清无码视频 | 亚洲熟妇色xxxxx欧美老妇 | 国产午夜福利100集发布 | 国产精品久久福利网站 | 欧美性猛交内射兽交老熟妇 | 亚洲精品成人福利网站 | 波多野结衣aⅴ在线 | 秋霞成人午夜鲁丝一区二区三区 | 欧美性生交xxxxx久久久 | 午夜肉伦伦影院 | 又大又黄又粗又爽的免费视频 | 日韩无套无码精品 | 国产精品久免费的黄网站 | 999久久久国产精品消防器材 | 爆乳一区二区三区无码 | 国产精品亚洲一区二区三区喷水 | 76少妇精品导航 | 扒开双腿疯狂进出爽爽爽视频 | 国产精品久久久久影院嫩草 | 欧美丰满熟妇xxxx | 在线亚洲高清揄拍自拍一品区 | 熟妇人妻无码xxx视频 | 无码人妻丰满熟妇区五十路百度 | 少妇一晚三次一区二区三区 | 国产精品怡红院永久免费 | 狠狠色噜噜狠狠狠7777奇米 | 强伦人妻一区二区三区视频18 | 伊人久久大香线蕉av一区二区 | 在线а√天堂中文官网 | 国产成人久久精品流白浆 | 九一九色国产 | 大肉大捧一进一出视频出来呀 | 好爽又高潮了毛片免费下载 | 亚洲熟妇自偷自拍另类 | 粗大的内捧猛烈进出视频 | 亚洲精品国产精品乱码视色 | 国产农村妇女高潮大叫 | 青草视频在线播放 | 无码任你躁久久久久久久 | 2019午夜福利不卡片在线 | 中文亚洲成a人片在线观看 | 亚洲精品久久久久avwww潮水 | 中国大陆精品视频xxxx | 欧美精品一区二区精品久久 | 国产在线精品一区二区高清不卡 | 日本一区二区三区免费高清 | 国产三级久久久精品麻豆三级 | av香港经典三级级 在线 | 帮老师解开蕾丝奶罩吸乳网站 | 国内精品人妻无码久久久影院 | 国产无套粉嫩白浆在线 | 久久久久成人片免费观看蜜芽 | 黑森林福利视频导航 | 四虎国产精品免费久久 | 久久99热只有频精品8 | 久久久久人妻一区精品色欧美 | 高中生自慰www网站 | 最新版天堂资源中文官网 | 亚洲呦女专区 | 免费男性肉肉影院 | 久久综合狠狠综合久久综合88 | 久久精品中文字幕一区 | 国产精品99爱免费视频 | 黑森林福利视频导航 | 久久综合香蕉国产蜜臀av | 人人妻人人澡人人爽人人精品 | 久久久中文久久久无码 | 性啪啪chinese东北女人 | 天堂久久天堂av色综合 | 性欧美熟妇videofreesex | 国模大胆一区二区三区 | 18精品久久久无码午夜福利 | 毛片内射-百度 | 无码午夜成人1000部免费视频 | 欧美性猛交内射兽交老熟妇 | 国产一精品一av一免费 | 无码人妻久久一区二区三区不卡 | 国产乱人偷精品人妻a片 | 亚洲 高清 成人 动漫 | 精品国产aⅴ无码一区二区 | 亚洲成在人网站无码天堂 | 亚洲成av人片天堂网无码】 | 小泽玛莉亚一区二区视频在线 | 中文字幕人妻无码一区二区三区 | 国产亚洲日韩欧美另类第八页 | 天下第一社区视频www日本 | 国产精品亚洲综合色区韩国 | 成人一在线视频日韩国产 | 一区二区三区乱码在线 | 欧洲 | 亚洲欧美中文字幕5发布 | 色噜噜亚洲男人的天堂 | 亚洲自偷精品视频自拍 | 国产激情精品一区二区三区 | 日本www一道久久久免费榴莲 | 亚无码乱人伦一区二区 | 最近的中文字幕在线看视频 | 少妇人妻大乳在线视频 | 免费中文字幕日韩欧美 | 日韩亚洲欧美精品综合 | 色噜噜亚洲男人的天堂 | 欧美成人免费全部网站 | 国产精品亚洲一区二区三区喷水 | 少妇性l交大片欧洲热妇乱xxx | 欧美 丝袜 自拍 制服 另类 | 成人aaa片一区国产精品 | 丰满少妇女裸体bbw | 丰满少妇熟乱xxxxx视频 | 麻豆人妻少妇精品无码专区 | 亚洲成a人片在线观看无码 | 激情爆乳一区二区三区 | 天海翼激烈高潮到腰振不止 | 中文字幕av日韩精品一区二区 | 中国大陆精品视频xxxx | 亚洲人成人无码网www国产 | 中文字幕无码热在线视频 | 欧美黑人乱大交 | 男人的天堂av网站 | 精品一区二区三区无码免费视频 | 麻豆国产97在线 | 欧洲 | 人人妻人人澡人人爽欧美一区九九 | 国产亚洲精品久久久闺蜜 | 人妻少妇精品视频专区 | 久久综合狠狠综合久久综合88 | 在线播放无码字幕亚洲 | 国产精品二区一区二区aⅴ污介绍 | 国产另类ts人妖一区二区 | 亚洲精品一区二区三区在线 | 国产成人精品视频ⅴa片软件竹菊 | 鲁一鲁av2019在线 | 欧美成人免费全部网站 | 亚洲一区二区三区偷拍女厕 | 天堂久久天堂av色综合 | 图片小说视频一区二区 | 成人影院yy111111在线观看 | 精品无码一区二区三区的天堂 | 久久久久亚洲精品男人的天堂 | 国产在线一区二区三区四区五区 | 丰满人妻翻云覆雨呻吟视频 | 18无码粉嫩小泬无套在线观看 | 亚洲日韩一区二区三区 | 亚洲 另类 在线 欧美 制服 | 男女爱爱好爽视频免费看 | av在线亚洲欧洲日产一区二区 | 亚洲国产综合无码一区 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 亚洲欧美精品伊人久久 | 性生交大片免费看女人按摩摩 | 亚洲国产欧美日韩精品一区二区三区 | 四虎国产精品免费久久 | 国产热a欧美热a在线视频 | 欧美日韩人成综合在线播放 | 人人爽人人爽人人片av亚洲 | 国产精品va在线观看无码 | 无码人中文字幕 | 无人区乱码一区二区三区 | 国产做国产爱免费视频 | 国产精品国产三级国产专播 | 2020久久香蕉国产线看观看 | 久久亚洲中文字幕无码 | 日本一卡二卡不卡视频查询 | 久久午夜无码鲁丝片秋霞 | 国产香蕉尹人综合在线观看 | 97久久国产亚洲精品超碰热 | 国产精品永久免费视频 | 日日碰狠狠丁香久燥 | 亚洲区欧美区综合区自拍区 | yw尤物av无码国产在线观看 | 无码精品国产va在线观看dvd | 人妻尝试又大又粗久久 | 国产明星裸体无码xxxx视频 | 撕开奶罩揉吮奶头视频 | 人人妻人人澡人人爽人人精品 | 曰本女人与公拘交酡免费视频 | 欧美日本免费一区二区三区 | 超碰97人人做人人爱少妇 | 午夜熟女插插xx免费视频 | 国产69精品久久久久app下载 | 日韩精品无码一区二区中文字幕 | 亚洲爆乳精品无码一区二区三区 | 天天爽夜夜爽夜夜爽 | 夜夜影院未满十八勿进 | 国产激情艳情在线看视频 | 亚无码乱人伦一区二区 | 久久精品国产一区二区三区 | 国产在线无码精品电影网 | 国内精品人妻无码久久久影院 | 色窝窝无码一区二区三区色欲 | 无码午夜成人1000部免费视频 | 国色天香社区在线视频 | 国产乱人偷精品人妻a片 | 久久99国产综合精品 | 俺去俺来也在线www色官网 | 国产成人综合色在线观看网站 | 国产av人人夜夜澡人人爽麻豆 | 精品国产麻豆免费人成网站 | 亚洲欧美精品伊人久久 | 漂亮人妻洗澡被公强 日日躁 | 亚洲 高清 成人 动漫 | 鲁大师影院在线观看 | 熟女体下毛毛黑森林 | 国产成人无码午夜视频在线观看 | 色欲综合久久中文字幕网 | 影音先锋中文字幕无码 | 亚洲熟悉妇女xxx妇女av | 女人和拘做爰正片视频 | 日本大乳高潮视频在线观看 | 沈阳熟女露脸对白视频 | 亚洲va中文字幕无码久久不卡 | 未满小14洗澡无码视频网站 | 久久精品国产99久久6动漫 | 亚洲区欧美区综合区自拍区 | 无码人妻丰满熟妇区五十路百度 | 午夜福利一区二区三区在线观看 | 1000部啪啪未满十八勿入下载 | 精品一区二区三区无码免费视频 | 精品无人国产偷自产在线 | 2019午夜福利不卡片在线 | 曰本女人与公拘交酡免费视频 | 色综合天天综合狠狠爱 | 国产三级精品三级男人的天堂 | 色五月丁香五月综合五月 | 俺去俺来也在线www色官网 | 成人免费视频视频在线观看 免费 | 亚洲精品久久久久久一区二区 | 在线亚洲高清揄拍自拍一品区 | 欧美日本精品一区二区三区 | 中文字幕久久久久人妻 | 一本加勒比波多野结衣 | 中文字幕人成乱码熟女app | 无码国内精品人妻少妇 | 高清无码午夜福利视频 | 国产成人精品三级麻豆 | 少妇久久久久久人妻无码 | 天堂久久天堂av色综合 | 人妻尝试又大又粗久久 | 亚洲国产精华液网站w | 久久久久久久久蜜桃 | 亚洲自偷精品视频自拍 | 夜先锋av资源网站 | 亚洲精品午夜无码电影网 | 亚洲日韩中文字幕在线播放 | 欧美人妻一区二区三区 | 国产偷抇久久精品a片69 | 亚洲人亚洲人成电影网站色 | 熟妇激情内射com | 国产 精品 自在自线 | 午夜福利试看120秒体验区 | 欧美三级不卡在线观看 | 亚洲日韩一区二区三区 | 国产福利视频一区二区 | 亚洲乱码国产乱码精品精 | 日日麻批免费40分钟无码 | 中国大陆精品视频xxxx | 奇米影视7777久久精品 | 精品厕所偷拍各类美女tp嘘嘘 | 精品无码av一区二区三区 | 亚洲色偷偷男人的天堂 | 老太婆性杂交欧美肥老太 | 妺妺窝人体色www在线小说 | 久久久中文字幕日本无吗 | 骚片av蜜桃精品一区 | 免费无码肉片在线观看 | 精品久久综合1区2区3区激情 | 无码国产色欲xxxxx视频 | 亚洲综合精品香蕉久久网 | 又紧又大又爽精品一区二区 | 久久无码专区国产精品s | 午夜精品久久久内射近拍高清 | 欧美精品无码一区二区三区 | 扒开双腿疯狂进出爽爽爽视频 | 在线播放免费人成毛片乱码 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 色婷婷av一区二区三区之红樱桃 | 国产av剧情md精品麻豆 | 国产内射爽爽大片视频社区在线 |