3atv精品不卡视频,97人人超碰国产精品最新,中文字幕av一区二区三区人妻少妇,久久久精品波多野结衣,日韩一区二区三区精品

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

Greys Java在线问题诊断工具

發(fā)布時(shí)間:2025/3/21 java 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Greys Java在线问题诊断工具 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

摘要:?線上系統(tǒng)為何經(jīng)常出錯(cuò)?數(shù)據(jù)庫(kù)為何屢遭黑手?業(yè)務(wù)調(diào)用為何頻頻失敗?連環(huán)異常堆棧案,究竟是那次調(diào)用所為? 數(shù)百臺(tái)服務(wù)器意外雪崩背后又隱藏著什么?是軟件的扭曲還是硬件的淪喪? 走進(jìn)科學(xué)帶你了解Greys, Java線上問(wèn)題診斷工具。


?

線上系統(tǒng)為何經(jīng)常出錯(cuò)?數(shù)據(jù)庫(kù)為何屢遭黑手?業(yè)務(wù)調(diào)用為何頻頻失敗?連環(huán)異常堆棧案,究竟是那次調(diào)用所為?
數(shù)百臺(tái)服務(wù)器意外雪崩背后又隱藏著什么?是軟件的扭曲還是硬件的淪喪?
走進(jìn)科學(xué)帶你了解Greys, Java線上問(wèn)題診斷工具。

?





?

Greys的誕生

很早的時(shí)候,我們使用BTrace排查問(wèn)題,在感嘆BTrace的強(qiáng)大之余,也曾好幾次將線上系統(tǒng)折騰掛掉。2012年淘寶的聚石寫了HouseMD,將常用的幾個(gè)Btrace腳本整合在一起形成一個(gè)獨(dú)立風(fēng)格的應(yīng)用,但其核心代碼用的是Scala,我們沒(méi)這方面的編程維護(hù)經(jīng)驗(yàn),所以只好艷羨HouseMD的才思敏捷而無(wú)法在其上增加功能。

?

于是乎,Greys誕生了!

PS:目前Greys僅支持Linux/Unix/Mac上的Java6+,Windows暫時(shí)無(wú)法支持

Greys是一個(gè)JVM進(jìn)程執(zhí)行過(guò)程中的異常診斷工具。 在不中斷程序執(zhí)行的情況下輕松完成JVM相關(guān)問(wèn)題排查工作。

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

目標(biāo)群體

  • 有時(shí)候突然一個(gè)問(wèn)題反饋上來(lái),需要入?yún)⒉拍芡瓿啥ㄎ?#xff0c;但恰恰沒(méi)有任何日志。回去加上重新部署,一杯咖啡時(shí)間過(guò)去了,是不是很崩潰?

  • 當(dāng)你經(jīng)過(guò)反復(fù)這樣幾次折騰之后變得聰明了,在自己的代碼的所有入?yún)⒑统鰠⒌胤蕉技由蟙ebug日志,但這次問(wèn)題似乎暴露在別人的代碼中了...是不是很無(wú)奈?

  • 突然遇到線上一個(gè)性能問(wèn)題無(wú)法確定到底是哪個(gè)環(huán)節(jié)的耗時(shí),只能反復(fù)抓jstack猜,還有沒(méi)有辦法可以好好的過(guò)日子啦?

遇到以上問(wèn)題時(shí),你就是我們這類工具的目標(biāo)客戶,此類工具能利用Java6的Instrumentation特性,動(dòng)態(tài)增強(qiáng)你所指定的類,獲取你想要到的信息。

軟件特點(diǎn)

  • ClassLoader隔離

    在設(shè)計(jì)和實(shí)現(xiàn)這款程序的時(shí)候,花費(fèi)了非常多的精力在隔離目標(biāo)類與Greys的ClassLoader隔離上。你可以放心大膽的使用Greys,而不用擔(dān)心Greys會(huì)干擾到現(xiàn)有業(yè)務(wù)代碼所使用的三方類庫(kù)。

  • 運(yùn)行時(shí)加載

    要求目標(biāo)JVM在JDK6+的基礎(chǔ)上,且當(dāng)前執(zhí)行人擁有與目標(biāo)JVM相同權(quán)限。可以做到不中斷當(dāng)前JVM而動(dòng)態(tài)進(jìn)行加載、問(wèn)題分析定位。

  • 常用問(wèn)題定位命令化

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

  • 表達(dá)式支持

    HouseMD相比BTrace最強(qiáng)大的地方就在于能快速指定攔截的類與方法,但卻無(wú)法支持對(duì)觀察到的對(duì)象進(jìn)行展開(kāi)、條件過(guò)濾等操作。BTrace的腳本是自己所編寫,可以實(shí)現(xiàn)此類功能。但編寫學(xué)習(xí)成本很高,且容易出錯(cuò)。

    表達(dá)式的引用能綜合這兩款軟件的特長(zhǎng)同時(shí)彌補(bǔ)他們的不足。目前Greys所采用的是OGNL表達(dá)式。

  • 多用戶同時(shí)訪問(wèn)

    遠(yuǎn)程DEBUG最大的問(wèn)題就在于,只允許一個(gè)人訪問(wèn)DEBUG端口,而且一單斷點(diǎn)條件設(shè)置不當(dāng),很有可能將其他正常的業(yè)務(wù)請(qǐng)求攔下,影響其他用戶的使用。

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

  • 高性能

    精心用ASM設(shè)計(jì)了字節(jié)碼增強(qiáng),核心的數(shù)據(jù)結(jié)構(gòu)用數(shù)組針對(duì)實(shí)際場(chǎng)景做裁剪優(yōu)化。可以放心的用在高負(fù)載有求下的JVM環(huán)境。

  • 純Java編寫

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

    目前已經(jīng)有非常多的熱心網(wǎng)友在給我的代碼挑錯(cuò),非常感謝這些朋友的支持!

不適合的場(chǎng)景

Greys并不萬(wàn)能,我也沒(méi)有計(jì)劃讓她能成為萬(wàn)能的問(wèn)題定位工具。所以如果你在某些場(chǎng)合能用上更專業(yè)的工具,我會(huì)非常樂(lè)意推薦你使用。

  • 性能環(huán)境下的性能損耗定位

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

  • 開(kāi)發(fā)環(huán)境下的遠(yuǎn)程DEBUG

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

  • 線上環(huán)境大規(guī)模部署

    與BTrace一樣,Greys獲取到的權(quán)限太高,如果線上大規(guī)模部署會(huì)遭受黑客的攻擊,而今天我為了實(shí)現(xiàn)簡(jiǎn)單是沒(méi)有做過(guò)多的鑒權(quán)控制。

  • JDK類庫(kù)分析

    JDK的類庫(kù)存放在rt.jar中,啟動(dòng)時(shí)加載到BootstrapClassLoader中(Hotspot-JVM),但由于Greys也是用Java語(yǔ)言所編寫,所以自身也用到了這些基礎(chǔ)類庫(kù),默認(rèn)情況下關(guān)閉了對(duì)這些類的增強(qiáng)。

    當(dāng)然,對(duì)于Spring、ibatis、Tomcat等三方類庫(kù)是可以放心大膽使用的。

  • 其它不適合場(chǎng)景

    BTrace、HouseMD、Greys、JavOSize此類工具都會(huì)對(duì)Perm區(qū)、CodeCache(影響JIT)產(chǎn)生干擾,如果你的程序?qū)@兩塊非常敏感,也請(qǐng)不要在這些場(chǎng)合下使用。

我們的座右銘

讓程序解決繁瑣的事情

特性功能

交互方式

  • 命令行交互

    因?yàn)楹芏鄨?chǎng)景下我們都是用在遠(yuǎn)程問(wèn)題分析中(本地我就直接DEBUG了)。一般Java都會(huì)使用在Linux/BSD等類UNIX操作系統(tǒng)下。所以命令行是我最開(kāi)始不二的選擇,也是目前支持最成熟的交互方案。

  • 圖形界面交互

    在2.x.x.x版本中將會(huì)支持WEB方式訪問(wèn),HTTP采用websocket與后臺(tái)服務(wù)進(jìn)行交互,預(yù)計(jì)過(guò)年之后能發(fā)布上線。

內(nèi)置主要功能

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

  • 方法執(zhí)行監(jiān)控

    調(diào)用量,成功失敗率,響應(yīng)時(shí)間

  • 方法執(zhí)行數(shù)據(jù)操作

    入?yún)ⅰ⒎祷刂怠惓P畔⒂涗浥c查看;支持動(dòng)作回放

  • 性能開(kāi)銷渲染

    跟蹤指定路徑中的方法調(diào)用軌跡、耗時(shí)

  • 查看方法調(diào)用堆棧

軟件特點(diǎn)

  • 純Java實(shí)現(xiàn)的開(kāi)源項(xiàng)目
  • 安裝使用便捷,僅一個(gè)jar包
  • 可無(wú)需重啟JVM進(jìn)行CT式診斷
  • 觀察變量的出入?yún)?/li>
  • OGNL表達(dá)式展開(kāi)變量、過(guò)濾條件,方便你查看入?yún)ⅰ⒊鰠ⅰ惓!?dāng)前對(duì)象的各種屬性細(xì)節(jié)
  • 常用分析命令集成,monitor、trace等
  • 時(shí)間隧道,tt命令能以時(shí)間維度紀(jì)錄下監(jiān)控期內(nèi)的每一次調(diào)用環(huán)境
  • 多人并行協(xié)作

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

1. 應(yīng)用管理員擁有JVM進(jìn)程權(quán)限,由他來(lái)首先在目標(biāo)JVM上啟動(dòng)Greys 2. 技術(shù)專家A和B平時(shí)沒(méi)有對(duì)應(yīng)機(jī)器的權(quán)限,但只要網(wǎng)絡(luò)能訪問(wèn),他們可以通過(guò)指定ip:port直接訪問(wèn)目標(biāo)機(jī)器的JVM進(jìn)程,仿佛在本地一般

Greys入門

軟件安裝

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

  • 在線安裝(推薦)

    請(qǐng)復(fù)制以下內(nèi)容,并粘貼到命令行中。

    curl -sLk http://ompc.oss.aliyuncs.com/greys/install.sh|sh

    命令將會(huì)下載的啟動(dòng)腳本文件greys.sh到當(dāng)前目錄,你可以放在任何地方或加入到$PATH中

  • 本地安裝

    在某些情況下,目標(biāo)服務(wù)器無(wú)法訪問(wèn)遠(yuǎn)程阿里云主機(jī),此時(shí)你需要自行下載greys的安裝文件。

  • 下載最新版本的GREYS

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

    最新的***VERSION***版本請(qǐng)參考主頁(yè)信息

  • 解壓zip文件后,執(zhí)行以下命令

    cd greyssh ./install-local.sh

    即完成本地安裝。

  • 常見(jiàn)安裝問(wèn)題

    • 下載失敗

      通常這樣的原因你需要檢查你的網(wǎng)絡(luò)是否暢通,核對(duì)是否能正確訪問(wèn)這個(gè)網(wǎng)址

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

      downloading... download failed!
    • 沒(méi)有權(quán)限

      安裝腳本首先會(huì)將greys文件從阿里云服務(wù)器上下載到當(dāng)前執(zhí)行腳本的目錄,所以你必須要擁有當(dāng)前目錄的寫權(quán)限。

      permission denied, target directory is not writable.

    啟動(dòng)Greys

    • 參數(shù)說(shuō)明

      ./greys.sh <PID>[@IP:PORT]
      • PID:目標(biāo)Java進(jìn)程ID(請(qǐng)確保執(zhí)行當(dāng)前執(zhí)行命令的用戶必須有足夠的權(quán)限操作對(duì)應(yīng)的Java進(jìn)程)
      • IP:目標(biāo)服務(wù)器IP地址,當(dāng)遠(yuǎn)程服務(wù)開(kāi)啟之后,其他人可以通過(guò)指定IP的形式加載到對(duì)應(yīng)目標(biāo)機(jī)器的Java進(jìn)程中,從而實(shí)現(xiàn)遠(yuǎn)程協(xié)助。專門用于解決目標(biāo)主機(jī)賬號(hào)沒(méi)有權(quán)限,但對(duì)方兄弟卻非常需要你支援的時(shí)候。Greys允許多個(gè)用戶同時(shí)訪問(wèn),并且各自的命令不會(huì)相互干擾執(zhí)行。
      • PORT:目標(biāo)服務(wù)器端口號(hào),設(shè)計(jì)端口號(hào)的初心則是希望解決同臺(tái)機(jī)器上存在多個(gè)Java進(jìn)程需要被Greys分析的情況,默認(rèn)的端口號(hào)是3658,如果不做區(qū)分則會(huì)引起端口沖突。
    • 啟動(dòng)范例

      • 如果不指定**IP**和**PORT**,默認(rèn)是**127.0.0.1**和**3658**

        ./greys.sh 12345

        等價(jià)于

        ./greys.sh 12345@127.0.0.1

        等價(jià)于

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

      成熟的線上管理環(huán)境一般都不會(huì)直接開(kāi)放JVM部署用戶權(quán)限給你,而是通過(guò)sudo-list來(lái)控制和監(jiān)控用戶的越權(quán)操作。由于greys.sh腳本中會(huì)對(duì)當(dāng)前用戶的環(huán)境變量產(chǎn)生感知,所以需要加上-H參數(shù)

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

      Greys支持通過(guò)telnet來(lái)訪問(wèn)服務(wù)端,如果當(dāng)你手頭的機(jī)器沒(méi)有安裝Greys的客戶端,你可以簡(jiǎn)單的通過(guò)telnet命令來(lái)進(jìn)行訪問(wèn)。

      telnet 10.232.12.113 3658

      當(dāng)然了,telnet命令和Greys自帶的Console在使用友好度上還是有一定的差距,不過(guò)解決應(yīng)急之需沒(méi)有問(wèn)題。

    會(huì)話與任務(wù)

    Greys是一個(gè)C/S架構(gòu)的程序,所以當(dāng)Client訪問(wèn)到Server時(shí),Server會(huì)維護(hù)一個(gè)session(會(huì)話),以及session的心跳、超時(shí)機(jī)制。事務(wù)(Tx)機(jī)制則是建立在session的基礎(chǔ)上,所有的命令交互都會(huì)創(chuàng)建一個(gè)事務(wù),并且產(chǎn)生對(duì)應(yīng)的隊(duì)列進(jìn)行輸出緩沖。

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

    • 立即返回

      立即返回的命令定義是:敲下命令后Server端立即返回最終結(jié)果,后續(xù)無(wú)持續(xù)反饋信息,釋放Client對(duì)輸入的鎖定,重新開(kāi)放讓用戶輸入信息,比如version、sc、sm等。

    • 等待中止

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

      當(dāng)session關(guān)閉時(shí),所有掛在session的事務(wù)也會(huì)立即被關(guān)閉。

    表達(dá)式

    Greys相對(duì)于HouseMD、BTrace而言最靈活的地方就是在用表達(dá)式來(lái)靈活的支持不同的問(wèn)題排查、分析場(chǎng)景。

    表達(dá)式分兩種:條件表達(dá)式與觀察表達(dá)式

    • 條件表達(dá)式

      條件表達(dá)式用在**使用表達(dá)式表達(dá)TRUE或FALSE**的場(chǎng)景,從1.6.0.6版本開(kāi)始,trace、stack、tt、watch命令都增加了條件表達(dá)式支持。

      條件表達(dá)式將會(huì)使用greys內(nèi)置的表達(dá)式解析引擎,識(shí)別OGNL語(yǔ)法。

      特別指出的是,如果你書(shū)寫了一個(gè)錯(cuò)誤的條件表達(dá)式,greys為了兼容錯(cuò)誤會(huì)解析為FALSE。

      以下是一些條件表達(dá)式使用的例子和預(yù)測(cè)結(jié)果

      條件表達(dá)式預(yù)測(cè)結(jié)果解析結(jié)果說(shuō)明
      1==1TRUE條件表達(dá)式為真
      trueTRUE條件表達(dá)式為真
      @@@FALSE非法的條件表達(dá)式
      params==nullFALSE條件表達(dá)式為假
      falseFALSE條件表達(dá)式為假
      1!=1FALSE條件表達(dá)式為假
    • 觀察表達(dá)式

      觀察表達(dá)式用在**使用表達(dá)式表達(dá)輸出內(nèi)容**的場(chǎng)景,尤其在watch和tt命令中,觀察表達(dá)式非常至關(guān)重要。

      條件表達(dá)式將會(huì)使用greys內(nèi)置的表達(dá)式解析引擎,識(shí)別OGNL語(yǔ)法,將表達(dá)式轉(zhuǎn)換為待輸出的對(duì)象。

      以下是一些觀察表達(dá)式使用的例子

      • 字符串拼接

        clazz.name+"."+method.name
      • 數(shù)字運(yùn)算

        clazz.name.length()+method.name.length()

    表達(dá)式核心變量

    無(wú)論是匹配表達(dá)式也好、觀察表達(dá)式也罷,他們核心判斷變量都是圍繞著一個(gè)greys中的通用通知對(duì)象Advice進(jìn)行。

    它的簡(jiǎn)略代碼結(jié)構(gòu)如下

    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 }

    這里列一個(gè)表格來(lái)說(shuō)明不同變量的含義

    變量名變量解釋
    loader本次調(diào)用類所在的ClassLoader
    clazz本次調(diào)用類的Class引用
    method本次調(diào)用方法反射引用
    target本次調(diào)用類的實(shí)例
    params本次調(diào)用參數(shù)列表,這是一個(gè)數(shù)組,如果方法是無(wú)參方法則為空數(shù)組
    returnObj本次調(diào)用返回的對(duì)象。當(dāng)且僅當(dāng)isReturn==true成立時(shí)候有效,表明方法調(diào)用是以正常返回的方式結(jié)束。如果當(dāng)前方法無(wú)返回值void,則值為null
    throwExp本次調(diào)用拋出的異常。當(dāng)且僅當(dāng)isThrow==true成立時(shí)有效,表明方法調(diào)用是以拋出異常的方式結(jié)束。
    isBefore輔助判斷標(biāo)記,當(dāng)前的通知節(jié)點(diǎn)有可能是在方法一開(kāi)始就通知,此時(shí)isBefore==true成立,同時(shí)isThrow==false和isReturn==false,因?yàn)樵诜椒▌傞_(kāi)始時(shí),還無(wú)法確定方法調(diào)用將會(huì)如何結(jié)束。
    isThrow輔助判斷標(biāo)記,當(dāng)前的方法調(diào)用以拋異常的形式結(jié)束。
    isReturn輔助判斷標(biāo)記,當(dāng)前的方法調(diào)用以正常返回的形式結(jié)束。

    所有變量都可以在表達(dá)式中直接使用,如果在表達(dá)式中編寫了不符合OGNL腳本語(yǔ)法或者引入了不在表格中的變量,

    • 對(duì)條件表達(dá)式、檢索表達(dá)式而言,則一律當(dāng)成false來(lái)處理

    • 對(duì)觀察表達(dá)式而言,則放棄當(dāng)前方法調(diào)用的處理(不輸出)

    JDK類支持

    JDK的類默認(rèn)由BootstrapClassLoader負(fù)責(zé)加載,由于Greys自己也適用了大量的JDK類,所以我不建議使用Greys直接對(duì)JDK相關(guān)類進(jìn)行增強(qiáng)、代理。

    默認(rèn)而言,Greys會(huì)拒絕執(zhí)行關(guān)于JDK類的操作命令。你需顯式用options命令打開(kāi)。

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

    模式匹配

    一些命令需要對(duì)類、方法進(jìn)行模式匹配過(guò)濾,從1.5.4.6及其之后的版本之后,Greys默認(rèn)支持通配符匹配,目前僅支持*和?兩個(gè)通配符,正則表達(dá)式需要顯式指定-E參數(shù)激活。

    • 模式匹配舉例

      • 原sc命令的正則表達(dá)式匹配

        sc com\.apache\.commons\.lang\.StringUtils
      • 在1.5.4.6及其之后的版本中將會(huì)默認(rèn)使用通配符表達(dá)式

        sc com.apache.commons.lang.StringUtils sc *lang.StringUtils
      • 若想繼續(xù)使用正則表達(dá)式匹配,需要顯式-E參數(shù)激活

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

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

    Greys命令詳解

    命令清單

    命令說(shuō)明
    help查看命令的幫助文檔,每個(gè)命令和參數(shù)都有很詳細(xì)的說(shuō)明
    sc查看JVM已加載的類信息
    sm查看已加載的方法信息
    monitor方法執(zhí)行監(jiān)控
    trace渲染方法內(nèi)部調(diào)用路徑,并輸出方法路徑上的每個(gè)節(jié)點(diǎn)上耗時(shí)
    ptrace強(qiáng)化版的trace命令。通過(guò)指定渲染路徑,并可記錄下路徑中所有方法的入?yún)ⅰ⒎抵?#xff1b;與tt命令聯(lián)動(dòng)。
    watch方法執(zhí)行數(shù)據(jù)觀測(cè)
    tt方法執(zhí)行數(shù)據(jù)的時(shí)空隧道,記錄下指定方法每次調(diào)用的入?yún)⒑头祷匦畔?#xff0c;并能對(duì)這些不同的時(shí)間下調(diào)用進(jìn)行觀測(cè)
    stack輸出當(dāng)前方法被調(diào)用的調(diào)用路徑
    version輸出當(dāng)前目標(biāo)Java進(jìn)程所加載的Greys版本號(hào)
    quit退出greys客戶端
    shutdown關(guān)閉greys服務(wù)端
    reset重置增強(qiáng)類,將被greys增強(qiáng)過(guò)的類全部還原
    session查看當(dāng)前會(huì)話
    jvm查看當(dāng)前JVM的信息

    help命令

    help命令會(huì)是你第一個(gè)在Greys中使用的命令,也會(huì)是今后使用最頻繁的命令之一,當(dāng)你在使用的過(guò)程中有任何不熟悉的疑問(wèn),請(qǐng)直接help吧~

    • 查看命令清單

      進(jìn)入Greys的歡迎界面后,所有命令都可以通過(guò)help獲取幫助。此時(shí)你直接輸入一個(gè)help,Greys則會(huì)返回所有命令的大概用途介紹。

      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 | +----------+----------------------------------------------------------------------------------+ | 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,小生感激不盡!

    • 查看命令詳細(xì)幫助

      help命令同時(shí)也支持對(duì)其他命令的一個(gè)解釋說(shuō)明,比如我們鍵入help watch,greys將會(huì)返回watch命令的所有參數(shù)解釋、用法介紹等詳細(xì)信息。

      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?>
    • 幫助信息組成

      幫助文檔分成**Useage**、**Options**、**Example**三個(gè)區(qū)域,分別是**用途說(shuō)明**、**參數(shù)列表**、**實(shí)際例子**

      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?>
    • 參數(shù)選項(xiàng)說(shuō)明

      • []中的參數(shù)為選填項(xiàng),比如[d],意思是該命令可接受一個(gè)名稱為d的選填參數(shù),且不用參數(shù)值。
      • [:]中的參數(shù)則為選填,但有值的參數(shù),比如[c:]
      • class-pattern/method-pattern,這兩個(gè)參數(shù)為隱性參數(shù),即在輸入的時(shí)候不需要特意聲明參數(shù)。class-pattern為類路徑.類名稱的表達(dá)式匹配,method-pattern則為方法名的表達(dá)式匹配。

    sc命令

    “Search-Class”的簡(jiǎn)寫,這個(gè)命令能搜索出所有已經(jīng)加載到JVM中的Class信息。

    • 參數(shù)說(shuō)明

      參數(shù)名稱參數(shù)說(shuō)明
      class-pattern類名表達(dá)式匹配
      method-pattern方法名表達(dá)式匹配
      [d]輸出當(dāng)前類的詳細(xì)信息,包括這個(gè)類所加載的原始文件來(lái)源、類的聲明、加載的e2ClassLoader等詳細(xì)信息。
      如果一個(gè)類被多個(gè)ClassLoader所加載,則會(huì)出現(xiàn)多次
      [f]輸出當(dāng)前類的成員變量信息
      [E]支持正則表達(dá)式匹配
    • 使用參考

      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”的簡(jiǎn)寫,這個(gè)命令能搜索出所有已經(jīng)加載了Class信息的方法信息。

    • 參數(shù)說(shuō)明

      參數(shù)名稱參數(shù)說(shuō)明
      class-pattern類名表達(dá)式匹配
      method-pattern方法名表達(dá)式匹配
      [d]展示每個(gè)方法的詳細(xì)信息
      [E]支持正則表達(dá)式匹配
    • 使用參考

      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命令

    對(duì)匹配class-pattern/method-pattern的類.方法的調(diào)用進(jìn)行監(jiān)控。

    monitor命令是介紹到的第一個(gè)非實(shí)時(shí)返回命令,實(shí)時(shí)返回命令是輸入之后立即返回,而非實(shí)時(shí)返回的命令,則是不斷的等待目標(biāo)Java進(jìn)程返回信息,直到用戶輸入Ctrl+D為止。服務(wù)端是以任務(wù)的形式在后臺(tái)跑任務(wù),植入的代碼隨著任務(wù)的中止而被不會(huì)被執(zhí)行,所以任務(wù)關(guān)閉后,不會(huì)對(duì)原有性能產(chǎn)生太大影響,而且原則上,任何Greys的命令也不會(huì)引起任何原有業(yè)務(wù)邏輯的改變。

    • 監(jiān)控的維度說(shuō)明

      監(jiān)控項(xiàng)說(shuō)明
      timestamp時(shí)間戳
      classJava類
      method方法(構(gòu)造方法、普通方法)
      total調(diào)用次數(shù)
      success成功次數(shù)
      fail失敗次數(shù)
      rt平均RT
      fail-rate失敗率
    • 參數(shù)說(shuō)明

      方法擁有一個(gè)命名參數(shù)[c:],意思是統(tǒng)計(jì)周期(cycle of output),擁有一個(gè)整形的參數(shù)值

      參數(shù)名稱參數(shù)說(shuō)明
      [c:]統(tǒng)計(jì)周期,默認(rèn)值為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命令

    命令能主動(dòng)搜索class-pattern/method-pattern所渲染的方法調(diào)用路徑,渲染和統(tǒng)計(jì)整個(gè)調(diào)用鏈路上的所有性能開(kāi)銷和追蹤調(diào)用鏈路。

    • 參數(shù)說(shuō)明

      參數(shù)名稱參數(shù)說(shuō)明
      class-pattern類名表達(dá)式匹配
      method-pattern方法名表達(dá)式匹配
      condition-express條件表達(dá)式
      [n:]命令執(zhí)行次數(shù)
      [E]支持正則表達(dá)式匹配
    • 注意事項(xiàng)

      trace能方便的幫助你定位和發(fā)現(xiàn)因RT高而導(dǎo)致的性能問(wèn)題缺陷,但其每次只能跟蹤一級(jí)方法的調(diào)用鏈路,目前暫時(shí)沒(méi)有精力去解決往下幾個(gè)層級(jí)的調(diào)用。如果真有需求可以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()

      是不是很眼熟,沒(méi)錯(cuò),在JProfiler等收費(fèi)軟件中你曾經(jīng)見(jiàn)識(shí)類似的功能,這里你將可以通過(guò)命令就能打印出指定調(diào)用路徑。

      [10,1ms]的含義,10所代表的含義是:當(dāng)前節(jié)點(diǎn)的整體耗時(shí);1的含義是:當(dāng)前節(jié)點(diǎn)在當(dāng)前步驟的耗時(shí);兩者之間用逗號(hào)分割,單位為毫秒。

    ptrace命令

    • 命令解釋

      命令為trace命令的強(qiáng)化版,通過(guò)指定渲染路徑來(lái)完成對(duì)方法執(zhí)行路徑的渲染過(guò)程

      命令能主動(dòng)搜索tracing-path-pattern所渲染的路徑,渲染和統(tǒng)計(jì)整個(gè)調(diào)用鏈路上的所有性能開(kāi)銷和追蹤調(diào)用鏈路。

    • 參數(shù)說(shuō)明

      參數(shù)名稱參數(shù)說(shuō)明
      class-pattern類名表達(dá)式匹配
      method-pattern方法名表達(dá)式匹配
      condition-express條件表達(dá)式
      [t]記錄下渲染路徑上所有方法的入?yún)⑴c返回值,記錄下的返回值可以與tt命令聯(lián)動(dòng)
      [n:]命令執(zhí)行次數(shù)
      [E]支持正則表達(dá)式匹配
      [path:]渲染路徑表達(dá)式匹配,該參數(shù)可多次使用
      [Epath:]正則表達(dá)式渲染路徑表達(dá)式匹配,該參數(shù)可多次使用
    • 使用例子

      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 | <init> | +----------+------------+----------------------+------------+----------+----------+-----------------+--------------------------------+--------------------------------+ | 1013 | 1004 | 2015-12-06 16:46:49 | 0 | true | false | 0x943cff | Address | <init> | +----------+------------+----------------------+------------+----------+----------+-----------------+--------------------------------+--------------------------------+ | 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 | <init> | +----------+------------+----------------------+------------+----------+----------+-----------------+--------------------------------+--------------------------------+ | 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命令

    能方便的讓你觀察到指定方法的調(diào)用情況。能觀察到的范圍為:返回值、拋出異常、入?yún)?#xff0c;通過(guò)編寫OGNL表達(dá)式進(jìn)行對(duì)應(yīng)變量的查看。

    • 參數(shù)說(shuō)明

      watch的參數(shù)比較多,主要是因?yàn)樗茉?個(gè)不同的場(chǎng)景觀察對(duì)象

      參數(shù)名稱參數(shù)說(shuō)明
      class-pattern類名表達(dá)式匹配
      method-pattern方法名表達(dá)式匹配
      condition-express條件表達(dá)式
      express觀察表達(dá)式
      [b]在**方法調(diào)用之前**觀察
      [e]在**方法異常之后**觀察
      [s]在**方法返回之后**觀察
      [f]在**方法結(jié)束之后**(正常返回和異常返回)觀察

      這里重點(diǎn)要說(shuō)明的是觀察表達(dá)式,觀察表達(dá)式的構(gòu)成主要由OGNL表達(dá)式組成,所以你可以這樣寫params[0]+"$"+target,只要是一個(gè)合法的OGNL表達(dá)式,都能被正常支持。

      觀察的維度也比較多,主要體現(xiàn)在參數(shù)advice的數(shù)據(jù)結(jié)構(gòu)上。Advice參數(shù)最主要是封裝了通知節(jié)點(diǎn)的所有信息。參考表達(dá)式核心變量中關(guān)于該節(jié)點(diǎn)的描述。

    • 使用參考

      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

      這里需要說(shuō)明的一個(gè)參數(shù)x,這個(gè)參數(shù)決定了輸出的結(jié)果的層級(jí)遍歷輸出對(duì)象,當(dāng)加上這個(gè)參數(shù)之后,greys會(huì)將輸出的對(duì)象按照指定層級(jí)進(jìn)行剝開(kāi)。-x 1表明展開(kāi)第1層級(jí)。

      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命令

    時(shí)間隧道命令是我在使用watch命令進(jìn)行問(wèn)題排查的時(shí)候衍生出來(lái)的想法。watch雖然很方便和靈活,但需要提前想清楚觀察表達(dá)式的拼寫,這對(duì)排查問(wèn)題而言要求太高,因?yàn)楹芏鄷r(shí)候我們并不清楚問(wèn)題出自于何方,只能靠蛛絲馬跡進(jìn)行猜測(cè)。

    這個(gè)時(shí)候如果能記錄下當(dāng)時(shí)方法調(diào)用的所有入?yún)⒑头祷刂怠伋龅漠惓?huì)對(duì)整個(gè)問(wèn)題的思考與判斷非常有幫助。

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

    • 記錄方法的調(diào)用

      • 基本用法

        對(duì)于一個(gè)最基本的使用來(lái)說(shuō),就是記錄下當(dāng)前方法的每次調(diào)用環(huán)境現(xiàn)場(chǎng)。

        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?>
      • 命令參數(shù)解析

        • -t

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

        • -n 3

          當(dāng)你執(zhí)行一個(gè)調(diào)用量不高的方法時(shí)可能你還能有足夠的時(shí)間用CTRL+D中斷tt命令記錄的過(guò)程,但如果遇到調(diào)用量非常大的方法,瞬間就能將你的JVM內(nèi)存撐爆。

          此時(shí)你可以通過(guò)-n參數(shù)指定你需要記錄的次數(shù),當(dāng)達(dá)到記錄次數(shù)時(shí)greys會(huì)主動(dòng)中斷tt命令的記錄過(guò)程,避免人工操作無(wú)法停止的情況。

    • 表格字段說(shuō)明

      表格字段字段解釋
      INDEX時(shí)間片段記錄編號(hào),每一個(gè)編號(hào)代表著一次調(diào)用,后續(xù)tt還有很多命令都是基于此編號(hào)指定記錄操作,非常重要。
      PROCESS-ID過(guò)程編號(hào),我們認(rèn)為同一個(gè)線程的一次同步調(diào)用為一個(gè)過(guò)程
      TIMESTAMP方法執(zhí)行的本機(jī)時(shí)間,記錄了這個(gè)時(shí)間片段所發(fā)生的本機(jī)時(shí)間
      COST(ms)方法執(zhí)行的耗時(shí)
      IS-RET方法是否以正常返回的形式結(jié)束
      IS-EXP方法是否以拋異常的形式結(jié)束
      OBJECT執(zhí)行對(duì)象的hashCode(),注意,曾經(jīng)有人誤認(rèn)為是對(duì)象在JVM中的無(wú)力內(nèi)存地址,但很遺憾他不是。但他能幫助你簡(jiǎn)單的標(biāo)記當(dāng)前執(zhí)行方法的類實(shí)體
      CLASS執(zhí)行的類名
      METHOD執(zhí)行的方法名
    • 條件表達(dá)式

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

    • 似乎很難區(qū)分出重載的方法
    • 我只需要觀察特定參數(shù),但是tt卻全部都給我記錄了下來(lái)
    • 從1.6.0.6版本之后,應(yīng)廣大婦女群眾的要求,增加了條件表達(dá)式,這樣你可以通過(guò)簡(jiǎn)單的條件表達(dá)式解決上邊的困惑。

      條件表達(dá)式也是用OGNL來(lái)編寫,核心的判斷對(duì)象依然是Advice對(duì)象。

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

      • 解決方法重載

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

        通過(guò)制定參數(shù)個(gè)數(shù)的形式解決不同的方法簽名,如果參數(shù)個(gè)數(shù)一樣,你還可以這樣寫

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

      • 解決指定參數(shù)

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

    • 檢索調(diào)用記錄

      當(dāng)你用tt記錄了一大片的時(shí)間片段之后,你希望能從中篩選出自己需要的時(shí)間片段,這個(gè)時(shí)候你就需要對(duì)現(xiàn)有記錄進(jìn)行檢索。

      假設(shè)我們有這些記錄

      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方法的調(diào)用信息

      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?>

      你需要一個(gè)-s參數(shù)。同樣的,搜索表達(dá)式的核心對(duì)象依舊是Advice對(duì)象。

    • 查看調(diào)用信息

      對(duì)于具體一個(gè)時(shí)間片的信息而言,你可以通過(guò)-i參數(shù)后邊跟著對(duì)應(yīng)的INDEX編號(hào)查看到他的詳細(xì)信息。

      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?>
    • 重做一次調(diào)用

      當(dāng)你少少做了一些調(diào)整之后,你可能需要前端系統(tǒng)重新觸發(fā)一次你的調(diào)用,此時(shí)得求爺爺告奶奶的需要前端配合聯(lián)調(diào)的同學(xué)再次發(fā)起一次調(diào)用。而有些場(chǎng)景下,這個(gè)調(diào)用不是這么好觸發(fā)的。

      tt命令由于保存了當(dāng)時(shí)調(diào)用的所有現(xiàn)場(chǎng)信息,所以我們可以自己主動(dòng)對(duì)一個(gè)INDEX編號(hào)的時(shí)間片自主發(fā)起一次調(diào)用,從而解放你的溝通成本。此時(shí)你需要-p參數(shù)。

      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.run(GaServer.java:332) | | | at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) | | | at java.util.concurrent.ThreadPoolExecutor$Worker.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?>

      你會(huì)發(fā)現(xiàn)結(jié)果雖然一樣,但調(diào)用的路徑發(fā)生了變化,有原來(lái)的程序發(fā)起變成了greys自己的內(nèi)部線程發(fā)起的調(diào)用了。

      得益于Greys的ClassLoader隔離策略,Greys在內(nèi)部自己發(fā)起線程請(qǐng)求調(diào)用的時(shí)候,依然采用的是目標(biāo)類所歸屬的ClassLoader,所以在OSGI、Tomcat容器等場(chǎng)景下,Greys依然能正確的重做此次調(diào)用。

    • 需要強(qiáng)調(diào)的點(diǎn)

  • ThreadLocal信息丟失

    很多框架偷偷的將一些環(huán)境變量信息塞到了發(fā)起調(diào)用線程的ThreadLocal中,由于調(diào)用線程發(fā)生了變化,這些ThreadLocal線程信息無(wú)法通過(guò)greys保存,所以這些信息將會(huì)丟失。

    一些常見(jiàn)的CASE比如:阿里鷹眼系統(tǒng)的TraceId、阿里全鏈路平臺(tái)的壓測(cè)流量標(biāo)記位。

  • 引用的對(duì)象

    需要強(qiáng)調(diào)的是,tt命令是將當(dāng)前環(huán)境的對(duì)象引用保存起來(lái),但僅僅也只能保存一個(gè)引用而已。如果方法內(nèi)部對(duì)入?yún)⑦M(jìn)行了變更,或者返回的對(duì)象經(jīng)過(guò)了后續(xù)的處理,那么在tt查看的時(shí)候?qū)o(wú)法看到當(dāng)時(shí)最準(zhǔn)確的值。這也是為什么watch命令存在的意義。

  • stack命令

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

    • 參數(shù)說(shuō)明

      參數(shù)名稱參數(shù)說(shuō)明
      class-pattern類名表達(dá)式匹配
      method-pattern方法名表達(dá)式匹配
      condition-express條件表達(dá)式
      [n:]命令執(zhí)行次數(shù)
      [E]支持正則表達(dá)式匹配
    • 使用例子

      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)

    version命令

    這估計(jì)是最好理解的一個(gè)命令了,輸出當(dāng)前Greys的版本號(hào),這里輸出的版本號(hào)不是Client的版本,而是當(dāng)前加載到目標(biāo)Java進(jìn)程中的Greys版本。

    quit命令

    這里說(shuō)明下與shutdown命令的區(qū)別,quit命令僅僅是將客戶端關(guān)閉,而不會(huì)將目標(biāo)Java進(jìn)程中的與Greys的Server關(guān)閉。所以如果僅僅是希望簡(jiǎn)單的推出Greys控制臺(tái),則使用quit命令足矣。

    一旦Greys控制臺(tái)退出,控制臺(tái)所綁定的Session將會(huì)被關(guān)閉,Session上所有存活的事務(wù)也都會(huì)被中止并釋放。

    shutdown命令

    命令執(zhí)行后將會(huì)完成兩件事:

    • 關(guān)閉Greys在目標(biāo)Java所加載的Socket服務(wù),所占用的端口將會(huì)被釋放,同時(shí),本地的Greys控制臺(tái)也因?yàn)檫h(yuǎn)程Socket關(guān)閉而主動(dòng)退出。

    • 重置所有被Greys所增強(qiáng)的類。同reset命令。

    reset命令

    重置指定被Greys所增強(qiáng)的類。

    session命令

    會(huì)話命令是在1.6版本之后新增,整個(gè)命令的定位是維護(hù)好會(huì)話級(jí)的參數(shù)。目前可修改的就一個(gè)字符集。

    • 參數(shù)說(shuō)明

      參數(shù)名稱參數(shù)說(shuō)明
      [c:]指定會(huì)話字符集
    • 使用例子

      • 直接查看會(huì)話信息

        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命令

    查看當(dāng)前JVM的信息,無(wú)參數(shù)。

    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(TM) 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.

    常見(jiàn)問(wèn)題答疑

    安裝問(wèn)題

  • 安裝失敗

    $:>curl -sLk http://ompc.oss.aliyuncs.com/greys/install.sh|ksh downloading... greys.zip.43678 download file failed!
    • 問(wèn):

      為什么我在安裝Greys的時(shí)候失敗了?

    • 答:

      Greys的安裝腳本首先先從阿里云上下載greys.zip,然后進(jìn)行解壓、安裝。所以必須要求執(zhí)行安裝腳本的用戶必須有對(duì)當(dāng)前目錄的寫權(quán)限,一般出現(xiàn)這個(gè)問(wèn)題,可以檢查網(wǎng)絡(luò)、磁盤空間以及當(dāng)前目錄是否有寫權(quán)限。

  • 安裝目錄
    • 問(wèn):

      如果我在/tmp/目錄下執(zhí)行安裝腳本,請(qǐng)問(wèn)Greys會(huì)怎么安裝?

    • 答:

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

      • /tmp/greys/greys-agent.jar
      • /tmp/greys/greys-core.jar
      • /tmp/greys/greys.sh

        其中g(shù)reys-core.jar為greys的程序主體,啟動(dòng)類、加載類都在這個(gè)jar包當(dāng)中;greys-agent.jar則為目標(biāo)JVM的加載引導(dǎo)程序;greys.sh為一個(gè)可執(zhí)行腳本,為Greys的啟動(dòng)腳本。

  • 如何刪除
    • 問(wèn):

      安裝的Greys如何進(jìn)行刪除?

    • 答:

      Greys是一個(gè)綠色環(huán)保軟件,不會(huì)修改你的注冊(cè)表,但會(huì)在$HOME目錄下創(chuàng)建隱藏目錄$HOME/.greys,用于保存不同的版本和Jline的歷史命令,你可以直接刪除。

    啟動(dòng)問(wèn)題

  • 啟動(dòng)報(bào)Operation not permitted錯(cuò)誤
    • 問(wèn):

      我在啟動(dòng)Greys的時(shí)候報(bào)這樣的錯(cuò)誤

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

      Greys要求執(zhí)行執(zhí)行啟動(dòng)命令的用戶必須擁有和目標(biāo)進(jìn)程ID同樣的權(quán)限(在這個(gè)Case中,目標(biāo)進(jìn)程ID為11064),否則JVM將無(wú)法掛載Greys對(duì)應(yīng)的jar包

  • 啟動(dòng)報(bào)No such process錯(cuò)誤
    • 問(wèn):

      我在啟動(dòng)Greys的時(shí)候報(bào)這樣的錯(cuò)誤

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

      目標(biāo)進(jìn)程ID不存在。報(bào)這樣的錯(cuò)誤,請(qǐng)核對(duì)你的目標(biāo)進(jìn)程是否存在。

  • 啟動(dòng)報(bào)Unable to open socket file: target process not responding or HotSpot VM not loaded
  • - **問(wèn):**我在啟動(dòng)Greys的時(shí)候報(bào)這樣的錯(cuò)誤```shell$:> sudo -u admin ./greys.sh 12592密碼:start greys failed, because : Unable to open socket file: target process not responding or HotSpot VM not loaded```
    • 答:

      目標(biāo)進(jìn)程ID不是JVM進(jìn)程,或目標(biāo)JVM進(jìn)程不支持加載操作,比如低于JDK6的版本等。
      一般遇到這種問(wèn)題一定要非常小心謹(jǐn)慎的執(zhí)行,如果對(duì)方進(jìn)程編程不嚴(yán)謹(jǐn),很可能會(huì)讓對(duì)方進(jìn)程CORE掉。上次我就弄死了個(gè)nginx的worker -_-!!

  • 啟動(dòng)沒(méi)有響應(yīng)
    • 問(wèn):

      啟動(dòng)之后就什么反應(yīng)也沒(méi)有,也沒(méi)有出現(xiàn)預(yù)期的ga?>提示符

    • 答:

      很有可能你的3658端口已經(jīng)被別的進(jìn)程占據(jù),請(qǐng)核對(duì)你當(dāng)前機(jī)器所開(kāi)的端口

      netstat -anp|grep LIST

      解決方案也很簡(jiǎn)單,換個(gè)端口

      ./greys.sh 4567@127.0.0.1:6666
  • sudo -u方式啟動(dòng)報(bào)權(quán)限不足

    請(qǐng)給你的sudo命令加上-H參數(shù)

    sudo -u admin -H ./greys.sh 4567
  • 使用問(wèn)題

  • 哪些命令會(huì)導(dǎo)致性能問(wèn)題

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

  • 是否能增強(qiáng)由BootstrapClassLoader所加載的類

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

    你可以通過(guò)隱藏命令options激活這個(gè)功能

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

    接下來(lái)你可以嘗試增強(qiáng)系統(tǒng)類了

    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% | +---------------------+------------------+-----------+-------+---------+------+------+-----------+

    但我話就放在這里,隨意增強(qiáng)系統(tǒng)類。后果自負(fù)!

  • 其他問(wèn)題

  • Greys支持將信息輸出到文件中么?

    支持,不過(guò)要做一些小命令。

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

    很遺憾抱歉的說(shuō),不行。

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

    理論上Greys應(yīng)該能在各種實(shí)現(xiàn)了SUN標(biāo)準(zhǔn)的各種JVM實(shí)現(xiàn)中運(yùn)行,比如JRockit、Zing等,但我自己沒(méi)有機(jī)會(huì)嘗試,若有朋友能提供環(huán)境能進(jìn)行測(cè)試并反饋測(cè),我將不勝感激。

    JRE中由于缺少tools.jar,所以無(wú)法直接運(yùn)行Greys,需要稍作一些修改。同樣的也沒(méi)有需求要在JRE中運(yùn)行Greys,我這里也偷個(gè)懶,留給其他有需要的人來(lái)實(shí)現(xiàn)吧。

  • 程序中是否有彩蛋?

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

  • 維護(hù)信息

    當(dāng)前版本

    1.7.3.0

    項(xiàng)目維護(hù)者

    • 李夏馳
    • 姜小逸又胖了

    版本管理

    • 多版本管理

      從1.7.x.x版本開(kāi)始,greys.sh腳本支持自動(dòng)更新,在網(wǎng)絡(luò)允許的情況下會(huì)自動(dòng)監(jiān)測(cè)遠(yuǎn)程服務(wù)器上是否存在可升級(jí)的最新版本。

      若網(wǎng)絡(luò)不可達(dá)(網(wǎng)絡(luò)隔離的環(huán)境)則需要進(jìn)行本地安裝。本地安裝也一樣會(huì)納入到多版本管理識(shí)別范圍。

    • 大版本兼容性問(wèn)題

      大版本之間不做任何兼容性保障,比如1.7.x.x版本的客戶端不保證能訪問(wèn)1.6.x.x啟動(dòng)的服務(wù)端。

    版本號(hào)說(shuō)明

    主版本.大版本.小版本.漏洞修復(fù)

    • 主版本

      這個(gè)版本更新說(shuō)明程序架構(gòu)體系進(jìn)行了重大升級(jí),比如之前的0.1版升級(jí)到1.0版本,整個(gè)軟件的架構(gòu)從單機(jī)版升級(jí)到了SOCKET多機(jī)版。并將Greys的性質(zhì)進(jìn)行的確定:Java版的HouseMD,但要比前輩們更強(qiáng)。

    • 大版本

      程序的架構(gòu)設(shè)計(jì)進(jìn)行重大改造,但不影響用戶對(duì)這款軟件的定位。

    • 小版本

      增加新的命令和功能

    • 漏洞修復(fù)

      對(duì)現(xiàn)有版本進(jìn)行漏洞修復(fù)和增強(qiáng)

    版本升級(jí)說(shuō)明

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

    寫在后邊

    心路感悟

    我編寫和維護(hù)這款軟件已經(jīng)5年了,5年中Greys也從0.1版本一直重構(gòu)到現(xiàn)在的1.7。在這個(gè)過(guò)程中我得到了許多人的幫助與建議,并在年底我計(jì)劃發(fā)布2.0版本,將開(kāi)放Greys的底層通訊協(xié)議,支持websocket訪問(wèn)。

    多年的問(wèn)題排查經(jīng)驗(yàn)我沒(méi)有過(guò)多的分享,一個(gè)Java程序員個(gè)中的苦悶也無(wú)從分享,一切我都融入到了這款軟件的命令中,希望這些沉淀能幫助到可能需要到的你少走一些彎路,同時(shí)我也非常期待你們對(duì)她的反饋,這樣我將感到非常開(kāi)心和有成就感。

    幫助我們

    Greys的成長(zhǎng)需要大家的幫助。

    ?

    • 分享你使用Greys的經(jīng)驗(yàn)

      我非常希望能得到大家的使用反饋和經(jīng)驗(yàn)分享,如果你有,請(qǐng)將分享文章敏感信息脫敏之后郵件給我:oldmanpushcart@gmail.com,我將會(huì)分享給更多的同行。

    • 幫助我完善代碼或文檔

      一款軟件再好,也需要詳細(xì)的幫助文檔;一款軟件再完善,也有很多坑要埋。今天我的精力非常有限,希望能得到大家共同的幫助。

    • ?

    • 聯(lián)系我們

      ?

    有問(wèn)題阿里同事可以通過(guò)旺旺找到我,阿里外的同事可以通過(guò)我的微博聯(lián)系到我。今晚的杭州大雪紛飛,明天西湖應(yīng)該非常的美麗,大家晚安。

    菜鳥(niǎo)-杜琨(dukun@alibaba-inc.com)

    from:?https://yq.aliyun.com/articles/2390

    總結(jié)

    以上是生活随笔為你收集整理的Greys Java在线问题诊断工具的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    久久精品成人欧美大片 | 少妇性俱乐部纵欲狂欢电影 | 国产人妻大战黑人第1集 | 2019nv天堂香蕉在线观看 | 久久亚洲精品中文字幕无男同 | 国产精品资源一区二区 | 精品无码国产自产拍在线观看蜜 | 亚洲人成影院在线观看 | 无码精品国产va在线观看dvd | 国产农村乱对白刺激视频 | 亚洲综合无码久久精品综合 | 久久久久99精品国产片 | 东京热无码av男人的天堂 | 窝窝午夜理论片影院 | 18黄暴禁片在线观看 | 天堂久久天堂av色综合 | 久久国产精品_国产精品 | 国产小呦泬泬99精品 | 奇米影视7777久久精品人人爽 | 东京热无码av男人的天堂 | 无码国产色欲xxxxx视频 | 婷婷五月综合缴情在线视频 | 在线播放亚洲第一字幕 | 日韩av无码一区二区三区不卡 | 欧美阿v高清资源不卡在线播放 | 真人与拘做受免费视频 | 午夜精品一区二区三区在线观看 | 无遮无挡爽爽免费视频 | 国产亚洲精品精品国产亚洲综合 | 奇米影视7777久久精品 | 国产精品第一区揄拍无码 | 色综合久久久久综合一本到桃花网 | 婷婷五月综合缴情在线视频 | 亚洲熟熟妇xxxx | 国产99久久精品一区二区 | 激情综合激情五月俺也去 | 亚洲色欲久久久综合网东京热 | 精品aⅴ一区二区三区 | 色窝窝无码一区二区三区色欲 | 四虎永久在线精品免费网址 | av无码电影一区二区三区 | 偷窥日本少妇撒尿chinese | 亚洲欧美日韩成人高清在线一区 | 少妇被粗大的猛进出69影院 | 亚洲综合伊人久久大杳蕉 | 亚洲国产精品无码一区二区三区 | aⅴ亚洲 日韩 色 图网站 播放 | 成人欧美一区二区三区黑人免费 | 日韩欧美中文字幕在线三区 | 亚洲午夜久久久影院 | 成人免费视频在线观看 | 狠狠色色综合网站 | av无码电影一区二区三区 | 99久久婷婷国产综合精品青草免费 | 麻豆国产丝袜白领秘书在线观看 | 少妇厨房愉情理9仑片视频 | 亚洲春色在线视频 | 99精品无人区乱码1区2区3区 | 国产美女极度色诱视频www | 亚洲成在人网站无码天堂 | 成人一在线视频日韩国产 | 亚洲 a v无 码免 费 成 人 a v | 荫蒂添的好舒服视频囗交 | 97精品人妻一区二区三区香蕉 | 乱人伦中文视频在线观看 | 国产精品鲁鲁鲁 | 国产99久久精品一区二区 | 中文字幕日韩精品一区二区三区 | 久青草影院在线观看国产 | 久久99精品久久久久久 | 任你躁国产自任一区二区三区 | 蜜臀av在线播放 久久综合激激的五月天 | 无码人妻丰满熟妇区毛片18 | 欧美兽交xxxx×视频 | 久久久久se色偷偷亚洲精品av | 久久人人97超碰a片精品 | 亚洲人成影院在线观看 | 国产成人无码av在线影院 | 水蜜桃av无码 | 黑人大群体交免费视频 | 少妇性l交大片欧洲热妇乱xxx | 国产卡一卡二卡三 | 成人无码视频在线观看网站 | 无码一区二区三区在线观看 | 国产香蕉97碰碰久久人人 | a片在线免费观看 | 麻豆国产97在线 | 欧洲 | 伦伦影院午夜理论片 | 日本爽爽爽爽爽爽在线观看免 | 日本精品人妻无码免费大全 | 国产国产精品人在线视 | 色窝窝无码一区二区三区色欲 | 少妇的肉体aa片免费 | 久9re热视频这里只有精品 | 最新版天堂资源中文官网 | 欧美乱妇无乱码大黄a片 | 俄罗斯老熟妇色xxxx | 国产精品久久久久久久9999 | 亚洲爆乳无码专区 | 久久精品视频在线看15 | 夜夜高潮次次欢爽av女 | 欧美xxxxx精品 | 日日噜噜噜噜夜夜爽亚洲精品 | 国产成人无码a区在线观看视频app | 国产午夜亚洲精品不卡下载 | 熟女少妇人妻中文字幕 | 99精品久久毛片a片 | 亚洲 a v无 码免 费 成 人 a v | 亚洲无人区一区二区三区 | 中文字幕无码视频专区 | 小sao货水好多真紧h无码视频 | 成人免费视频在线观看 | 精品无码一区二区三区爱欲 | 中文精品久久久久人妻不卡 | 无码纯肉视频在线观看 | 伦伦影院午夜理论片 | 国产色xx群视频射精 | 国内精品一区二区三区不卡 | 特大黑人娇小亚洲女 | 97夜夜澡人人爽人人喊中国片 | 377p欧洲日本亚洲大胆 | 成人aaa片一区国产精品 | 精品久久8x国产免费观看 | 女人被爽到呻吟gif动态图视看 | 人人妻人人澡人人爽欧美一区九九 | 自拍偷自拍亚洲精品10p | 亚洲大尺度无码无码专区 | 日日鲁鲁鲁夜夜爽爽狠狠 | 激情内射日本一区二区三区 | 亚洲 激情 小说 另类 欧美 | 无码av最新清无码专区吞精 | 性色av无码免费一区二区三区 | 性欧美大战久久久久久久 | а√天堂www在线天堂小说 | 人妻aⅴ无码一区二区三区 | 久久成人a毛片免费观看网站 | 98国产精品综合一区二区三区 | 97资源共享在线视频 | 欧美性生交活xxxxxdddd | 99re在线播放 | 无码av最新清无码专区吞精 | 久久综合给合久久狠狠狠97色 | av小次郎收藏 | 性欧美videos高清精品 | 国产精品人人爽人人做我的可爱 | 国产乡下妇女做爰 | 亚洲熟女一区二区三区 | 中国大陆精品视频xxxx | 欧美乱妇无乱码大黄a片 | 久久久久成人片免费观看蜜芽 | 国产午夜精品一区二区三区嫩草 | 国产亚洲精品久久久ai换 | 亚洲一区二区三区含羞草 | 中文字幕人妻丝袜二区 | 性做久久久久久久久 | 日韩无套无码精品 | 久久伊人色av天堂九九小黄鸭 | 国产精品嫩草久久久久 | 久久综合九色综合97网 | 国产午夜精品一区二区三区嫩草 | 国产卡一卡二卡三 | 人人妻人人澡人人爽欧美一区九九 | 荫蒂添的好舒服视频囗交 | 中文字幕无码av波多野吉衣 | 97色伦图片97综合影院 | 日日躁夜夜躁狠狠躁 | 爽爽影院免费观看 | 无码任你躁久久久久久久 | 一个人免费观看的www视频 | 欧美日本精品一区二区三区 | 久久久国产一区二区三区 | 骚片av蜜桃精品一区 | 国产成人无码午夜视频在线观看 | 丰满妇女强制高潮18xxxx | 成年美女黄网站色大免费全看 | 国产午夜精品一区二区三区嫩草 | 日本精品久久久久中文字幕 | 欧美日本免费一区二区三区 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 国产 精品 自在自线 | 欧美国产亚洲日韩在线二区 | av香港经典三级级 在线 | 色 综合 欧美 亚洲 国产 | 曰韩无码二三区中文字幕 | 国产人妻大战黑人第1集 | 国产莉萝无码av在线播放 | 国产情侣作爱视频免费观看 | 99久久人妻精品免费一区 | 亚洲国产精品久久久天堂 | 久久久久成人精品免费播放动漫 | 久久综合九色综合97网 | 亚洲色欲久久久综合网东京热 | 亚洲精品综合五月久久小说 | 无码精品国产va在线观看dvd | 国精品人妻无码一区二区三区蜜柚 | 国产精品美女久久久久av爽李琼 | 久久这里只有精品视频9 | 一二三四在线观看免费视频 | 久久天天躁狠狠躁夜夜免费观看 | 精品国产成人一区二区三区 | 日本在线高清不卡免费播放 | 欧美日韩在线亚洲综合国产人 | 秋霞成人午夜鲁丝一区二区三区 | 国产超碰人人爽人人做人人添 | 欧美国产日韩久久mv | 人妻天天爽夜夜爽一区二区 | 久久久精品成人免费观看 | 欧美亚洲日韩国产人成在线播放 | 小泽玛莉亚一区二区视频在线 | 久久精品国产日本波多野结衣 | 18黄暴禁片在线观看 | 无码精品人妻一区二区三区av | 真人与拘做受免费视频 | 亚洲精品一区二区三区大桥未久 | 亚洲国产精品一区二区第一页 | 日韩精品a片一区二区三区妖精 | 国产精品欧美成人 | 人人妻人人澡人人爽精品欧美 | 国产精品a成v人在线播放 | 中文字幕无码av激情不卡 | 久久久精品国产sm最大网站 | 亚洲成色在线综合网站 | 国产精品久久国产三级国 | 无码帝国www无码专区色综合 | 国产亚洲视频中文字幕97精品 | 国产免费久久久久久无码 | 亚洲精品一区二区三区大桥未久 | 日本熟妇乱子伦xxxx | 亚洲熟悉妇女xxx妇女av | 欧美激情一区二区三区成人 | 亚洲日本va中文字幕 | 亚洲乱码日产精品bd | 无码人妻出轨黑人中文字幕 | 成人女人看片免费视频放人 | 真人与拘做受免费视频 | 色婷婷香蕉在线一区二区 | 天海翼激烈高潮到腰振不止 | 熟妇人妻无码xxx视频 | 久久久中文久久久无码 | 国产亚洲美女精品久久久2020 | 国产色视频一区二区三区 | 撕开奶罩揉吮奶头视频 | 精品久久久久久亚洲精品 | 亚洲第一无码av无码专区 | 午夜福利试看120秒体验区 | 无码乱肉视频免费大全合集 | 精品一二三区久久aaa片 | 久久久久亚洲精品中文字幕 | 久久精品人人做人人综合试看 | 2019午夜福利不卡片在线 | 麻花豆传媒剧国产免费mv在线 | 性色欲网站人妻丰满中文久久不卡 | 国产av剧情md精品麻豆 | 国产精品免费大片 | 国产免费久久久久久无码 | 色 综合 欧美 亚洲 国产 | 国产性生大片免费观看性 | 一本久久a久久精品vr综合 | 久久精品国产一区二区三区肥胖 | 久久人人爽人人爽人人片ⅴ | 欧美人妻一区二区三区 | 午夜性刺激在线视频免费 | 欧美第一黄网免费网站 | 日韩精品无码一区二区中文字幕 | 久久亚洲中文字幕精品一区 | 在线播放无码字幕亚洲 | 成人性做爰aaa片免费看 | 东京热无码av男人的天堂 | 成人亚洲精品久久久久 | 老子影院午夜伦不卡 | 欧美成人免费全部网站 | 国产精品多人p群无码 | 人妻少妇被猛烈进入中文字幕 | 无码纯肉视频在线观看 | 欧美性生交xxxxx久久久 | 久久精品国产日本波多野结衣 | 高清不卡一区二区三区 | 久久久精品国产sm最大网站 | 99久久人妻精品免费二区 | 成在人线av无码免观看麻豆 | 风流少妇按摩来高潮 | 永久免费精品精品永久-夜色 | 亚洲一区二区三区 | 国产熟女一区二区三区四区五区 | 老熟妇乱子伦牲交视频 | 又大又硬又爽免费视频 | 精品国精品国产自在久国产87 | 国产莉萝无码av在线播放 | 在线精品国产一区二区三区 | 18精品久久久无码午夜福利 | 内射爽无广熟女亚洲 | 搡女人真爽免费视频大全 | aⅴ亚洲 日韩 色 图网站 播放 | 久久精品99久久香蕉国产色戒 | 国产精品毛多多水多 | 国产精品无码一区二区桃花视频 | 国产成人无码av在线影院 | 99国产精品白浆在线观看免费 | 成人无码精品1区2区3区免费看 | 成人影院yy111111在线观看 | 精品无人国产偷自产在线 | 日本免费一区二区三区最新 | 欧美激情一区二区三区成人 | 国产精品久久久av久久久 | 国产成人亚洲综合无码 | 国产一区二区三区四区五区加勒比 | 99麻豆久久久国产精品免费 | 亚洲午夜无码久久 | 亚洲日韩av片在线观看 | 97久久国产亚洲精品超碰热 | 午夜男女很黄的视频 | 亚洲午夜福利在线观看 | 最新版天堂资源中文官网 | 国产免费久久久久久无码 | 国产性生大片免费观看性 | 无码吃奶揉捏奶头高潮视频 | 亚洲色无码一区二区三区 | 欧美真人作爱免费视频 | 在线欧美精品一区二区三区 | 未满成年国产在线观看 | 丝袜美腿亚洲一区二区 | 日日噜噜噜噜夜夜爽亚洲精品 | 强伦人妻一区二区三区视频18 | 鲁鲁鲁爽爽爽在线视频观看 | 日本护士xxxxhd少妇 | 亚洲日韩中文字幕在线播放 | 国产精品丝袜黑色高跟鞋 | 狠狠色色综合网站 | 久久久久亚洲精品男人的天堂 | 国产亚洲精品久久久久久久 | 国产精品高潮呻吟av久久4虎 | 中文字幕亚洲情99在线 | 77777熟女视频在线观看 а天堂中文在线官网 | 无码国产激情在线观看 | 亚洲色成人中文字幕网站 | 精品久久久久香蕉网 | 亚洲中文字幕无码一久久区 | 青青久在线视频免费观看 | 久久这里只有精品视频9 | 欧美人与物videos另类 | 亚洲娇小与黑人巨大交 | 色婷婷欧美在线播放内射 | 又紧又大又爽精品一区二区 | 国产另类ts人妖一区二区 | 亚洲 日韩 欧美 成人 在线观看 | 久久久中文字幕日本无吗 | 少妇性荡欲午夜性开放视频剧场 | 久久久国产一区二区三区 | 成年女人永久免费看片 | 亚洲精品一区三区三区在线观看 | 蜜臀av在线播放 久久综合激激的五月天 | 老司机亚洲精品影院 | 天堂一区人妻无码 | 久久综合网欧美色妞网 | 国产激情综合五月久久 | 少妇人妻偷人精品无码视频 | 国产精品99爱免费视频 | 欧美喷潮久久久xxxxx | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 欧洲美熟女乱又伦 | 好屌草这里只有精品 | 无码一区二区三区在线 | 国产无遮挡又黄又爽又色 | 欧美老妇交乱视频在线观看 | 日本成熟视频免费视频 | 中文字幕乱码亚洲无线三区 | 色一情一乱一伦一视频免费看 | 国产精品亚洲五月天高清 | 青草视频在线播放 | 狠狠色欧美亚洲狠狠色www | 丰满人妻精品国产99aⅴ | 中文字幕色婷婷在线视频 | 国产人妻精品午夜福利免费 | 久久久精品成人免费观看 | 国产精品理论片在线观看 | 亚洲精品久久久久久久久久久 | 超碰97人人射妻 | 高清国产亚洲精品自在久久 | 国产香蕉尹人视频在线 | 荫蒂被男人添的好舒服爽免费视频 | 欧美亚洲日韩国产人成在线播放 | 人人澡人摸人人添 | 欧美 亚洲 国产 另类 | 国精产品一区二区三区 | 欧美野外疯狂做受xxxx高潮 | 久久综合久久自在自线精品自 | 5858s亚洲色大成网站www | 任你躁在线精品免费 | 久久精品人人做人人综合试看 | 亚洲精品国产精品乱码不卡 | 狠狠色噜噜狠狠狠7777奇米 | 强伦人妻一区二区三区视频18 | 亚洲欧美日韩国产精品一区二区 | 曰韩无码二三区中文字幕 | 中文字幕日产无线码一区 | 国内丰满熟女出轨videos | 一本色道婷婷久久欧美 | 老子影院午夜伦不卡 | 日日干夜夜干 | 少妇高潮喷潮久久久影院 | 十八禁视频网站在线观看 | 日本xxxx色视频在线观看免费 | 伊人色综合久久天天小片 | 国产欧美精品一区二区三区 | 少妇人妻偷人精品无码视频 | 欧美老熟妇乱xxxxx | 内射欧美老妇wbb | 伦伦影院午夜理论片 | 亚洲精品国产a久久久久久 | 国产熟妇另类久久久久 | 亚洲中文字幕成人无码 | 亚洲国产欧美日韩精品一区二区三区 | 无码精品国产va在线观看dvd | 国内精品人妻无码久久久影院蜜桃 | 欧美亚洲日韩国产人成在线播放 | 夜夜夜高潮夜夜爽夜夜爰爰 | 久9re热视频这里只有精品 | 性欧美熟妇videofreesex | www一区二区www免费 | 女人和拘做爰正片视频 | 在线视频网站www色 | 久久97精品久久久久久久不卡 | 国产sm调教视频在线观看 | 久久亚洲精品中文字幕无男同 | 小sao货水好多真紧h无码视频 | 午夜免费福利小电影 | 夫妻免费无码v看片 | 亚洲欧美综合区丁香五月小说 | 国产成人无码午夜视频在线观看 | 日本丰满护士爆乳xxxx | 色婷婷久久一区二区三区麻豆 | 亚洲の无码国产の无码影院 | 国产人妻精品一区二区三区 | 亚洲精品美女久久久久久久 | 亚洲国产精品久久久天堂 | 久热国产vs视频在线观看 | 夜夜躁日日躁狠狠久久av | 男女超爽视频免费播放 | 国产精品99久久精品爆乳 | 亚洲爆乳大丰满无码专区 | 国产精品资源一区二区 | 无码帝国www无码专区色综合 | 国产三级精品三级男人的天堂 | 国产真实伦对白全集 | 99久久精品午夜一区二区 | 欧美国产日产一区二区 | 99精品国产综合久久久久五月天 | aⅴ亚洲 日韩 色 图网站 播放 | 麻豆av传媒蜜桃天美传媒 | 无码纯肉视频在线观看 | 天堂久久天堂av色综合 | 红桃av一区二区三区在线无码av | 亚洲精品国偷拍自产在线麻豆 | 午夜精品一区二区三区在线观看 | 日本高清一区免费中文视频 | 大肉大捧一进一出视频出来呀 | 青春草在线视频免费观看 | 成在人线av无码免观看麻豆 | 无码精品人妻一区二区三区av | 日韩 欧美 动漫 国产 制服 | 老子影院午夜精品无码 | 奇米影视888欧美在线观看 | 婷婷综合久久中文字幕蜜桃三电影 | 国产 精品 自在自线 | 国内精品人妻无码久久久影院 | 免费观看的无遮挡av | 天天躁日日躁狠狠躁免费麻豆 | 精品国产一区二区三区四区在线看 | 国产内射爽爽大片视频社区在线 | 在线播放免费人成毛片乱码 | 无套内射视频囯产 | 国产精品办公室沙发 | 少女韩国电视剧在线观看完整 | 强奷人妻日本中文字幕 | 帮老师解开蕾丝奶罩吸乳网站 | 人人超人人超碰超国产 | 一本无码人妻在中文字幕免费 | 又大又紧又粉嫩18p少妇 | 西西人体www44rt大胆高清 | 老子影院午夜精品无码 | 久久久www成人免费毛片 | 国产精品高潮呻吟av久久4虎 | 天天做天天爱天天爽综合网 | 国产av人人夜夜澡人人爽麻豆 | 强辱丰满人妻hd中文字幕 | 日韩 欧美 动漫 国产 制服 | 高清不卡一区二区三区 | 天堂а√在线地址中文在线 | 日韩欧美中文字幕公布 | 国产肉丝袜在线观看 | 狠狠cao日日穞夜夜穞av | 国产舌乚八伦偷品w中 | 少妇的肉体aa片免费 | 国产精品久久国产三级国 | v一区无码内射国产 | 18无码粉嫩小泬无套在线观看 | 又紧又大又爽精品一区二区 | 夜精品a片一区二区三区无码白浆 | 美女毛片一区二区三区四区 | 激情亚洲一区国产精品 | 性欧美大战久久久久久久 | 日本大乳高潮视频在线观看 | 狂野欧美性猛xxxx乱大交 | 女人被男人躁得好爽免费视频 | 久久精品女人天堂av免费观看 | 亚洲春色在线视频 | 国产精品美女久久久 | 国产色在线 | 国产 | 特大黑人娇小亚洲女 | 中文字幕乱码人妻二区三区 | 久久国产精品_国产精品 | 国产超级va在线观看视频 | 亚洲色www成人永久网址 | 色 综合 欧美 亚洲 国产 | 亚洲综合精品香蕉久久网 | 欧洲精品码一区二区三区免费看 | 国产精品第一区揄拍无码 | 国产亚洲欧美在线专区 | 狂野欧美激情性xxxx | 精品无码一区二区三区爱欲 | 国产麻豆精品精东影业av网站 | 久久99精品国产.久久久久 | 久久国内精品自在自线 | 97夜夜澡人人爽人人喊中国片 | 中文字幕av无码一区二区三区电影 | 免费视频欧美无人区码 | 亚洲爆乳精品无码一区二区三区 | 99精品国产综合久久久久五月天 | 无码国模国产在线观看 | 亚洲国产精品久久人人爱 | 国产乱人伦偷精品视频 | 动漫av一区二区在线观看 | 欧美性生交xxxxx久久久 | 中文无码精品a∨在线观看不卡 | 国产电影无码午夜在线播放 | 国内少妇偷人精品视频免费 | 少妇性荡欲午夜性开放视频剧场 | 少妇久久久久久人妻无码 | 最近免费中文字幕中文高清百度 | 国产精品第一国产精品 | 精品无码av一区二区三区 | 国产精品高潮呻吟av久久 | 狠狠色噜噜狠狠狠狠7777米奇 | yw尤物av无码国产在线观看 | 久久久国产精品无码免费专区 | 51国偷自产一区二区三区 | 久久精品国产日本波多野结衣 | 免费观看黄网站 | 日日橹狠狠爱欧美视频 | 人妻无码αv中文字幕久久琪琪布 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 久久久久国色av免费观看性色 | 76少妇精品导航 | 丰满人妻精品国产99aⅴ | 亚洲精品www久久久 | 日本大香伊一区二区三区 | 国产人妻精品一区二区三区不卡 | 国产suv精品一区二区五 | 日韩成人一区二区三区在线观看 | 沈阳熟女露脸对白视频 | 欧美日韩精品 | 久久zyz资源站无码中文动漫 | 久久国语露脸国产精品电影 | 无码任你躁久久久久久久 | 图片小说视频一区二区 | 国产三级精品三级男人的天堂 | 免费无码av一区二区 | 亚洲午夜无码久久 | 狠狠噜狠狠狠狠丁香五月 | 噜噜噜亚洲色成人网站 | 日韩欧美群交p片內射中文 | 免费观看黄网站 | 人妻少妇精品无码专区二区 | 精品熟女少妇av免费观看 | 中文无码精品a∨在线观看不卡 | 国产真实乱对白精彩久久 | 国产成人精品一区二区在线小狼 | 久久久久国色av免费观看性色 | 熟妇女人妻丰满少妇中文字幕 | 国产偷自视频区视频 | 亚洲の无码国产の无码步美 | 国产精品视频免费播放 | 亚洲狠狠色丁香婷婷综合 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 人人妻人人藻人人爽欧美一区 | 欧美成人免费全部网站 | 久久久久亚洲精品中文字幕 | 人妻aⅴ无码一区二区三区 | 天堂亚洲免费视频 | 亚洲精品成人福利网站 | 无码人妻丰满熟妇区五十路百度 | 日韩欧美群交p片內射中文 | 狠狠色丁香久久婷婷综合五月 | 曰韩少妇内射免费播放 | 香港三级日本三级妇三级 | 亚洲の无码国产の无码影院 | 十八禁真人啪啪免费网站 | 日本爽爽爽爽爽爽在线观看免 | 精品亚洲成av人在线观看 | 九九热爱视频精品 | 天天摸天天碰天天添 | 国产亚洲精品久久久久久大师 | 成人av无码一区二区三区 | 成在人线av无码免费 | 黑人巨大精品欧美黑寡妇 | 日产国产精品亚洲系列 | 日韩亚洲欧美中文高清在线 | 国产乱人伦av在线无码 | 亚洲理论电影在线观看 | 无套内谢老熟女 | aⅴ亚洲 日韩 色 图网站 播放 | 99久久人妻精品免费一区 | 精品国偷自产在线视频 | 18禁止看的免费污网站 | 丰满肥臀大屁股熟妇激情视频 | 中文字幕精品av一区二区五区 | 成人女人看片免费视频放人 | 欧美日韩色另类综合 | 久久99精品国产麻豆蜜芽 | 精品国产aⅴ无码一区二区 | 一本无码人妻在中文字幕免费 | 国产情侣作爱视频免费观看 | 亚洲国产欧美国产综合一区 | 国产人妻久久精品二区三区老狼 | 久久精品国产精品国产精品污 | 久久精品国产99久久6动漫 | 正在播放老肥熟妇露脸 | 国产在热线精品视频 | 人妻尝试又大又粗久久 | av无码电影一区二区三区 | 女人被爽到呻吟gif动态图视看 | 成熟妇人a片免费看网站 | 日韩成人一区二区三区在线观看 | 亚洲成av人在线观看网址 | 国产精品无套呻吟在线 | 欧美三级a做爰在线观看 | 国产无套粉嫩白浆在线 | 色婷婷香蕉在线一区二区 | 国产熟妇高潮叫床视频播放 | 中文字幕av无码一区二区三区电影 | 国产黑色丝袜在线播放 | 成年女人永久免费看片 | 国产午夜精品一区二区三区嫩草 | 18无码粉嫩小泬无套在线观看 | 欧美成人免费全部网站 | 亚洲精品一区三区三区在线观看 | 中文字幕乱码人妻无码久久 | 久久久av男人的天堂 | 国产人妻大战黑人第1集 | 真人与拘做受免费视频 | 自拍偷自拍亚洲精品10p | 最新国产乱人伦偷精品免费网站 | 国产一区二区不卡老阿姨 | 性生交大片免费看l | 国产免费久久精品国产传媒 | 亚洲无人区午夜福利码高清完整版 | 少妇久久久久久人妻无码 | 国产精品无码永久免费888 | 97无码免费人妻超级碰碰夜夜 | 久久人人爽人人爽人人片av高清 | 久久久av男人的天堂 | 国产精品鲁鲁鲁 | 99国产精品白浆在线观看免费 | 丝袜美腿亚洲一区二区 | 精品久久久久久人妻无码中文字幕 | 日韩少妇白浆无码系列 | 东京无码熟妇人妻av在线网址 | 色一情一乱一伦 | 天天摸天天碰天天添 | 欧美成人家庭影院 | 久久精品人人做人人综合试看 | 99久久99久久免费精品蜜桃 | 国产亚洲人成在线播放 | 鲁大师影院在线观看 | 永久免费观看美女裸体的网站 | 亚洲人成网站色7799 | 99精品国产综合久久久久五月天 | 内射巨臀欧美在线视频 | 无码纯肉视频在线观看 | 国产情侣作爱视频免费观看 | 国产精品久久久久久久影院 | 欧美阿v高清资源不卡在线播放 | 日韩视频 中文字幕 视频一区 | 亚洲码国产精品高潮在线 | 2020久久超碰国产精品最新 | 国产人成高清在线视频99最全资源 | 色一情一乱一伦一视频免费看 | 亚洲欧美国产精品专区久久 | 国产精品99爱免费视频 | 精品夜夜澡人妻无码av蜜桃 | √天堂中文官网8在线 | 欧美真人作爱免费视频 | 日本精品久久久久中文字幕 | 蜜桃视频韩日免费播放 | 国产高清av在线播放 | 欧美丰满老熟妇xxxxx性 | 夜先锋av资源网站 | 亚洲日本一区二区三区在线 | 夜精品a片一区二区三区无码白浆 | 国产午夜福利100集发布 | 国产激情综合五月久久 | 国产无套内射久久久国产 | 黑人巨大精品欧美黑寡妇 | 99riav国产精品视频 | 国产又爽又猛又粗的视频a片 | 国产亚洲精品久久久久久久 | 国产精品无码永久免费888 | 狂野欧美性猛交免费视频 | 欧美熟妇另类久久久久久不卡 | 日韩欧美中文字幕在线三区 | 高清国产亚洲精品自在久久 | 色欲综合久久中文字幕网 | 久久久久久a亚洲欧洲av冫 | 亚洲成在人网站无码天堂 | v一区无码内射国产 | 亚洲综合色区中文字幕 | 国产成人无码av片在线观看不卡 | 精品水蜜桃久久久久久久 | 色狠狠av一区二区三区 | 中文字幕乱码人妻二区三区 | 国内综合精品午夜久久资源 | 无码午夜成人1000部免费视频 | 国产精品手机免费 | 久久国产精品精品国产色婷婷 | 亚洲精品美女久久久久久久 | 四虎影视成人永久免费观看视频 | www一区二区www免费 | 日韩欧美中文字幕在线三区 | 综合人妻久久一区二区精品 | 午夜精品久久久久久久久 | 少妇无套内谢久久久久 | 欧美老妇交乱视频在线观看 | 狂野欧美激情性xxxx | 福利一区二区三区视频在线观看 | 国产热a欧美热a在线视频 | 欧美一区二区三区 | 丝袜美腿亚洲一区二区 | 中国女人内谢69xxxx | 亚洲熟妇色xxxxx欧美老妇 | 乱人伦人妻中文字幕无码久久网 | 国产精华av午夜在线观看 | 牲交欧美兽交欧美 | 亚洲aⅴ无码成人网站国产app | 亚洲一区二区三区偷拍女厕 | 国产精品a成v人在线播放 | 中文无码成人免费视频在线观看 | 精品一区二区三区无码免费视频 | 国产麻豆精品精东影业av网站 | 人人妻人人澡人人爽欧美一区九九 | 丰满护士巨好爽好大乳 | 一本大道久久东京热无码av | 精品一区二区三区无码免费视频 | 精品偷拍一区二区三区在线看 | 久久国产精品精品国产色婷婷 | 国产人妻大战黑人第1集 | √8天堂资源地址中文在线 | 88国产精品欧美一区二区三区 | 狠狠噜狠狠狠狠丁香五月 | 色综合久久88色综合天天 | 黑人巨大精品欧美黑寡妇 | 少妇高潮喷潮久久久影院 | 国产精品久久久久久亚洲毛片 | 美女毛片一区二区三区四区 | 国产成人一区二区三区在线观看 | 色欲久久久天天天综合网精品 | 欧美精品无码一区二区三区 | 亚洲色无码一区二区三区 | 中文字幕 亚洲精品 第1页 | www国产亚洲精品久久网站 | 999久久久国产精品消防器材 | 亚洲精品午夜国产va久久成人 | 国产亚洲欧美日韩亚洲中文色 | 自拍偷自拍亚洲精品被多人伦好爽 | 亚洲精品国产第一综合99久久 | 人妻aⅴ无码一区二区三区 | 亚洲精品综合一区二区三区在线 | 久久亚洲a片com人成 | 国产成人综合色在线观看网站 | 青青青手机频在线观看 | 鲁一鲁av2019在线 | 波多野结衣一区二区三区av免费 | 无码一区二区三区在线观看 | 扒开双腿疯狂进出爽爽爽视频 | 亚洲欧美中文字幕5发布 | 精品久久久无码人妻字幂 | 亚洲欧洲无卡二区视頻 | 日本丰满熟妇videos | 日韩亚洲欧美中文高清在线 | 国产精品丝袜黑色高跟鞋 | 九九热爱视频精品 | 国精品人妻无码一区二区三区蜜柚 | 国产深夜福利视频在线 | 亚洲天堂2017无码中文 | 国产一区二区三区精品视频 | 全球成人中文在线 | 亚洲中文无码av永久不收费 | 国产精品嫩草久久久久 | 精品一区二区三区无码免费视频 | 天干天干啦夜天干天2017 | 欧美人妻一区二区三区 | 亚洲爆乳精品无码一区二区三区 | 欧美精品在线观看 | 国产内射爽爽大片视频社区在线 | 婷婷综合久久中文字幕蜜桃三电影 | 亚洲国产欧美日韩精品一区二区三区 | 人人超人人超碰超国产 | 久久精品无码一区二区三区 | 玩弄中年熟妇正在播放 | 国产人妻人伦精品1国产丝袜 | 精品久久综合1区2区3区激情 | 欧洲欧美人成视频在线 | 老头边吃奶边弄进去呻吟 | 久久精品丝袜高跟鞋 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 久久久久免费精品国产 | 无码帝国www无码专区色综合 | 日本熟妇人妻xxxxx人hd | 国产成人精品一区二区在线小狼 | 亚洲日本在线电影 | 全黄性性激高免费视频 | 伊人久久大香线蕉亚洲 | 99精品国产综合久久久久五月天 | 天天躁日日躁狠狠躁免费麻豆 | 亚洲欧美精品aaaaaa片 | 精品无码国产自产拍在线观看蜜 | 偷窥村妇洗澡毛毛多 | 国产一区二区三区日韩精品 | 国产成人综合色在线观看网站 | 波多野结衣av一区二区全免费观看 | 麻豆成人精品国产免费 | 性欧美熟妇videofreesex | 最近免费中文字幕中文高清百度 | 1000部啪啪未满十八勿入下载 | 精品夜夜澡人妻无码av蜜桃 | 欧美日韩一区二区三区自拍 | 亚洲一区二区三区四区 | 午夜丰满少妇性开放视频 | 国产网红无码精品视频 | 国产精品无套呻吟在线 | 成人片黄网站色大片免费观看 | 久久zyz资源站无码中文动漫 | 国产成人精品一区二区在线小狼 | 黑人巨大精品欧美一区二区 | 久久 国产 尿 小便 嘘嘘 | 18精品久久久无码午夜福利 | 自拍偷自拍亚洲精品10p | 成人欧美一区二区三区黑人免费 | 天天爽夜夜爽夜夜爽 | 国产成人无码专区 | 欧美性生交xxxxx久久久 | 国产三级久久久精品麻豆三级 | 丰满少妇女裸体bbw | 无码福利日韩神码福利片 | 欧美性猛交xxxx富婆 | 精品久久久无码人妻字幂 | 又紧又大又爽精品一区二区 | 亚洲天堂2017无码 | 国产午夜福利亚洲第一 | 国产精品18久久久久久麻辣 | 久久久久久a亚洲欧洲av冫 | 少妇无套内谢久久久久 | 国内精品一区二区三区不卡 | 九一九色国产 | 久久成人a毛片免费观看网站 | 精品成在人线av无码免费看 | 精品一区二区不卡无码av | 国产乱子伦视频在线播放 | 久久人人爽人人爽人人片ⅴ | 东京热无码av男人的天堂 | 国产精品爱久久久久久久 | 玩弄人妻少妇500系列视频 | 国产精品人妻一区二区三区四 | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | 亚洲熟妇色xxxxx亚洲 | 综合网日日天干夜夜久久 | 美女张开腿让人桶 | 成人免费视频在线观看 | 国产精品久久久午夜夜伦鲁鲁 | 久久久久久九九精品久 | 色综合久久久无码网中文 | 国产成人午夜福利在线播放 | 亚洲最大成人网站 | 国产av一区二区三区最新精品 | 国产成人亚洲综合无码 | 四十如虎的丰满熟妇啪啪 | 熟女少妇人妻中文字幕 | 波多野结衣aⅴ在线 | 午夜不卡av免费 一本久久a久久精品vr综合 | 性欧美牲交在线视频 | 亚洲人成网站免费播放 | 领导边摸边吃奶边做爽在线观看 | 欧美喷潮久久久xxxxx | 欧洲vodafone精品性 | 亚洲中文字幕无码中字 | 青青青手机频在线观看 | 丰满肥臀大屁股熟妇激情视频 | 黑人玩弄人妻中文在线 | 亚洲另类伦春色综合小说 | 久久久久免费精品国产 | 无码播放一区二区三区 | 国产性生交xxxxx无码 | 六十路熟妇乱子伦 | 国产午夜无码精品免费看 | 高清无码午夜福利视频 | 成年美女黄网站色大免费视频 | 丰满人妻一区二区三区免费视频 | 日本熟妇乱子伦xxxx | 久久99热只有频精品8 | 成人欧美一区二区三区 | 精品亚洲成av人在线观看 | 少女韩国电视剧在线观看完整 | 国产无遮挡又黄又爽又色 | 无码人妻丰满熟妇区五十路百度 | 日韩av无码一区二区三区 | 久久亚洲精品成人无码 | 日本一区二区更新不卡 | 丰满人妻精品国产99aⅴ | 熟妇人妻无码xxx视频 | 国产成人无码一二三区视频 | 亚洲啪av永久无码精品放毛片 | 18禁止看的免费污网站 | 久久久久亚洲精品男人的天堂 | 无码人妻精品一区二区三区不卡 | 亚洲色欲色欲天天天www | 日本免费一区二区三区最新 | 丰满人妻精品国产99aⅴ | 色欲综合久久中文字幕网 | 亚洲欧美日韩成人高清在线一区 | 亚洲国产欧美在线成人 | 十八禁视频网站在线观看 | 人妻插b视频一区二区三区 | 国内综合精品午夜久久资源 | av无码久久久久不卡免费网站 | 一本久道久久综合狠狠爱 | 亚洲国产高清在线观看视频 | 亚洲人成无码网www | 欧洲精品码一区二区三区免费看 | 成人免费视频在线观看 | 久久精品女人的天堂av | 中文无码成人免费视频在线观看 | 国产精品无码成人午夜电影 | 成人欧美一区二区三区黑人免费 | 久久www免费人成人片 | 久久人人爽人人爽人人片ⅴ | 三上悠亚人妻中文字幕在线 | 麻豆国产丝袜白领秘书在线观看 | 精品人妻人人做人人爽 | 久久精品99久久香蕉国产色戒 | 日韩人妻无码一区二区三区久久99 | 精品久久久中文字幕人妻 | 人妻人人添人妻人人爱 | 激情内射日本一区二区三区 | 国产内射爽爽大片视频社区在线 | 一区二区三区高清视频一 | a在线亚洲男人的天堂 | 一二三四社区在线中文视频 | 又黄又爽又色的视频 | 亚洲成熟女人毛毛耸耸多 | 国产成人无码av片在线观看不卡 | 欧美 日韩 人妻 高清 中文 | 国产激情无码一区二区app | 国产真实乱对白精彩久久 | 国产一区二区三区影院 | 两性色午夜免费视频 | 丰满人妻精品国产99aⅴ | 天海翼激烈高潮到腰振不止 | 国产色在线 | 国产 | 亚洲中文字幕av在天堂 | 欧美人妻一区二区三区 | 亚洲综合另类小说色区 | 成人亚洲精品久久久久软件 | 樱花草在线播放免费中文 | 亚洲中文字幕在线观看 | 老熟妇乱子伦牲交视频 | 波多野结衣高清一区二区三区 | 色五月五月丁香亚洲综合网 | 国产真实乱对白精彩久久 | 天堂久久天堂av色综合 | 成熟人妻av无码专区 | 日日天日日夜日日摸 | 67194成是人免费无码 | 亚洲精品久久久久久久久久久 | 免费人成网站视频在线观看 | 亚洲精品成人福利网站 | 成在人线av无码免费 | 成人欧美一区二区三区黑人免费 | 国产成人一区二区三区在线观看 | 夜精品a片一区二区三区无码白浆 | 十八禁视频网站在线观看 | 97精品人妻一区二区三区香蕉 | 国产手机在线αⅴ片无码观看 | 国产午夜手机精彩视频 | 久久久精品456亚洲影院 | 亚洲精品综合一区二区三区在线 | 玩弄人妻少妇500系列视频 | 国产精品久久久午夜夜伦鲁鲁 | 国产黑色丝袜在线播放 | 国产成人久久精品流白浆 | 极品尤物被啪到呻吟喷水 | 亚洲熟妇自偷自拍另类 | 亚洲成a人一区二区三区 | 国产激情综合五月久久 | 久久无码中文字幕免费影院蜜桃 | 日韩精品无码免费一区二区三区 | 男人和女人高潮免费网站 | 亚洲午夜无码久久 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 亚洲人成网站色7799 | 亚洲欧美日韩国产精品一区二区 | 亚洲高清偷拍一区二区三区 | 撕开奶罩揉吮奶头视频 | 在教室伦流澡到高潮hnp视频 | 亚洲狠狠婷婷综合久久 | 在线a亚洲视频播放在线观看 | 国产香蕉尹人综合在线观看 | 国产成人一区二区三区在线观看 | 成人精品一区二区三区中文字幕 | 无码任你躁久久久久久久 | 一本久久伊人热热精品中文字幕 | 欧美激情一区二区三区成人 | 国产亚洲精品久久久久久久 | 野狼第一精品社区 | 久久久久99精品国产片 | av在线亚洲欧洲日产一区二区 | 久久综合网欧美色妞网 | 东京热一精品无码av | 亚洲va中文字幕无码久久不卡 | 欧美日韩一区二区免费视频 | 老子影院午夜精品无码 | 精品欧洲av无码一区二区三区 | 国内少妇偷人精品视频 | 精品久久久中文字幕人妻 | 欧美日本精品一区二区三区 | 一区二区传媒有限公司 | 综合人妻久久一区二区精品 | 强奷人妻日本中文字幕 | 天天综合网天天综合色 | 成人女人看片免费视频放人 | 精品午夜福利在线观看 | 任你躁在线精品免费 | 欧美 日韩 人妻 高清 中文 | 秋霞成人午夜鲁丝一区二区三区 | 色情久久久av熟女人妻网站 | 东京热一精品无码av | 久久天天躁夜夜躁狠狠 | 97精品人妻一区二区三区香蕉 | 乱人伦中文视频在线观看 | 精品无码一区二区三区爱欲 | 人人妻人人澡人人爽精品欧美 | 日韩人妻少妇一区二区三区 | 内射白嫩少妇超碰 | 亚洲七七久久桃花影院 | 波多野结衣aⅴ在线 | 一本一道久久综合久久 | 亚洲欧美综合区丁香五月小说 | 国产成人无码av在线影院 | 日本丰满熟妇videos | 3d动漫精品啪啪一区二区中 | 男女猛烈xx00免费视频试看 | 无码国内精品人妻少妇 | 四虎国产精品免费久久 | 亚洲 a v无 码免 费 成 人 a v | 无码人妻黑人中文字幕 | 国产在热线精品视频 | 日本乱偷人妻中文字幕 | 日本欧美一区二区三区乱码 | 亚洲 日韩 欧美 成人 在线观看 | 国产色精品久久人妻 | 黑人大群体交免费视频 | 亚洲无人区午夜福利码高清完整版 | 欧美三级a做爰在线观看 | 国产人妻久久精品二区三区老狼 | 2020最新国产自产精品 | 精品无人区无码乱码毛片国产 | 激情人妻另类人妻伦 | 波多野结衣av一区二区全免费观看 | 国产亚av手机在线观看 | 黄网在线观看免费网站 | 亚洲综合无码久久精品综合 | 色一情一乱一伦一视频免费看 | 特级做a爰片毛片免费69 | 日日碰狠狠丁香久燥 | 亚洲另类伦春色综合小说 | 人人澡人摸人人添 | 天堂久久天堂av色综合 | 午夜免费福利小电影 | 国产精品第一国产精品 | 中文字幕日韩精品一区二区三区 | 俺去俺来也在线www色官网 | 青青青手机频在线观看 | 欧美自拍另类欧美综合图片区 | 亚洲一区av无码专区在线观看 | 熟女体下毛毛黑森林 | 少妇人妻大乳在线视频 | 又大又硬又爽免费视频 | 亚洲阿v天堂在线 | 香港三级日本三级妇三级 | 东京热无码av男人的天堂 | 国产内射爽爽大片视频社区在线 | 丰满少妇熟乱xxxxx视频 | 给我免费的视频在线观看 | 国产电影无码午夜在线播放 | 一本久道久久综合狠狠爱 | 中文字幕人成乱码熟女app | 人人妻人人澡人人爽欧美一区 | 骚片av蜜桃精品一区 | 日本xxxx色视频在线观看免费 | 欧美日本日韩 | 亚洲乱码日产精品bd | 熟女体下毛毛黑森林 | 久久99国产综合精品 | 精品人妻人人做人人爽夜夜爽 | 少妇久久久久久人妻无码 | 亚洲欧洲中文日韩av乱码 | 波多野结衣av在线观看 | 欧洲精品码一区二区三区免费看 | 色偷偷人人澡人人爽人人模 | 久久久国产精品无码免费专区 | 日韩欧美成人免费观看 | 熟妇人妻激情偷爽文 | 激情内射亚州一区二区三区爱妻 | 国产国产精品人在线视 | 亚洲中文字幕在线观看 | 国产成人精品久久亚洲高清不卡 | 亚洲精品一区二区三区四区五区 | 久久婷婷五月综合色国产香蕉 | 麻豆果冻传媒2021精品传媒一区下载 | 欧美35页视频在线观看 | 国产成人精品视频ⅴa片软件竹菊 | 亚洲欧美国产精品久久 | 国产无套粉嫩白浆在线 | 国产女主播喷水视频在线观看 | 国产精华av午夜在线观看 | 国产精品无码一区二区桃花视频 | 亚洲成av人综合在线观看 | 伊人久久大香线蕉亚洲 | 欧美阿v高清资源不卡在线播放 | 亚洲精品一区国产 | 亚洲熟妇色xxxxx亚洲 | 国产av人人夜夜澡人人爽麻豆 | 亚洲色欲色欲欲www在线 | 亚洲gv猛男gv无码男同 | 婷婷丁香五月天综合东京热 | 夜夜夜高潮夜夜爽夜夜爰爰 | 亚洲狠狠婷婷综合久久 | 十八禁真人啪啪免费网站 | www一区二区www免费 | 亚洲va中文字幕无码久久不卡 | 国产av无码专区亚洲a∨毛片 | 狠狠色丁香久久婷婷综合五月 | 精品国产一区二区三区av 性色 | 国产精品无码成人午夜电影 | 少妇太爽了在线观看 | 无遮挡啪啪摇乳动态图 | 2020最新国产自产精品 | 撕开奶罩揉吮奶头视频 | 国产内射老熟女aaaa | 人人澡人人妻人人爽人人蜜桃 | 久久亚洲精品中文字幕无男同 | 性生交大片免费看l | 精品久久久久久亚洲精品 | 亚洲成色www久久网站 | 六月丁香婷婷色狠狠久久 | 国产女主播喷水视频在线观看 | 少妇人妻av毛片在线看 | 久久婷婷五月综合色国产香蕉 | 欧美zoozzooz性欧美 | 国产sm调教视频在线观看 | 强奷人妻日本中文字幕 | 性欧美牲交在线视频 | 亚洲阿v天堂在线 | 疯狂三人交性欧美 | 亚洲一区二区三区香蕉 | 国产偷抇久久精品a片69 | 欧美自拍另类欧美综合图片区 | 亚洲欧洲日本综合aⅴ在线 | 久久伊人色av天堂九九小黄鸭 | 1000部夫妻午夜免费 | 粉嫩少妇内射浓精videos | 亚洲男女内射在线播放 | 国产精品美女久久久网av | 国产成人一区二区三区别 | 国产成人无码区免费内射一片色欲 | 又粗又大又硬又长又爽 | 精品无人国产偷自产在线 | 精品厕所偷拍各类美女tp嘘嘘 | 麻花豆传媒剧国产免费mv在线 | 免费观看的无遮挡av | a片在线免费观看 | 久久精品中文字幕大胸 | 精品欧洲av无码一区二区三区 | 成人女人看片免费视频放人 | 亚洲国产精品无码一区二区三区 | 久久亚洲日韩精品一区二区三区 | 亚洲自偷自偷在线制服 | 久久亚洲精品中文字幕无男同 | 久久久精品成人免费观看 | 日韩 欧美 动漫 国产 制服 | 久久熟妇人妻午夜寂寞影院 | 美女黄网站人色视频免费国产 | 欧美日韩在线亚洲综合国产人 | 亚洲另类伦春色综合小说 | 亚洲人成影院在线无码按摩店 | 377p欧洲日本亚洲大胆 | 亚洲乱码国产乱码精品精 | 久激情内射婷内射蜜桃人妖 | 国产又粗又硬又大爽黄老大爷视 | 亚洲中文字幕乱码av波多ji | 国产亚洲精品久久久久久久久动漫 | 亚洲乱码国产乱码精品精 | 粗大的内捧猛烈进出视频 | 亚洲成a人片在线观看日本 | 国产亚洲视频中文字幕97精品 | 国产精品久久久av久久久 | 捆绑白丝粉色jk震动捧喷白浆 | 捆绑白丝粉色jk震动捧喷白浆 | 国产在线一区二区三区四区五区 | 少妇被黑人到高潮喷出白浆 | 国产av一区二区三区最新精品 | 国产精品.xx视频.xxtv | 亚洲精品午夜国产va久久成人 | 日本一区二区三区免费高清 | 丰满少妇高潮惨叫视频 | 中文字幕无码日韩专区 | 免费国产成人高清在线观看网站 | 窝窝午夜理论片影院 | www成人国产高清内射 | 国产精品久久久久久久9999 | 久久精品中文闷骚内射 | 色五月五月丁香亚洲综合网 | 亚洲gv猛男gv无码男同 | 麻豆国产人妻欲求不满 | 国产av人人夜夜澡人人爽麻豆 | 又湿又紧又大又爽a视频国产 | 精品国产福利一区二区 | 人妻少妇被猛烈进入中文字幕 | 18黄暴禁片在线观看 | 国产两女互慰高潮视频在线观看 | 欧美性猛交xxxx富婆 | 亚洲一区二区三区国产精华液 | 中国女人内谢69xxxxxa片 | 国产精品第一区揄拍无码 | 成人女人看片免费视频放人 | 一本大道久久东京热无码av | 国产精品亚洲专区无码不卡 | 国产精品无套呻吟在线 | 国产无遮挡吃胸膜奶免费看 | 国产成人精品久久亚洲高清不卡 | 中文字幕乱码中文乱码51精品 | 欧美 日韩 人妻 高清 中文 | 天堂亚洲免费视频 | 亚洲一区av无码专区在线观看 | 国产熟妇高潮叫床视频播放 | 欧洲熟妇精品视频 | 牲欲强的熟妇农村老妇女视频 | 国产精品沙发午睡系列 | 国语自产偷拍精品视频偷 | 无码乱肉视频免费大全合集 | 日韩精品成人一区二区三区 | 国产 精品 自在自线 | 中文字幕无码日韩欧毛 | 国产激情综合五月久久 | 乱码av麻豆丝袜熟女系列 | 麻豆人妻少妇精品无码专区 | 少妇厨房愉情理9仑片视频 | 国产小呦泬泬99精品 | 国产人妻人伦精品1国产丝袜 | 人人爽人人澡人人人妻 | 丰满少妇人妻久久久久久 | v一区无码内射国产 | 国产精品久久福利网站 | 欧美人与善在线com | 国产黄在线观看免费观看不卡 | 动漫av网站免费观看 | 亚洲中文字幕久久无码 | 国产精品久久精品三级 | 亚洲熟悉妇女xxx妇女av | 精品午夜福利在线观看 | 狠狠综合久久久久综合网 | 免费无码肉片在线观看 | 国产偷抇久久精品a片69 | 欧美自拍另类欧美综合图片区 | 久9re热视频这里只有精品 | 亚洲自偷自偷在线制服 | 亚洲男人av香蕉爽爽爽爽 | 国产精品视频免费播放 | 激情亚洲一区国产精品 | 亚洲欧美国产精品专区久久 | 波多野结衣一区二区三区av免费 | 成熟女人特级毛片www免费 | 任你躁在线精品免费 | 六月丁香婷婷色狠狠久久 | 日本免费一区二区三区最新 | 久久久久久亚洲精品a片成人 | 色婷婷av一区二区三区之红樱桃 | 日本欧美一区二区三区乱码 | 亚洲人成影院在线无码按摩店 | 大胆欧美熟妇xx | 狂野欧美性猛xxxx乱大交 | 欧美性猛交内射兽交老熟妇 | 沈阳熟女露脸对白视频 | 人妻少妇被猛烈进入中文字幕 | 天下第一社区视频www日本 | 亚洲综合精品香蕉久久网 | 久久久国产一区二区三区 | 久久久久人妻一区精品色欧美 | 亚洲热妇无码av在线播放 | aⅴ亚洲 日韩 色 图网站 播放 | 天天拍夜夜添久久精品 | 日本精品人妻无码免费大全 | 国产精品视频免费播放 | 亚洲成a人片在线观看无码 | 色一情一乱一伦一区二区三欧美 | 国产xxx69麻豆国语对白 | 日韩av无码中文无码电影 | 欧美成人高清在线播放 | 日本一本二本三区免费 | 亚洲欧美综合区丁香五月小说 | 日本免费一区二区三区最新 | 亚洲色欲久久久综合网东京热 | 欧美老人巨大xxxx做受 | 色综合久久久无码中文字幕 | 2020最新国产自产精品 | 大肉大捧一进一出好爽视频 | 性生交片免费无码看人 | 日本大乳高潮视频在线观看 | a片免费视频在线观看 | 人妻人人添人妻人人爱 | 天堂亚洲2017在线观看 | 天堂在线观看www | 麻豆国产97在线 | 欧洲 | 丰满护士巨好爽好大乳 | 日韩精品无码一本二本三本色 | 中文字幕无码免费久久99 | 亚洲中文字幕乱码av波多ji | 国产综合久久久久鬼色 | 大地资源网第二页免费观看 | 欧美老熟妇乱xxxxx | 婷婷色婷婷开心五月四房播播 | 2019午夜福利不卡片在线 | 久久久婷婷五月亚洲97号色 | 午夜精品一区二区三区在线观看 | 久久无码专区国产精品s | 精品熟女少妇av免费观看 | 午夜肉伦伦影院 | 亚洲高清偷拍一区二区三区 | 国产精品无套呻吟在线 | 一本无码人妻在中文字幕免费 | 亚洲区小说区激情区图片区 | 欧美xxxx黑人又粗又长 | 成人无码精品一区二区三区 | 青青青爽视频在线观看 | 日本丰满熟妇videos | 无码人妻少妇伦在线电影 | 少女韩国电视剧在线观看完整 | 大肉大捧一进一出好爽视频 | 免费视频欧美无人区码 | 国产xxx69麻豆国语对白 | 国产精品亚洲五月天高清 | 免费播放一区二区三区 | а天堂中文在线官网 | √天堂中文官网8在线 | 4hu四虎永久在线观看 | 青草视频在线播放 | 97久久超碰中文字幕 | 国内精品久久久久久中文字幕 | 午夜时刻免费入口 | 思思久久99热只有频精品66 | 粉嫩少妇内射浓精videos | 婷婷五月综合激情中文字幕 | 国内老熟妇对白xxxxhd | 色老头在线一区二区三区 | 精品国精品国产自在久国产87 | 久久亚洲精品成人无码 | 午夜成人1000部免费视频 | 亚拍精品一区二区三区探花 | 欧美大屁股xxxxhd黑色 | 国产精品视频免费播放 | 99视频精品全部免费免费观看 | 亚洲精品中文字幕乱码 | 国产亚洲人成a在线v网站 | 中文字幕日产无线码一区 | 免费无码肉片在线观看 | 无码人妻丰满熟妇区毛片18 | 99久久精品日本一区二区免费 | 国产精品99久久精品爆乳 | 老太婆性杂交欧美肥老太 | 中文亚洲成a人片在线观看 | 东京热无码av男人的天堂 | 无码吃奶揉捏奶头高潮视频 | 久久精品国产一区二区三区肥胖 | 亚洲精品鲁一鲁一区二区三区 | 亚洲国产成人av在线观看 | 国内少妇偷人精品视频 | 丰满人妻一区二区三区免费视频 | 亚洲无人区一区二区三区 | 激情内射日本一区二区三区 | 夜夜夜高潮夜夜爽夜夜爰爰 | 一区二区传媒有限公司 | 久久久精品欧美一区二区免费 | 蜜桃臀无码内射一区二区三区 | 亚拍精品一区二区三区探花 | 亚洲精品久久久久久久久久久 | 久久久久av无码免费网 | 伊在人天堂亚洲香蕉精品区 | 中文无码成人免费视频在线观看 | 国内少妇偷人精品视频 | 日本丰满护士爆乳xxxx | 小泽玛莉亚一区二区视频在线 | 色一情一乱一伦一区二区三欧美 | 又大又硬又爽免费视频 | 亚洲成熟女人毛毛耸耸多 | 国产亚洲精品久久久久久久 | 国产精品久久久久久久9999 | 人妻aⅴ无码一区二区三区 | 波多野结衣一区二区三区av免费 | 日产精品99久久久久久 | 水蜜桃色314在线观看 | 国产精品无套呻吟在线 | 免费无码肉片在线观看 | 国产在线精品一区二区三区直播 | 国产美女精品一区二区三区 | 人人妻人人澡人人爽欧美一区九九 | 精品人妻人人做人人爽夜夜爽 | 少女韩国电视剧在线观看完整 | 国内揄拍国内精品少妇国语 | 少妇激情av一区二区 | 久久精品人妻少妇一区二区三区 | 无码人妻丰满熟妇区五十路百度 | 领导边摸边吃奶边做爽在线观看 | 久久久中文久久久无码 | 国产精品va在线播放 | 特级做a爰片毛片免费69 | 在线观看免费人成视频 | 日日摸夜夜摸狠狠摸婷婷 | 国色天香社区在线视频 | 人妻插b视频一区二区三区 | 波多野结衣av在线观看 | 亚洲色成人中文字幕网站 | 精品厕所偷拍各类美女tp嘘嘘 | 无码人妻精品一区二区三区下载 | 中文字幕av无码一区二区三区电影 | 国产精品沙发午睡系列 | 国产精品无码一区二区桃花视频 | 亚洲精品国产精品乱码不卡 | 久久www免费人成人片 | 国产无套粉嫩白浆在线 | 蜜桃臀无码内射一区二区三区 | 亚洲精品国产精品乱码视色 | 中文精品久久久久人妻不卡 | 极品尤物被啪到呻吟喷水 | 精品国产青草久久久久福利 | 久久精品国产99精品亚洲 | 久久综合给合久久狠狠狠97色 | 天天做天天爱天天爽综合网 | 久久久久久国产精品无码下载 | 午夜无码区在线观看 | 国产无套粉嫩白浆在线 | 亚洲の无码国产の无码影院 | 秋霞特色aa大片 | 国产亚洲精品精品国产亚洲综合 | 国产三级久久久精品麻豆三级 | 亚拍精品一区二区三区探花 | 人妻天天爽夜夜爽一区二区 | 午夜熟女插插xx免费视频 | 少妇厨房愉情理9仑片视频 | 国产色精品久久人妻 | 国产精品亚洲一区二区三区喷水 | 国内丰满熟女出轨videos | 青青草原综合久久大伊人精品 | 久久久久成人片免费观看蜜芽 | 欧美三级不卡在线观看 | 国内精品人妻无码久久久影院蜜桃 | 久久天天躁夜夜躁狠狠 | 沈阳熟女露脸对白视频 | 人人妻人人澡人人爽人人精品 | 初尝人妻少妇中文字幕 | 欧美成人免费全部网站 | 欧洲极品少妇 | 少妇激情av一区二区 | 内射白嫩少妇超碰 | 欧美色就是色 | 国产两女互慰高潮视频在线观看 | 成年女人永久免费看片 | 亚洲欧美日韩国产精品一区二区 | 亚洲小说图区综合在线 | 俄罗斯老熟妇色xxxx | 精品欧美一区二区三区久久久 | 精品无人国产偷自产在线 | 丰满岳乱妇在线观看中字无码 | 国产精品久久久久影院嫩草 | 国产乱人无码伦av在线a | 色婷婷香蕉在线一区二区 | 国精产品一品二品国精品69xx | 国产内射爽爽大片视频社区在线 | 99麻豆久久久国产精品免费 | 久久久久久a亚洲欧洲av冫 | 亚洲色www成人永久网址 | 日日碰狠狠丁香久燥 | 97夜夜澡人人双人人人喊 | 久久久久久久人妻无码中文字幕爆 | 伊人色综合久久天天小片 | 国产精品久久久 | 国产国语老龄妇女a片 | 国产av剧情md精品麻豆 | 性欧美牲交在线视频 | 综合激情五月综合激情五月激情1 | 窝窝午夜理论片影院 | 东京无码熟妇人妻av在线网址 | 色情久久久av熟女人妻网站 | 少妇高潮一区二区三区99 | 日日橹狠狠爱欧美视频 | 久久99热只有频精品8 | 波多野结衣高清一区二区三区 | 领导边摸边吃奶边做爽在线观看 | 国产精品高潮呻吟av久久 | 日韩在线不卡免费视频一区 | 久久国内精品自在自线 | av无码久久久久不卡免费网站 | 麻豆md0077饥渴少妇 | 国精产品一品二品国精品69xx | 最近免费中文字幕中文高清百度 | www一区二区www免费 | 国产精品久久久久无码av色戒 | 久久熟妇人妻午夜寂寞影院 | 国产美女精品一区二区三区 | 亚洲乱码国产乱码精品精 | 高清不卡一区二区三区 | 亚洲s色大片在线观看 | 亚洲精品成a人在线观看 | 98国产精品综合一区二区三区 | 色一情一乱一伦一视频免费看 | 天天躁夜夜躁狠狠是什么心态 | 亚洲色欲久久久综合网东京热 | 色婷婷久久一区二区三区麻豆 | 亚洲国产欧美国产综合一区 | 亚洲色欲色欲欲www在线 | 亚洲第一网站男人都懂 | 暴力强奷在线播放无码 | 久久久国产精品无码免费专区 | 妺妺窝人体色www在线小说 | 免费播放一区二区三区 | 国产凸凹视频一区二区 | 正在播放老肥熟妇露脸 | 午夜福利试看120秒体验区 | 国产精品手机免费 | 97人妻精品一区二区三区 | 久久zyz资源站无码中文动漫 | 久久久亚洲欧洲日产国码αv | 国精品人妻无码一区二区三区蜜柚 | 激情国产av做激情国产爱 | 国产精品对白交换视频 | 99久久亚洲精品无码毛片 | 无码国模国产在线观看 | 国产成人精品无码播放 | 日韩少妇白浆无码系列 | 国产在线精品一区二区三区直播 | 人妻熟女一区 | 国产熟女一区二区三区四区五区 | av在线亚洲欧洲日产一区二区 | 少妇高潮一区二区三区99 | 国产在热线精品视频 | 内射巨臀欧美在线视频 | 国产福利视频一区二区 | 国产又爽又黄又刺激的视频 | 亚洲精品综合一区二区三区在线 | 夜夜躁日日躁狠狠久久av | 黑人粗大猛烈进出高潮视频 | 国产精品18久久久久久麻辣 | 成人免费视频一区二区 | 7777奇米四色成人眼影 | 久久97精品久久久久久久不卡 | 一本一道久久综合久久 | www一区二区www免费 | 无套内谢老熟女 | 欧美精品无码一区二区三区 | 国产内射老熟女aaaa | 亚洲啪av永久无码精品放毛片 | 色五月五月丁香亚洲综合网 | 99久久久无码国产aaa精品 | 久激情内射婷内射蜜桃人妖 | 日本一卡二卡不卡视频查询 | 强开小婷嫩苞又嫩又紧视频 | 日韩无套无码精品 | 青春草在线视频免费观看 | 国产成人一区二区三区在线观看 | 欧美人与牲动交xxxx | 国产精品鲁鲁鲁 | 大肉大捧一进一出好爽视频 | 亚洲欧美日韩综合久久久 | 日韩精品a片一区二区三区妖精 | 女人色极品影院 | 国产真实乱对白精彩久久 | 中文字幕av日韩精品一区二区 | 国内少妇偷人精品视频免费 | 欧美人与善在线com | 国内老熟妇对白xxxxhd | 国产成人亚洲综合无码 | 午夜精品一区二区三区的区别 | 亚洲国精产品一二二线 | 亚洲欧美中文字幕5发布 | 乱码午夜-极国产极内射 | 无码精品国产va在线观看dvd | 人人妻人人澡人人爽欧美精品 | 亚洲熟悉妇女xxx妇女av | 伦伦影院午夜理论片 | 中文字幕乱码亚洲无线三区 | 亚洲欧美综合区丁香五月小说 | 亚洲性无码av中文字幕 | 成年美女黄网站色大免费视频 | 亚洲中文无码av永久不收费 | 色婷婷香蕉在线一区二区 | 天天躁日日躁狠狠躁免费麻豆 | 久久综合激激的五月天 | 鲁大师影院在线观看 | 免费无码的av片在线观看 | 无码福利日韩神码福利片 | 国产精品香蕉在线观看 | 久久精品丝袜高跟鞋 | 动漫av一区二区在线观看 | 欧美亚洲国产一区二区三区 | 无码吃奶揉捏奶头高潮视频 | 玩弄少妇高潮ⅹxxxyw | 天堂久久天堂av色综合 | 国产精品久久久午夜夜伦鲁鲁 | 精品无码av一区二区三区 | 妺妺窝人体色www在线小说 | 久久久久成人精品免费播放动漫 | 99久久婷婷国产综合精品青草免费 | 无码人妻丰满熟妇区毛片18 | 精品无人国产偷自产在线 | 欧美精品在线观看 | 国产两女互慰高潮视频在线观看 | www国产亚洲精品久久久日本 | 欧美国产日韩久久mv | 国内精品人妻无码久久久影院 | 久精品国产欧美亚洲色aⅴ大片 | 国产免费久久久久久无码 | 国产一区二区三区影院 | 国产高清不卡无码视频 | 精品国偷自产在线视频 | 欧美日韩亚洲国产精品 | 性欧美疯狂xxxxbbbb | 成熟女人特级毛片www免费 | 一本久道久久综合婷婷五月 | 2019nv天堂香蕉在线观看 | 99久久99久久免费精品蜜桃 | 国产在线精品一区二区高清不卡 | 中文字幕精品av一区二区五区 | 日韩无套无码精品 | 天天拍夜夜添久久精品 | 无码精品国产va在线观看dvd | 亚洲人成无码网www | 欧美 丝袜 自拍 制服 另类 | 亚洲国产精品无码一区二区三区 | 亚洲欧美精品aaaaaa片 | av人摸人人人澡人人超碰下载 | 67194成是人免费无码 | 麻豆人妻少妇精品无码专区 | 乱人伦中文视频在线观看 | 国产精品久久久午夜夜伦鲁鲁 | 在线播放无码字幕亚洲 | 东京热无码av男人的天堂 | 日本护士毛茸茸高潮 | 亚洲欧美日韩国产精品一区二区 | 亚洲午夜久久久影院 | www成人国产高清内射 | 老司机亚洲精品影院无码 | 天天摸天天碰天天添 | 中文字幕无码热在线视频 | 亚洲一区二区三区无码久久 | 久精品国产欧美亚洲色aⅴ大片 | 日本高清一区免费中文视频 | 久久亚洲日韩精品一区二区三区 | 亚洲欧美国产精品久久 | 啦啦啦www在线观看免费视频 |