亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發(fā) > Java > 正文

使用JMX監(jiān)控Zookeeper狀態(tài)Java API

2024-07-14 08:43:32
字體:
供稿:網(wǎng)友

一、背景

上一篇通過Java自帶的JConsole來獲取zookeeper狀態(tài)。主要有幾個(gè)不方便的地方,zk集群一般會(huì)部署3或者5臺(tái),在多個(gè)JConsole窗口中切換比較麻煩,各個(gè)zk服務(wù)及歷史數(shù)據(jù)之間,不能直觀比較。一般會(huì)做一個(gè)WEB管理頁面來展示集群狀態(tài),設(shè)置報(bào)警閥值來做報(bào)警。

二、JVM平臺(tái)提供Mbeans

在Java5.0以上版本,有一組API可以讓Java應(yīng)用程序和允許的工具監(jiān)視和管理Java虛擬機(jī)(JVM)和虛擬機(jī)所在的本機(jī)操作系統(tǒng)。該組API在 java.lang.management包??梢酝ㄟ^這些API可以監(jiān)控local端JVM,同時(shí)也可以監(jiān)控遠(yuǎn)端JVM。

通過靜態(tài)工廠方法獲取MXBean實(shí)例,從本地訪問正在運(yùn)行的虛擬機(jī)的MXBean接口。這些Bean我們從ManagementFactory類中定義的靜態(tài)方法獲??;如ManagementFactory.getOperatingSystemMXBean();其中不足就是只能獲取本地的JVM狀態(tài)。無法獲取遠(yuǎn)程的虛擬機(jī)數(shù)據(jù)。

  • ClassLoadingMXBean Java虛擬機(jī)的類加載系統(tǒng)
  • CompilationMXBean Java虛擬機(jī)的編譯系統(tǒng)
  • MemoryMXBean Java虛擬機(jī)的內(nèi)存系統(tǒng)
  • RuntimeMXBean Java虛擬機(jī)的運(yùn)行時(shí)系統(tǒng)
  • OperatingSystemMXBean Java虛擬機(jī)在其上運(yùn)行的操作系統(tǒng)
  • GarbageCollectorMXBean Java虛擬機(jī)中的垃圾回收器
  • MemoryManagerMXBean Java虛擬機(jī)中的內(nèi)存管理器
  • MemoryPoolMXBean Java虛擬機(jī)中的內(nèi)存池

三、Zookeeper提供出來的Mbeans

構(gòu)造MXBean代理實(shí)例,通過代理將方法調(diào)用轉(zhuǎn)發(fā)到給定的MBeanServe。JConsole能夠監(jiān)控的項(xiàng)目,通過API都能獲取到。

具體代碼如下:

import java.io.IOException;import java.lang.management.ClassLoadingMXBean;import java.lang.management.CompilationMXBean;import java.lang.management.ManagementFactory;import java.lang.management.OperatingSystemMXBean;import java.lang.management.ThreadMXBean;import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Set;import javax.management.InstanceNotFoundException;import javax.management.IntrospectionException;import javax.management.JMX;import javax.management.MBeanServerConnection;import javax.management.MalformedObjectNameException;import javax.management.ObjectName;import javax.management.ReflectionException;import javax.management.remote.JMXConnector;import javax.management.remote.JMXConnectorFactory;import javax.management.remote.JMXServiceURL;import org.apache.zookeeper.server.ConnectionMXBean;import org.apache.zookeeper.server.DataTreeMXBean;import org.apache.zookeeper.server.ZooKeeperServerMXBean;public class ZkJMXTest {  static JMXConnector connector;  /**   * @param args   * @throws IOException   * @throws MalformedObjectNameException   * @throws InstanceNotFoundException   * @throws ReflectionException   * @throws IntrospectionException   */  public static void main(String[] args) throws IOException, MalformedObjectNameException,    InstanceNotFoundException, IntrospectionException, ReflectionException {    OperatingSystemMXBean osbean = ManagementFactory.getOperatingSystemMXBean();    System.out.println("體系結(jié)構(gòu):" + osbean.getArch());//操作系統(tǒng)體系結(jié)構(gòu)    System.out.println("處理器核數(shù):" + osbean.getAvailableProcessors());///核數(shù)    System.out.println("名字:" + osbean.getName());//名字    System.out.println(osbean.getVersion());//操作系統(tǒng)版本    ThreadMXBean threadBean=ManagementFactory.getThreadMXBean();    System.out.println("活動(dòng)線程:" + threadBean.getThreadCount());//總線程數(shù)    ClassLoadingMXBean classLoadingMXBean = ManagementFactory.getClassLoadingMXBean();    CompilationMXBean compilationMXBean = ManagementFactory.getCompilationMXBean();    System.out.println("===========");    // 通過 MBeanServer間接地訪問 MXBean 接口    MBeanServerConnection mbsc = createMBeanServer("192.168.1.100", "9991", "controlRole", "123456");    // 操作系統(tǒng)    ObjectName os = new ObjectName("java.lang:type=OperatingSystem");    System.out.println("體系結(jié)構(gòu):" + getAttribute(mbsc, os, "Arch"));//體系結(jié)構(gòu)    System.out.println("處理器核數(shù):" + getAttribute(mbsc, os, "AvailableProcessors"));//核數(shù)    System.out.println("總物理內(nèi)存:" + getAttribute(mbsc, os, "TotalPhysicalMemorySize"));//總物理內(nèi)存    System.out.println("空閑物理內(nèi)存:" + getAttribute(mbsc, os, "FreePhysicalMemorySize"));//空閑物理內(nèi)存    System.out.println("總交換空間:" + getAttribute(mbsc, os, "TotalSwapSpaceSize"));//總交換空間    System.out.println("空閑交換空間:" + getAttribute(mbsc, os, "FreeSwapSpaceSize"));//空閑交換空間    System.out.println("操作系統(tǒng):" + getAttribute(mbsc, os, "Name")+ getAttribute(mbsc, os, "Version"));//操作系統(tǒng)    System.out.println("提交的虛擬內(nèi)存:" + getAttribute(mbsc, os, "CommittedVirtualMemorySize"));//提交的虛擬內(nèi)存    System.out.println("系統(tǒng)cpu使用率:" + getAttribute(mbsc, os, "SystemCpuLoad"));//系統(tǒng)cpu使用率    System.out.println("進(jìn)程cpu使用率:" + getAttribute(mbsc, os, "ProcessCpuLoad"));//進(jìn)程cpu使用率    System.out.println("============");//    // 線程    ObjectName Threading = new ObjectName("java.lang:type=Threading");    System.out.println("活動(dòng)線程:" + getAttribute(mbsc, Threading, "ThreadCount"));// 活動(dòng)線程    System.out.println("守護(hù)程序線程:" + getAttribute(mbsc, Threading, "DaemonThreadCount"));// 守護(hù)程序線程    System.out.println("峰值:" + getAttribute(mbsc, Threading, "PeakThreadCount"));// 峰值    System.out.println("啟動(dòng)的線程總數(shù):" + getAttribute(mbsc, Threading, "TotalStartedThreadCount"));// 啟動(dòng)的線程總數(shù)    ThreadMXBean threadBean2 = ManagementFactory.newPlatformMXBeanProxy        (mbsc, ManagementFactory.THREAD_MXBEAN_NAME, ThreadMXBean.class);    System.out.println("活動(dòng)線程:" + threadBean2.getThreadCount());// 活動(dòng)線程    ThreadMXBean threadBean3 = ManagementFactory.getThreadMXBean();    System.out.println("本地活動(dòng)線程:" + threadBean3.getThreadCount());// 本地活動(dòng)線程    System.out.println("============");//    ObjectName Compilation = new ObjectName("java.lang:type=Compilation");    System.out.println("總編譯時(shí)間 毫秒:" + getAttribute(mbsc, Compilation, "TotalCompilationTime"));// 總編譯時(shí)間 毫秒    System.out.println("============");//    ObjectName ClassLoading = new ObjectName("java.lang:type=ClassLoading");    System.out.println("已加載類總數(shù):" + getAttribute(mbsc, ClassLoading, "TotalLoadedClassCount"));// 已加載類總數(shù)    System.out.println("已加裝當(dāng)前類:" + getAttribute(mbsc, ClassLoading, "LoadedClassCount"));// 已加裝當(dāng)前類    System.out.println("已卸載類總數(shù):" + getAttribute(mbsc, ClassLoading, "UnloadedClassCount"));// 已卸載類總數(shù)    System.out.println("==========================================================");//    // http://zookeeper.apache.org/doc/r3.4.6/zookeeperJMX.html    // org.apache.ZooKeeperService:name0=ReplicatedServer_id1,name1=replica.1,name2=Follower    ObjectName replica = new ObjectName("org.apache.ZooKeeperService:name0=ReplicatedServer_id1,name1=replica.1");    System.out.println("replica.1運(yùn)行狀態(tài):" + getAttribute(mbsc, replica, "State"));// 運(yùn)行狀態(tài)    mbsc = createMBeanServer("192.168.1.100", "9992", "controlRole", "123456");    System.out.println("==============節(jié)點(diǎn)樹對(duì)象===========");    ObjectName dataTreePattern = new ObjectName("org.apache.ZooKeeperService:name0=ReplicatedServer_id?,name1=replica.?,name2=*,name3=InMemoryDataTree");    Set<ObjectName> dataTreeSets = mbsc.queryNames(dataTreePattern, null);    Iterator<ObjectName> dataTreeIterator = dataTreeSets.iterator();    // 只有一個(gè)    while (dataTreeIterator.hasNext()) {      ObjectName dataTreeObjectName = dataTreeIterator.next();      DataTreeMXBean dataTree = JMX.newMBeanProxy(mbsc, dataTreeObjectName, DataTreeMXBean.class);      System.out.println("節(jié)點(diǎn)總數(shù):" + dataTree.getNodeCount());// 節(jié)點(diǎn)總數(shù)      System.out.println("Watch總數(shù):" + dataTree.getWatchCount());// Watch總數(shù)      System.out.println("臨時(shí)節(jié)點(diǎn)總數(shù):" + dataTree.countEphemerals());// Watch總數(shù)      System.out.println("節(jié)點(diǎn)名及字符總數(shù):" + dataTree.approximateDataSize());// 節(jié)點(diǎn)全路徑和值的總字符數(shù)      Map<String, String> dataTreeMap = dataTreeObjectName.getKeyPropertyList();      String replicaId = dataTreeMap.get("name1").replace("replica.", "");      String role = dataTreeMap.get("name2");// Follower,Leader,Observer,Standalone      String canonicalName = dataTreeObjectName.getCanonicalName();      int roleEndIndex = canonicalName.indexOf(",name3");      ObjectName roleObjectName = new ObjectName(canonicalName.substring(0, roleEndIndex));      System.out.println("==============zk服務(wù)狀態(tài)===========");      ZooKeeperServerMXBean ZooKeeperServer = JMX.newMBeanProxy(mbsc, roleObjectName, ZooKeeperServerMXBean.class);      System.out.println(role + " 的IP和端口:" + ZooKeeperServer.getClientPort());// IP和端口      System.out.println(role + " 活著的連接數(shù):" + ZooKeeperServer.getNumAliveConnections());// 連接數(shù)      System.out.println(role + " 未完成請(qǐng)求數(shù):" + ZooKeeperServer.getOutstandingRequests());// 未完成的請(qǐng)求數(shù)      System.out.println(role + " 接收的包:" + ZooKeeperServer.getPacketsReceived());// 收到的包      System.out.println(role + " 發(fā)送的包:" + ZooKeeperServer.getPacketsSent());// 發(fā)送的包      System.out.println(role + " 平均延遲(毫秒):" + ZooKeeperServer.getAvgRequestLatency());      System.out.println(role + " 最大延遲(毫秒):" + ZooKeeperServer.getMaxRequestLatency());      System.out.println(role + " 每個(gè)客戶端IP允許的最大連接數(shù):" + ZooKeeperServer.getMaxClientCnxnsPerHost());      System.out.println(role + " 最大Session超時(shí)(毫秒):" + ZooKeeperServer.getMaxSessionTimeout());      System.out.println(role + " 心跳時(shí)間(毫秒):" + ZooKeeperServer.getTickTime());      System.out.println(role + " 版本:" + ZooKeeperServer.getVersion());// 版本      // 三個(gè)重置操作//      ZooKeeperServer.resetLatency(); //重置min/avg/max latency statistics//      ZooKeeperServer.resetMaxLatency(); //重置最大延遲統(tǒng)計(jì)//      ZooKeeperServer.resetStatistics(); // 重置包和延遲所有統(tǒng)計(jì)      System.out.println("==============所有客戶端的連接信息===========");      ObjectName connectionPattern = new ObjectName("org.apache.ZooKeeperService:name0=ReplicatedServer_id?,name1=replica.?,name2=*,name3=Connections,*");      Set<ObjectName> connectionSets = mbsc.queryNames(connectionPattern, null);      List<ObjectName> connectionList = new ArrayList<ObjectName>(connectionSets.size());      connectionList.addAll(connectionSets);      Collections.sort(connectionList);      for (ObjectName connectionON : connectionList) {        System.out.println("=========================");        ConnectionMXBean connectionBean = JMX.newMBeanProxy(mbsc, connectionON, ConnectionMXBean.class);        System.out.println(" IP+Port:" + connectionBean.getSourceIP());//        System.out.println(" SessionId:" + connectionBean.getSessionId());//        System.out.println(" PacketsReceived:" + connectionBean.getPacketsReceived());// 收到的包        System.out.println(" PacketsSent:" + connectionBean.getPacketsSent());// 發(fā)送的包        System.out.println(" MinLatency:" + connectionBean.getMinLatency());//        System.out.println(" AvgLatency:" + connectionBean.getAvgLatency());//        System.out.println(" MaxLatency:" + connectionBean.getMaxLatency());//        System.out.println(" StartedTime:" + connectionBean.getStartedTime());//        System.out.println(" EphemeralNodes:" + connectionBean.getEphemeralNodes().length);//        System.out.println(" EphemeralNodes:" + Arrays.asList(connectionBean.getEphemeralNodes()));//        System.out.println(" OutstandingRequests:" + connectionBean.getOutstandingRequests());//        //connectionBean.resetCounters();        //connectionBean.terminateConnection();        //connectionBean.terminateSession();      }    }    // close connection    if (connector != null) {      connector.close();    }  }  /**   * 建立連接   * @param ip   * @param jmxport   * @return   */  public static MBeanServerConnection createMBeanServer(String ip,      String jmxport, String userName, String password) {    try {      String jmxURL = "service:jmx:rmi:///jndi/rmi://" + ip + ":"          + jmxport + "/jmxrmi";      // jmxurl      JMXServiceURL serviceURL = new JMXServiceURL(jmxURL);      Map<String, String[]> map = new HashMap<String, String[]>();      String[] credentials = new String[] { userName, password };      map.put("jmx.remote.credentials", credentials);      connector = JMXConnectorFactory.connect(serviceURL, map);      MBeanServerConnection mbsc = connector.getMBeanServerConnection();      return mbsc;    } catch (IOException ioe) {      ioe.printStackTrace();      System.err.println(ip + ":" + jmxport + " 連接建立失敗");    }    return null;  }  /**   * 使用MBeanServer獲取對(duì)象名為[objName]的MBean的[objAttr]屬性值   * <p>   * 靜態(tài)代碼: return MBeanServer.getAttribute(ObjectName name, String attribute)   * @param mbeanServer   *      - MBeanServer實(shí)例   * @param objName   *      - MBean的對(duì)象名   * @param objAttr   *      - MBean的某個(gè)屬性名   * @return 屬性值   */  private static String getAttribute(MBeanServerConnection mbeanServer,      ObjectName objName, String objAttr) {    if (mbeanServer == null || objName == null || objAttr == null)      throw new IllegalArgumentException();    try {      return String.valueOf(mbeanServer.getAttribute(objName, objAttr));    } catch (Exception e) {      return null;    }  }}

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)VeVb武林網(wǎng)的支持。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JAVA教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
中文亚洲欧美| 黄色精品一区二区| 欧美另类videoxo高潮| 国产精品自拍偷拍| 波多野结衣毛片| 亚洲美女性生活视频| 中文字幕日韩在线播放| 91精品国产色综合久久ai换脸| 中文幕av一区二区三区佐山爱| 亚洲欧洲视频| 欧美1—12sexvideos| 亚洲色图17p| 亚洲福利专区| 免费一级网站| 中国女人真人一级毛片| 亚洲精品国产精品国自产在线| 又黄又爽的视频在线观看| 99精品国产一区二区三区2021| 黑鬼狂亚洲人videos| 五月天激情视频在线观看| 91丨九色丨蝌蚪丨少妇在线观看| 亚洲精彩视频| 在线观看免费av网| 97久久精品一区二区三区的观看方式| 啦啦啦中文在线观看日本| 欧美ab在线视频| 国产精品第一区| 久久久久蜜桃| 亚洲三区在线播放| 欧美日韩中文字幕一区二区三区| 色综合久久88色综合天天免费| 欧美老女人性视频| 亚洲精品免费播放| 日韩大胆成人| 欧美高清视频在线播放| 91视频免费网站| 日韩国产欧美一区二区| 日本韩国欧美超级黄在线观看| 日韩av影院| 丝袜+亚洲+另类+欧美+变态| 亚洲成va人在线观看| 国产九色91回来了| 91九色丨porny丨肉丝| 一区二区三区四区视频在线观看| www.四虎在线观看| 欧美sm极限捆绑bd| 高清欧美性猛交xxxx黑人猛交| 一本大道av一区二区在线播放| 久草在线在线| 伊大人久久香线焦宗合一75大| 精品人妻一区二区三| 91麻豆精品国产91久久久久| 一本久道久久综合中文字幕| 91尤物视频在线观看| 高清hd写真福利在线播放| 九色在线视频观看| 成人黄色免费视频| 国产美女明星三级做爰| 亚洲男女自偷自拍| 亚洲成人精品| 欧美精品一区二区三区免费| 亚洲精品国产成人影院| 成人c视频免费高清在线观看| 婷婷激情在线| 日韩精品视频在线观看网址| 91免费观看网站| 欧美性受xxxxxx黑人xyx性爽| 国产精品欧美亚洲777777| heyzo一本久久综合| 国产黄色三级网站| 一区二区三区免费视频播放器| 欧美a一区二区| 在线观看三级视频| 亚洲桃色综合影院| 欧美一级淫片免费视频| 97超级碰碰碰久久久| 成人片黄网站色大片免费毛片| 免费久久99精品国产| 久久国产露脸精品国产| 亚洲小视频在线观看| 最新av免费看| 国产剧情一区| 欧美日韩性视频一区二区三区| 亚洲成年人专区| 第一福利在线| a级片免费观看| 欧美激情综合色综合啪啪| av影视在线| 亚洲三级 欧美三级| 免费在线观看麻豆视频| 亚洲日本欧美| 久久久久久尹人网香蕉| 欧美在线观看18| 性猛交╳xxx乱大交| 九色porny自拍| 国内精品久久久久久久果冻传媒| 精品视频在线观看免费| 韩日三级av| 国产精品av免费在线观看| 国产视频三区四区| 欧美黄色一级生活片| 亚洲成人福利| 99re国产| 国产精品69一区二区三区| 尤物影院在线播放| 亚洲精品va在线观看| 久草综合在线| 国产乱码一区二区三区| 国产综合一区二区| 精品乱码一区| 亚洲国产视频一区| 欧美人成在线观看网站高清| 久久人人超碰精品| 精品免费日产一区一区三区免费| 久久美女精品| 国内外免费激情视频| 少妇高潮久久77777| 免费在线观看污视频| 男人天堂手机在线视频| 天海翼精品一区二区三区| jizz免费观看视频| 精品国产一区二区三区久久狼黑人| 能看av的网址| 国产亚洲精品日韩| 欧美激情一区二区三级高清视频| 色播五月综合| 日韩一区二区三区免费视频| 国产精品福利在线| 国产精品久久成人免费观看| 国产精欧美一区二区三区蓝颜男同| 中文字幕在线二区| 久久国产成人| 精品无码一区二区三区| 亚洲日本青草视频在线怡红院| 国产精品三区在线| 在线播放黄色网址| 一本一道无码中文字幕精品热| 伊人网在线播放| 成人免费观看毛片| av网站在线观看不卡| 国产精品第七十二页| 国产成人久久精品77777| 视色,视色影院,视色影库,视色网| 91高清视频免费| 美女视频第一区二区三区免费观看网站| 九色porny自拍| 亚洲天堂男人网| 图片区小说区国产精品视频| 成人片在线播放| 亚洲精品国产精品国产自| 日日摸日日添日日躁av| 国产偷窥洗澡视频| 国产成人午夜电影网| 日本精品裸体写真集在线观看| 国产小视频在线高清播放| 亚洲欧美国产一本综合首页| 日本亚洲精品在线观看| 欧美一级电影免费在线观看| 一区二区三区四区在线播放| 伊人影院在线观看视频| 久久久久久久久久久久久久av| 777久久精品一区二区三区无码| 哪个网站能看毛片| 亚洲av成人精品毛片| 成人欧美一区二区三区在线湿哒哒| 久久精品夜色噜噜亚洲a∨| 成人欧美精品久久久久影院| 夜夜嗨av一区二区三区免费区| 粉嫩av性色av蜜臀av网站| 久久久久久亚洲精品杨幂换脸| 丝袜诱惑一区二区| 久久xxxx精品视频| 国产精品三上| 91久久伊人青青碰碰婷婷| 成年人免费在线视频| 精品二区三区线观看| 欧美精品成人在线| 国产精品福利电影一区二区三区四区| 狠狠色综合网站久久久久久久| 男女免费网站| 成人美女视频在线看| 欧美一区二粉嫩精品国产一线天| 亚洲欧洲av一区二区| 日本美女xxx| 四虎影视成人精品国库在线观看| 亚洲国产成人在人网站天堂| 操人视频在线观看| 亚洲一区二区精品| 国产成人综合在线播放| 国产尤物av一区二区三区| 中文字幕在线观看av| 日本成人免费| 成人三级黄色免费网站| 成人欧美一区二区三区1314| 无码人妻丰满熟妇区五十路| 日韩欧美中文一区| 日韩一区二区三区四区五区| 亚洲免费影视| 搡老熟女老女人一区二区| 精品亚洲永久免费精品| 韩国理伦片一区二区三区在线播放| 亚洲国产日韩一级| 岛国毛片av在线| 国产资源在线看| 中文字幕有码视频| 国产欧美日韩精品一区二区三区| 一本色道久久综合狠狠躁篇的优点| 久久精品最新免费国产成人| 99久久国产热无码精品免费| 在线观看av免费| 国产99在线| eeuss影院130020部| 在线播放亚洲激情| 激情小说网站亚洲综合网| 人人九九精品| 色综合久久中文| www.一区二区三区| 欧美黑人巨大| 亚洲久草视频| 免费午夜一级| av网站免费播放| 久热精品在线观看| 日韩在线视频免费播放| 国产精品福利在线观看网址| 第九色区aⅴ天堂久久香| 欧美成人精品高清在线播放| 黄色网页大全| 欧美图片激情小说| 日韩精品一区二区三区在线视频| 日韩高清在线一区二区| 韩国xxxx做受gayxxxx| 成人网ww555视频免费看| 成人在线黄色电影| 91精品人妻一区二区三区四区| 成人在线播放网站| 日韩精品在在线一区二区中文| 日韩精品电影| av成人在线观看| 国产欧美一区二区三区在线观看视频| 天堂8中文在线最新版在线| 99综合精品久久| 一本久久综合亚洲鲁鲁五月天| 99久久国产综合精品麻豆| 亚欧洲精品在线视频免费观看| 中国老太性bbbxxxx| 五月综合激情在线| 亚洲精品国产精品国自产观看浪潮| 久久久国产精品成人免费| 肉色超薄丝袜脚交一区二区| 夜夜躁日日躁狠狠久久av| 日韩欧美二区三区| 日本成人三级电影| 在线观看麻豆| 一本大道香蕉久久| 欧美精品电影免费在线观看| 18free性欧美另类hd| 一级黄色片免费| 精品久久免费| av老司机免费在线| 久久国产精品 国产精品| 在线观看成人一级片| 伊人久久影院| 欧洲vodafonewi精品| 亚洲AV无码成人精品区东京热| 欧美喷潮久久久xxxxx| 天堂网在线最新版www中文网| 欧美91视频| 免费免费啪视频在线观看| 性生活免费观看视频| 北条麻妃av毛片免费观看| 欧美高跟鞋交xxxxhd| 亚洲影院天堂中文av色| 欧美色xxx| 欧美做爰爽爽爽爽爽爽| 天天做天天爱天天综合网2021| 亚洲一区影院| 久久99精品久久久久久青青91| 久久影视电视剧免费网站清宫辞电视| 91精品国产丝袜白色高跟鞋| 亚洲精品日韩在线观看| 成熟人妻av无码专区| 中文在线永久免费观看| 美女激情网站| 风流老熟女一区二区三区| 亚洲综合丁香婷婷六月香| www.天堂在线| 欧美久久天堂| 成人影院一区二区三区| 青青草视频在线免费观看| 欧美一级片免费观看| www日韩中文字幕在线看| 亚洲最大网站| 四虎精品永久在线| 国产一级片在线| 久久久久久久久久久视频| 综合网插菊花| av一二三不卡影片| 欧美精品一级二级三级| 爱情电影网av一区二区| 欧美一区二视频在线免费观看| 99在线视频观看| 成人精品视频| 色丁香久综合在线久综合在线观看| 奇米影视一区二区三区| 久久艳妇乳肉豪妇荡乳av| 中文字幕国产精品久久| 亚洲一区二区三区中文字幕| 欧美日韩中文在线观看| 18欧美亚洲精品| 欧美成人a∨高清免费观看| 日韩国产在线一区| 精品国产成人av| 欧美日韩福利在线| 中文av一区二区三区| 男人看的污网站| 男生和女生一起差差差视频| 不许穿内裤随时挨c调教h苏绵| 欧美日韩中文一区| av不卡在线| 国产欧美欧洲在线观看| 亚洲天堂中文字幕在线| 樱桃视频成人在线观看| 丰满少妇被猛烈进入高清播放| 欧美精品一区二区三区精品| 久久精品国内一区二区三区| 蜜桃传媒入口| 色屁屁草草影院ccyy.com| 中文字幕av高清在线观看|