日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

arthas简单使用

發(fā)布時間:2024/8/26 综合教程 33 生活家
生活随笔 收集整理的這篇文章主要介紹了 arthas简单使用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

有時候在生產(chǎn)或者測試環(huán)境有些方法執(zhí)行比較耗時,一種簡單粗暴的方法是在可能的地點打日志進行監(jiān)視,另一種就是借助于插件進行檢測。最近也是有機會了解并實際運用了arthas這個插件,還是挺方便的。而且也可以用于查看JVM信息、線程信息以及系統(tǒng)屬性等信息。

arthas(中文阿爾薩斯):https://arthas.aliyun.com/zh-cn/

下載:

curl -O https://arthas.aliyun.com/arthas-boot.jar

0.本地準備一個java進程

package arthas;

public class ArthasTest {

    public static void main(String[] args) {
        System.out.println(Thread.currentThread().getName());
        String test = System.getProperty("test");

        while (true) {
            String test2 = System.getProperty("test");
            if (test2 != null && !test2.equals(test)) {
                System.out.println(test2);
                test = test2;
            }
        }
    }
}

啟動該主類

1.啟動arthas

C:UsersqlqDesktopplaintools>java -jar arthas-boot.jar
[INFO] arthas-boot version: 3.4.5
[INFO] Found existing java process, please choose one and input the serial number of the process, eg : 1. Then hit ENTER.
* [1]: 20384 org.jetbrains.idea.maven.server.RemoteMavenServer36
  [2]: 1556
  [3]: 28868 arthas.ArthasTest
  [4]: 16780 org.jetbrains.jps.cmdline.Launcher
  [5]: 7676 org.jetbrains.jps.cmdline.Launcher
3
[INFO] local lastest version: 3.4.5, remote lastest version: 3.4.6, try to download from remote.
[INFO] Start download arthas from remote server: https://arthas.aliyun.com/download/3.4.6?mirror=aliyun
[INFO] File size: 11.99 MB, downloaded size: 813.01 KB, downloading ...
[INFO] File size: 11.99 MB, downloaded size: 1.58 MB, downloading ...
[INFO] File size: 11.99 MB, downloaded size: 2.36 MB, downloading ...
[INFO] File size: 11.99 MB, downloaded size: 3.14 MB, downloading ...
[INFO] File size: 11.99 MB, downloaded size: 3.93 MB, downloading ...
[INFO] File size: 11.99 MB, downloaded size: 4.71 MB, downloading ...
[INFO] File size: 11.99 MB, downloaded size: 5.49 MB, downloading ...
[INFO] File size: 11.99 MB, downloaded size: 6.28 MB, downloading ...
[INFO] File size: 11.99 MB, downloaded size: 7.06 MB, downloading ...
[INFO] File size: 11.99 MB, downloaded size: 7.33 MB, downloading ...
[INFO] File size: 11.99 MB, downloaded size: 8.81 MB, downloading ...
[INFO] File size: 11.99 MB, downloaded size: 9.59 MB, downloading ...
[INFO] File size: 11.99 MB, downloaded size: 10.37 MB, downloading ...
[INFO] File size: 11.99 MB, downloaded size: 11.56 MB, downloading ...
[INFO] Download arthas success.
[INFO] arthas home: C:Usersjxrt.arthaslib3.4.6arthas
[INFO] Try to attach process 28868
[INFO] Found java home from System Env JAVA_HOME: E:javaJAVA8
[INFO] Attach process 28868 success.
[INFO] arthas-client connect 127.0.0.1 3658
  ,---.  ,------. ,--------.,--.  ,--.  ,---.   ,---.
 /  O   |  .--. ''--.  .--'|  '--'  | /  O   '   .-'
|  .-.  ||  '--'.'   |  |   |  .--.  ||  .-.  |`.  `-.
|  | |  ||  |      |  |   |  |  |  ||  | |  |.-'    |
`--' `--'`--' '--'   `--'   `--'  `--'`--' `--'`-----'


wiki      https://arthas.aliyun.com/doc
tutorials https://arthas.aliyun.com/doc/arthas-tutorials.html
version   3.4.6
pid       28868
time      2021-01-12 20:54:40

[arthas@28868]$

arthas 會自動檢測進程ID,需要自己選擇一個PID然后進入,上面我輸入3

2.基本命令

1.dashboard 當前系統(tǒng)的實時數(shù)據(jù)面板:包括線程、JVM、操作系統(tǒng)屬性等

[arthas@28868]$ dashboard
ID     NAME                                       GROUP                 PRIORITY      STATE         %CPU           DELTA_TIME    TIME          INTERRUPTED    DAEMON
1      main                                       main                  5             RUNNABLE      0.0            0.000         6:9.250       false          false
-1     C1 CompilerThread3                         -                     -1            -             0.0            0.000         0:0.546       false          true
-1     C2 CompilerThread2                         -                     -1            -             0.0            0.000         0:0.296       false          true
-1     C2 CompilerThread0                         -                     -1            -             0.0            0.000         0:0.281       false          true
-1     C2 CompilerThread1                         -                     -1            -             0.0            0.000         0:0.203       false          true
25     arthas-NettyHttpTelnetBootstrap-3-2        system                5             RUNNABLE      0.0            0.000         0:0.078       false          true
5      Attach Listener                            system                5             RUNNABLE      0.0            0.000         0:0.046       false          true
-1     VM Thread                                  -                     -1            -             0.0            0.000         0:0.031       false          true
2      Reference Handler                          system                10            WAITING       0.0            0.000         0:0.015       false          true
3      Finalizer                                  system                8             WAITING       0.0            0.000         0:0.015       false          true
18     arthas-NettyHttpTelnetBootstrap-3-1        system                5             RUNNABLE      0.0            0.000         0:0.015       false          true
26     arthas-command-execute                     system                5             TIMED_WAITING 0.0            0.000         0:0.015       false          true
4      Signal Dispatcher                          system                9             RUNNABLE      0.0            0.000         0:0.000       false          true
15     arthas-timer                               system                5             WAITING       0.0            0.000         0:0.000       false          true
19     arthas-NettyWebsocketTtyBootstrap-4-1      system                5             RUNNABLE      0.0            0.000         0:0.000       false          true
20     arthas-NettyWebsocketTtyBootstrap-4-2      system                5             RUNNABLE      0.0            0.000         0:0.000       false          true
21     arthas-shell-server                        system                5             TIMED_WAITING 0.0            0.000         0:0.000       false          true
22     arthas-session-manager                     system                5             TIMED_WAITING 0.0            0.000         0:0.000       false          true
23     arthas-UserStat                            system                5             WAITING       0.0            0.000         0:0.000       false          true
27     Timer-for-arthas-dashboard-2d53a13f-e23f-4 system                5             RUNNABLE      0.0            0.000         0:0.000       false          true
-1     GC task thread#7 (ParallelGC)              -                     -1            -             0.0            0.000         0:0.000       false          true
-1     GC task thread#6 (ParallelGC)              -                     -1            -             0.0            0.000         0:0.000       false          true
-1     VM Periodic Task Thread                    -                     -1            -             0.0            0.000         0:0.000       false          true
-1     GC task thread#0 (ParallelGC)              -                     -1            -             0.0            0.000         0:0.000       false          true
-1     Service Thread                             -                     -1            -             0.0            0.000         0:0.000       false          true
-1     GC task thread#1 (ParallelGC)              -                     -1            -             0.0            0.000         0:0.000       false          true
-1     GC task thread#2 (ParallelGC)              -                     -1            -             0.0            0.000         0:0.000       false          true
Memory                               used        total       max          usage       GC
heap                                 58M         241M        3582M        1.64%       gc.ps_scavenge.count                       1
ps_eden_space                        50M         63M         1322M        3.80%       gc.ps_scavenge.time(ms)                    7
ps_survivor_space                    8M          10M         10M          79.64%      gc.ps_marksweep.count                      0
ps_old_gen                           88K         172032K     2751488K     0.00%       gc.ps_marksweep.time(ms)                   0
nonheap                              27M         28M         -1           96.88%
code_cache                           5M          5M          240M         2.21%
metaspace                            19M         20M         -1           96.71%
compressed_class_space               2M          2M          1024M        0.23%
direct                               0K          0K          -            105.88%
mapped                               0K          0K          -            0.00%
Runtime
os.name                                                                               Windows 10
os.version                                                                            10.0
java.version                                                                          1.8.0_171
java.home                                                                             E:javaJAVA8_171jre
systemload.average                                                                    -1.00
processors                                                                            8
timestamp/uptime                                                                      Tue Jan 12 20:56:26 CST 2021/370s

  上面信息可以看到JVM的內(nèi)存信息,也可以查看到每個區(qū)域的GC信息。同時也可以看到使用的垃圾收集器是JDK8默認的-XX:+UseParallelGC 使用ParallelScavenge + Serial Old(PS MarkSweep)收集器組合

2.thread 查看線程信息

[arthas@28868]$ thread
Threads Total: 29, NEW: 0, RUNNABLE: 8, BLOCKED: 0, WAITING: 4, TIMED_WAITING: 2, TERMINATED: 0, Internal threads: 15
ID     NAME                                       GROUP                 PRIORITY      STATE         %CPU           DELTA_TIME    TIME          INTERRUPTED    DAEMON
1      main                                       main                  5             RUNNABLE      101.42         0.203         8:3.609       false          false
2      Reference Handler                          system                10            WAITING       0.0            0.000         0:0.015       false          true
3      Finalizer                                  system                8             WAITING       0.0            0.000         0:0.015       false          true
4      Signal Dispatcher                          system                9             RUNNABLE      0.0            0.000         0:0.000       false          true
5      Attach Listener                            system                5             RUNNABLE      0.0            0.000         0:0.046       false          true
15     arthas-timer                               system                5             WAITING       0.0            0.000         0:0.000       false          true
18     arthas-NettyHttpTelnetBootstrap-3-1        system                5             RUNNABLE      0.0            0.000         0:0.015       false          true
19     arthas-NettyWebsocketTtyBootstrap-4-1      system                5             RUNNABLE      0.0            0.000         0:0.000       false          true
20     arthas-NettyWebsocketTtyBootstrap-4-2      system                5             RUNNABLE      0.0            0.000         0:0.000       false          true
21     arthas-shell-server                        system                5             TIMED_WAITING 0.0            0.000         0:0.000       false          true
22     arthas-session-manager                     system                5             TIMED_WAITING 0.0            0.000         0:0.000       false          true
23     arthas-UserStat                            system                5             WAITING       0.0            0.000         0:0.000       false          true
25     arthas-NettyHttpTelnetBootstrap-3-2        system                5             RUNNABLE      0.0            0.000         0:0.125       false          true
26     arthas-command-execute                     system                5             RUNNABLE      0.0            0.000         0:0.015       false          true
-1     C2 CompilerThread2                         -                     -1            -             0.0            0.000         0:0.328       false          true
-1     GC task thread#7 (ParallelGC)              -                     -1            -             0.0            0.000         0:0.000       false          true
-1     GC task thread#6 (ParallelGC)              -                     -1            -             0.0            0.000         0:0.000       false          true
-1     VM Periodic Task Thread                    -                     -1            -             0.0            0.000         0:0.000       false          true
-1     GC task thread#0 (ParallelGC)              -                     -1            -             0.0            0.000         0:0.000       false          true
-1     C2 CompilerThread0                         -                     -1            -             0.0            0.000         0:0.296       false          true
-1     Service Thread                             -                     -1            -             0.0            0.000         0:0.000       false          true
-1     C2 CompilerThread1                         -                     -1            -             0.0            0.000         0:0.218       false          true
-1     GC task thread#1 (ParallelGC)              -                     -1            -             0.0            0.000         0:0.000       false          true
-1     C1 CompilerThread3                         -                     -1            -             0.0            0.000         0:0.609       false          true
-1     VM Thread                                  -                     -1            -             0.0            0.000         0:0.031       false          true
-1     GC task thread#2 (ParallelGC)              -                     -1            -             0.0            0.000         0:0.000       false          true
-1     GC task thread#3 (ParallelGC)              -                     -1            -             0.0            0.000         0:0.000       false          true
-1     GC task thread#5 (ParallelGC)              -                     -1            -             0.0            0.000         0:0.000       false          true
-1     GC task thread#4 (ParallelGC)              -                     -1            -             0.0            0.000         0:0.000       false          true

例如:thread 1會打印線程ID 1的棧,通常是main函數(shù)的線程。

[arthas@28868]$ thread 1 | grep 'main('
    at arthas.ArthasTest.main(ArthasTest.java:15)

補充:也可以查看線程的阻塞情況,只支持找出synchronized關(guān)鍵字阻塞住的線程, 如果是java.util.concurrent.Lock, 目前還不支持。

如下一段程序:

package arthas;

public class ArthasTest {

    public static void main(String[] args) {
        MyTask myTask = new MyTask();
        for (int i = 0; i < 2; i++) {
            new Thread(myTask).start();
        }
    }
}

class MyTask implements Runnable {

    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName() + "開始執(zhí)行");
        synchronized (this) {
            System.out.println(Thread.currentThread().getName() + " 占用鎖");
            try {
                Thread.sleep(1 * 30 * 60 * 1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

結(jié)果:

Thread-0開始執(zhí)行
Thread-0 占用鎖
Thread-1開始執(zhí)行

可以用jstack查看,也可以用arthas:如下

[arthas@22336]$ thread -b
"Thread-0" Id=14 TIMED_WAITING
    at java.lang.Thread.sleep(Native Method)
    at arthas.MyTask.run(ArthasTest.java:21)
    -  locked arthas.MyTask@7253ba6b <---- but blocks 1 other threads!
    at java.lang.Thread.run(Thread.java:748)

[arthas@22336]$ thread
Threads Total: 31, NEW: 0, RUNNABLE: 8, BLOCKED: 1, WAITING: 4, TIMED_WAITING: 3, TERMINATED: 0, Internal threads: 15
ID     NAME                                       GROUP                 PRIORITY      STATE         %CPU           DELTA_TIME    TIME          INTERRUPTED    DAEMON
2      Reference Handler                          system                10            WAITING       0.0            0.000         0:0.000       false          true
3      Finalizer                                  system                8             WAITING       0.0            0.000         0:0.000       false          true
4      Signal Dispatcher                          system                9             RUNNABLE      0.0            0.000         0:0.000       false          true
5      Attach Listener                            system                5             RUNNABLE      0.0            0.000         0:0.031       false          true
18     arthas-timer                               system                5             WAITING       0.0            0.000         0:0.000       false          true
21     arthas-NettyHttpTelnetBootstrap-3-1        system                5             RUNNABLE      0.0            0.000         0:0.031       false          true
22     arthas-NettyWebsocketTtyBootstrap-4-1      system                5             RUNNABLE      0.0            0.000         0:0.000       false          true
23     arthas-NettyWebsocketTtyBootstrap-4-2      system                5             RUNNABLE      0.0            0.000         0:0.000       false          true
24     arthas-shell-server                        system                5             TIMED_WAITING 0.0            0.000         0:0.000       false          true
25     arthas-session-manager                     system                5             TIMED_WAITING 0.0            0.000         0:0.000       false          true
26     arthas-UserStat                            system                5             WAITING       0.0            0.000         0:0.000       false          true
28     arthas-NettyHttpTelnetBootstrap-3-2        system                5             RUNNABLE      0.0            0.000         0:0.093       false          true
29     arthas-command-execute                     system                5             RUNNABLE      0.0            0.000         0:0.015       false          true
14     Thread-0                                   main                  5             TIMED_WAITING 0.0            0.000         0:0.000       false          false
15     Thread-1                                   main                  5             BLOCKED       0.0            0.000         0:0.000       false          false
16     DestroyJavaVM                              main                  5             RUNNABLE      0.0            0.000         0:0.343       false          false
-1     C2 CompilerThread2                         -                     -1            -             0.0            0.000         0:0.218       false          true
-1     GC task thread#7 (ParallelGC)              -                     -1            -             0.0            0.000         0:0.000       false          true
-1     GC task thread#6 (ParallelGC)              -                     -1            -             0.0            0.000         0:0.000       false          true
-1     VM Periodic Task Thread                    -                     -1            -             0.0            0.000         0:0.000       false          true
-1     GC task thread#0 (ParallelGC)              -                     -1            -             0.0            0.000         0:0.000       false          true
-1     C2 CompilerThread0                         -                     -1            -             0.0            0.000         0:0.203       false          true
-1     Service Thread                             -                     -1            -             0.0            0.000         0:0.000       false          true
-1     C2 CompilerThread1                         -                     -1            -             0.0            0.000         0:0.218       false          true
-1     GC task thread#1 (ParallelGC)              -                     -1            -             0.0            0.000         0:0.000       false          true
-1     C1 CompilerThread3                         -                     -1            -             0.0            0.000         0:0.640       false          true
-1     VM Thread                                  -                     -1            -             0.0            0.000         0:0.015       false          true
-1     GC task thread#2 (ParallelGC)              -                     -1            -             0.0            0.000         0:0.000       false          true
-1     GC task thread#3 (ParallelGC)              -                     -1            -             0.0            0.000         0:0.000       false          true
-1     GC task thread#5 (ParallelGC)              -                     -1            -             0.0            0.000         0:0.000       false          true
-1     GC task thread#4 (ParallelGC)              -                     -1            -             0.0            0.000         0:0.000       false          true

[arthas@22336]$ thread 15
"Thread-1" Id=15 BLOCKED on arthas.MyTask@7253ba6b owned by "Thread-0" Id=14
    at arthas.MyTask.run(ArthasTest.java:19)
    -  blocked on arthas.MyTask@7253ba6b
    at java.lang.Thread.run(Thread.java:748)

thread -b找出當前阻塞其他線程的線程。 可以看到 Thread-0 阻塞了其他一個線程

Thread 查看線程狀態(tài)可以看到ID為15的Thread-1處于阻塞狀態(tài)。

Thread 15 查看具體的信息,可以看到當前阻塞的資源被哪個線程占有等情況。

3. jad 反編譯類信息

[arthas@28868]$ jad arthas.ArthasTest

ClassLoader:
+-sun.misc.Launcher$AppClassLoader@18b4aac2
  +-sun.misc.Launcher$ExtClassLoader@3af87f7

Location:
/E:/xiangmu/MvnPro/target/classes/

/*
 * Decompiled with CFR.
 */
package arthas;

public class ArthasTest {
    public static void main(String[] args) {
        System.out.println(Thread.currentThread().getName());
        String test = System.getProperty("test");
        while (true) {
            String test2;
            if ((test2 = System.getProperty("test")) == null || test2.equals(test)) {
                continue;
            }
            System.out.println(test2);
            test = test2;
        }
    }
}

4.開啟保存日志

options 查看配置,相當于查看arthas內(nèi)置的全局配置屬性

options save-result true 開啟保存日志。會保存到{user}/logsarthas-cache/result.log 中

5.退出

如果只是退出當前的連接,可以用quit或者exit命令。Attach到目標進程上的arthas還會繼續(xù)運行,端口會保持開放,下次連接時可以直接連接上。

如果想完全退出arthas,可以執(zhí)行stop命令。

3. 實操

1. 修改以及查看JVM的環(huán)境變量和JVM的系統(tǒng)屬性

sysenv 查看JVM的環(huán)境變量
sysprop 查看JVM的所有的系統(tǒng)屬性
sysprop java.version 查看單個系統(tǒng)的屬性
sysprop user.country US 修改user.country 屬性的值為US

比如上面修改test 屬性為 testValue,修改之后會被程序System.getProperty(key) 獲取到

[arthas@28868]$ sysprop  test testValue
Successfully changed the system property.
 KEY                               VALUE
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 test                              testValue
[arthas@28868]$ sysprop  test
 KEY                               VALUE
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 test                              testValue

我們到IDEA查看main線程打出的信息:testValue

2. 監(jiān)視方法的執(zhí)行時長以及方法的返回值

比如如下簡單的Controller和Service:

controller:

package com.xm.ggn.controller;

import com.xm.ggn.service.common.MessageService2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {

    @Value("${test:defaultValue}")
    private String test;

    @RequestMapping("test")
    public String test() {
        return test;
    }

    @Autowired
    private MessageService2 messageService;

    @RequestMapping("tx1")
    public void tx1() {
        messageService.tx1();
    }

    @RequestMapping("tx2")
    public void tx2() {
        messageService.tx2();
    }

    @RequestMapping("tx4")
    public void tx4() {
        messageService.tx4();
    }

}

service:

package com.xm.ggn.service.common;

public interface MessageService2 {

    void tx1();

    void tx2();

    void tx3();

    void tx4();
}

serviceimpl:

package com.xm.ggn.service.common.impl;

import com.xm.ggn.bean.common.Message;
import com.xm.ggn.mapper.common.MessageMapper;
import com.xm.ggn.service.common.MessageService2;
import org.springframework.aop.framework.AopContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.transaction.Transactional;

@Service
//@Transactional
public class MessageService2Impl implements MessageService2 {

    @Autowired
    private MessageMapper messageMapper;

    @Override
    @Transactional
    public void tx1() {
        // 調(diào)用tx3方法會回滾,因為這里有事務(wù)直接,會走代理,且tx3方法會加入本事務(wù)
        tx3();
    }

    @Override
    public void tx2() {
        try {
            Thread.sleep(1 * 1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        // 調(diào)用tx3方法不會回滾,因為這里沒有事務(wù)。即使tx3有事務(wù)也不會走代理,因為通過內(nèi)部方法調(diào)用不會走代理。解決辦法查看tx4 方法
        tx3();
    }

    @Override
    @Transactional
    public void tx3() {
        Message message = new Message();
        message.setTitle("tx3");
        messageMapper.insert(message);

        int i = 1 / 0;
    }

    //  這樣進行方法內(nèi)部調(diào)用AOP會生效,主啟動類加@EnableAspectJAutoProxy(proxyTargetClass = true, exposeProxy = true) 注解
    @Override
    public void tx4() {
        MessageService2 messageService = (MessageService2) AopContext.currentProxy();
        // 這樣調(diào)用tx3會進行回滾,走的是代理類的方法
        messageService.tx3();
    }
}

啟動應(yīng)用后啟動arthas并且監(jiān)視對應(yīng)進程

1. 搜索類以及反編譯查看AOP增強的類

1. 搜索:模糊搜索

[arthas@13232]$ sc *.MessageService2
com.xm.ggn.service.common.MessageService2
com.xm.ggn.service.common.impl.MessageService2Impl
com.xm.ggn.service.common.impl.MessageService2Impl$$EnhancerBySpringCGLIB$$7fa3a2fc
Affect(row-cnt:3) cost in 56 ms.

如果查看加載的所有類,可以用:

sc *

2. 反編譯查看AOP增強的類

[arthas@13232]$ jad com.xm.ggn.service.common.impl.MessageService2Impl$$EnhancerBySpringCGLIB$$7fa3a2fc

ClassLoader:
+-sun.misc.Launcher$AppClassLoader@18b4aac2
  +-sun.misc.Launcher$ExtClassLoader@3c22fc4c

Location:
/E:/xiangmu/bs-media/media-server/target/classes/

/*
 * Decompiled with CFR.
 *
 * Could not load the following classes:
 *  com.xm.ggn.service.common.impl.MessageService2Impl
 */
package com.xm.ggn.service.common.impl;

import com.xm.ggn.service.common.impl.MessageService2Impl;
import java.lang.reflect.Method;
import org.aopalliance.aop.Advice;
import org.springframework.aop.Advisor;
import org.springframework.aop.SpringProxy;
import org.springframework.aop.TargetClassAware;
import org.springframework.aop.TargetSource;
import org.springframework.aop.framework.Advised;
import org.springframework.aop.framework.AopConfigException;
import org.springframework.cglib.core.ReflectUtils;
import org.springframework.cglib.core.Signature;
import org.springframework.cglib.proxy.Callback;
import org.springframework.cglib.proxy.Dispatcher;
import org.springframework.cglib.proxy.Factory;
import org.springframework.cglib.proxy.MethodInterceptor;
import org.springframework.cglib.proxy.MethodProxy;
import org.springframework.cglib.proxy.NoOp;

public class MessageService2Impl$$EnhancerBySpringCGLIB$$7fa3a2fc
extends MessageService2Impl
implements SpringProxy,
Advised,
Factory {
    private boolean CGLIB$BOUND;
    public static Object CGLIB$FACTORY_DATA;
    ...
}

2. 檢測方法的執(zhí)行時長: trace

比如檢測:com.xm.ggn.controller.TestController 類的所有方法,如下:

[arthas@13232]$ trace com.xm.ggn.controller.TestController *
Press Q or Ctrl+C to abort.
Affect(class count: 1 , method count: 5) cost in 93 ms, listenerId: 1
`---ts=2021-01-12 21:15:57;thread_name=http-nio-8088-exec-1;id=108;is_daemon=true;priority=5;TCCL=org.springframework.boot.web.embedded.tomcat.TomcatEmbeddedWebappClassLoader@3ee39a1c
    `---[45.0785ms] com.xm.ggn.controller.TestController:tx4() [throws Exception]
        +---[44.0299ms] com.xm.ggn.service.common.MessageService2:tx4() #40 [throws Exception]
        `---throw:java.lang.ArithmeticException #39 [/ by zero]

  trace還有好幾個參數(shù)可以過濾以及支持檢測多個類的多個方法以及根據(jù)時長過濾等

補充:用trace命令檢測多個類的多個方法,形成調(diào)用鏈檢測

比如如下

(1) Service1

package com.xm.ggn.test.arthas;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.concurrent.TimeUnit;

/**
 * @author: 喬利強
 * @date: 2021/2/7 14:37
 * @description:
 */
@Service
@Slf4j
public class ArthasTestService {

    @Autowired
    private ArthasTestService2 arthasTestService2;

    public void method1() {
        log.debug("method1");
        try {
            TimeUnit.SECONDS.sleep(1);
        } catch (InterruptedException ignore) {
        }

        this.method2();
        this.method3();
    }


    public void method2() {
        log.debug("method2");
        try {
            TimeUnit.SECONDS.sleep(2);
        } catch (InterruptedException ignore) {
        }

        arthasTestService2.method1();
        arthasTestService2.method2();
    }

    public void method3() {
        log.debug("method3");
        try {
            TimeUnit.SECONDS.sleep(3);
        } catch (InterruptedException ignore) {
        }
    }

}

(2)Service2

package com.xm.ggn.test.arthas;

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import java.util.concurrent.TimeUnit;

/**
 * @author: 喬利強
 * @date: 2021/2/7 14:37
 * @description:
 */
@Service
@Slf4j
public class ArthasTestService2 {

    public void method1() {
        log.debug("method1");
        try {
            TimeUnit.SECONDS.sleep(1);
        } catch (InterruptedException ignore) {
        }
    }

    public void method2() {
        log.debug("method2");
        try {
            TimeUnit.SECONDS.sleep(2);
        } catch (InterruptedException ignore) {
        }
    }
}

(3)Controller

package com.xm.ggn.test.arthas;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author: 喬利強
 * @date: 2021/2/7 14:34
 * @description:
 */
@RestController
@RequestMapping("/arthas")
public class ArthasTestCcontroller {

    @Autowired
    private ArthasTestService arthasTestService;

    @GetMapping("testTrace")
    public void testTrace() {
        arthasTestService.method1();
    }
}

(4)測試:

1》trace檢測單個類,結(jié)果如下: 可以看到?jīng)]監(jiān)測ArthasTestService2 內(nèi)部調(diào)用時長

[arthas@28892]$ sc *.ArthasTestService*
com.xm.ggn.test.arthas.ArthasTestService
com.xm.ggn.test.arthas.ArthasTestService2
Affect(row-cnt:2) cost in 50 ms.
[arthas@28892]$ trace com.xm.ggn.test.arthas.ArthasTestService *
Press Q or Ctrl+C to abort.
Affect(class count: 1 , method count: 4) cost in 83 ms, listenerId: 1
`---ts=2021-02-07 19:32:08;thread_name=http-nio-8088-exec-1;id=12e;is_daemon=true;priority=5;TCCL=org.springframework.boot.web.embedded.tomcat.TomcatEmbeddedWebappClassLoader@87060c0
    `---[9003.109599ms] com.xm.ggn.test.arthas.ArthasTestService:method1()
        +---[0.035ms] org.slf4j.Logger:debug() #22
        +---[5002.6882ms] com.xm.ggn.test.arthas.ArthasTestService:method2() #28
        |   `---[5002.1293ms] com.xm.ggn.test.arthas.ArthasTestService:method2()
        |       +---[0.008ms] org.slf4j.Logger:debug() #34
        |       +---[1000.8634ms] com.xm.ggn.test.arthas.ArthasTestService2:method1() #40
        |       `---[2000.6096ms] com.xm.ggn.test.arthas.ArthasTestService2:method2() #41
        `---[3000.115601ms] com.xm.ggn.test.arthas.ArthasTestService:method3() #29
            `---[3000.07ms] com.xm.ggn.test.arthas.ArthasTestService:method3()
                `---[0.007ms] org.slf4j.Logger:debug() #45

2》 監(jiān)測兩個類的多個方法: 可以看到也監(jiān)測了ArthasTestService2的相關(guān)方法

[arthas@28892]$ trace -E com.xm.ggn.test.arthas.ArthasTestService|com.xm.ggn.test.arthas.ArthasTestService2 method1|method2|method3
Press Q or Ctrl+C to abort.
Affect(class count: 2 , method count: 5) cost in 122 ms, listenerId: 3
`---ts=2021-02-07 19:34:51;thread_name=http-nio-8088-exec-4;id=131;is_daemon=true;priority=5;TCCL=org.springframework.boot.web.embedded.tomcat.TomcatEmbeddedWebappClassLoader@87060c0
    `---[9002.5463ms] com.xm.ggn.test.arthas.ArthasTestService:method1()
        +---[0.0627ms] org.slf4j.Logger:debug() #22
        +---[5001.5262ms] com.xm.ggn.test.arthas.ArthasTestService:method2() #28
        |   `---[5001.484ms] com.xm.ggn.test.arthas.ArthasTestService:method2()
        |       +---[0.008101ms] org.slf4j.Logger:debug() #34
        |       +---[1000.377399ms] com.xm.ggn.test.arthas.ArthasTestService2:method1() #40
        |       |   `---[1000.288999ms] com.xm.ggn.test.arthas.ArthasTestService2:method1()
        |       |       `---[0.0178ms] org.slf4j.Logger:debug() #18
        |       `---[2000.178ms] com.xm.ggn.test.arthas.ArthasTestService2:method2() #41
        |           `---[2000.134ms] com.xm.ggn.test.arthas.ArthasTestService2:method2()
        |               `---[0.0112ms] org.slf4j.Logger:debug() #26
        `---[3000.27ms] com.xm.ggn.test.arthas.ArthasTestService:method3() #29
            `---[3000.235499ms] com.xm.ggn.test.arthas.ArthasTestService:method3()
                `---[0.007101ms] org.slf4j.Logger:debug() #45

  這里暫時沒找到監(jiān)測兩個類或多個類所有方法的套路~~~

結(jié)果解釋:

(1)[5001.5262ms] com.xm.ggn.test.arthas.ArthasTestService:method2() #28當前節(jié)點在當前步驟的耗時,單位為毫秒。 #28 表示在源文件的第28行。

(2)還有另一種寫法:[min=0.020435ms,max=0.022325ms,total=0.04276ms,count=2] org.springframework.util.Assert:isTrue() #95表示對該方法中相同的方法調(diào)用進行了合并。比如:

if ("1".equals(a) && "2".equals(b)) {

  // doXXX

} 

3.查看某個類調(diào)用過程中的返回值: 比如觀察方法出參和返回值 watch

[arthas@19792]$ watch com.xm.ggn.controller.TestController * "{params,returnObj}"
Press Q or Ctrl+C to abort.
Affect(class count: 1 , method count: 5) cost in 79 ms, listenerId: 3
method=com.xm.ggn.controller.TestController.test location=AtExit
ts=2021-01-12 21:32:16; [cost=0.0674ms] result=@ArrayList[
    @Object[][isEmpty=true;size=0],
    @String[defaultValue],
]

調(diào)用一次test 方法之后結(jié)果如上。可以看到參數(shù)為空,返回值是一個String值為"defaultValue"。

這個結(jié)果可能不太明顯,增加一個測試用例:

(1)Controller增加一個方法:

    @RequestMapping("testMap")
    public Map test(String key1, String key2) {
        HashMap<String, Object> stringObjectHashMap = new HashMap<>();
        stringObjectHashMap.put(key1, key1);
        stringObjectHashMap.put(key2, key2);
        return stringObjectHashMap;
    }

(2)arthas檢測: -x指定輸出結(jié)果的屬性遍歷深度,默認為 1

[arthas@27848]$ watch com.xm.ggn.controller.TestController * "{params,returnObj}" -x 3
Press Q or Ctrl+C to abort.
Affect(class count: 1 , method count: 6) cost in 38 ms, listenerId: 5

(3)訪問:

http://localhost:8088/testMap?key1=111&key2=222

(4)arthas控制臺輸出

method=com.xm.ggn.controller.TestController.test location=AtExit
ts=2021-01-12 21:40:26; [cost=0.0351ms] result=@ArrayList[
    @Object[][
        @String[111],
        @String[222],
    ],
    @HashMap[
        @String[111]:@String[111],
        @String[222]:@String[222],
    ],
]

補充:第一次運行jar包選擇進程進入的時候會自動從互聯(lián)網(wǎng)下載幾個依賴包,自動放在 ${user}/.arthas/lib。如果是離線環(huán)境可以將lib下面的包傳到離線的服務(wù)器,啟動的時候指定路徑:如下:

java -jar arthas-boot.jar --arthas-home C:UsersqlqDesktopplaintoolsarthaslib3.4.5arthas

--arthas-home 指定依賴包的路徑

補充:Arthas目前支持Web Console,用戶在attach成功之后,可以直接訪問:http://127.0.0.1:3658/。默認情況下,arthas只listen 127.0.0.1,所以如果想從遠程連接,則可以使用--target-ip參數(shù)指定listen的IP,更多參考-h的幫助說明。

補充:logger查看以及修改日志級別

[arthas@11520]$ logger  #查看日志級別
 name                ROOT
 class               ch.qos.logback.classic.Logger
 classLoader         sun.misc.Launcher$AppClassLoader@18b4aac2
 classLoaderHash     18b4aac2
 level               INFO
 effectiveLevel      INFO
 additivity          true
 codeSource          file:/E:/Maven/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
 appenders           name            CONSOLE
                     class           ch.qos.logback.core.ConsoleAppender
                     classLoader     sun.misc.Launcher$AppClassLoader@18b4aac2
                     classLoaderHash 18b4aac2
                     target          System.out

[arthas@11520]$ logger --name ROOT --level debug  #修改日志級別
Update logger level success.
[arthas@11520]$ logger  #查看日志級別
 name                ROOT
 class               ch.qos.logback.classic.Logger
 classLoader         sun.misc.Launcher$AppClassLoader@18b4aac2
 classLoaderHash     18b4aac2
 level               DEBUG
 effectiveLevel      DEBUG
 additivity          true
 codeSource          file:/E:/Maven/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
 appenders           name            CONSOLE
                     class           ch.qos.logback.core.ConsoleAppender
                     classLoader     sun.misc.Launcher$AppClassLoader@18b4aac2
                     classLoaderHash 18b4aac2
                     target          System.out

補充:sc 也可以查看類以及靜態(tài)變量的信息,如下:

[arthas@9432]$  sc -d -f com.xm.ggn.test.FieldTest
 class-info        com.xm.ggn.test.FieldTest
 code-source       /E:/xiangmu/bs-media/media-server/target/classes/
 name              com.xm.ggn.test.FieldTest
 isInterface       false
 isAnnotation      false
 isEnum            false
 isAnonymousClass  false
 isArray           false
 isLocalClass      false
 isMemberClass     false
 isPrimitive       false
 isSynthetic       false
 simple-name       FieldTest
 modifier          public
 annotation
 interfaces
 super-class       +-java.lang.Object
 class-loader      +-sun.misc.Launcher$AppClassLoader@18b4aac2
                     +-sun.misc.Launcher$ExtClassLoader@707ed9b0
 classLoaderHash   18b4aac2
 fields            name     test
                   type     java.lang.String
                   modifier final,public,static
                   value    123

                   name     name
                   type     java.lang.String
                   modifier private

也可以使用ognl獲取靜態(tài)變量:

[arthas@9432]$ ognl '@com.xm.ggn.test.FieldTest@test'
@String[123]

總結(jié)

以上是生活随笔為你收集整理的arthas简单使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

亚洲一级久久 | 九九热精品视频在线播放 | 午夜久久影院 | 天天干天天插伊人网 | 久久精品爱爱视频 | 成人精品久久久 | 国产乱老熟视频网88av | 亚洲综合精品视频 | 欧美日韩精品免费观看 | 黄色免费网| 久草视频手机在线 | 日韩精品视频在线免费观看 | 色综合久久久久综合体 | 一级一片免费视频 | 丝袜美女在线观看 | 在线视频日韩精品 | 成人免费ⅴa| 天天艹天天| 爱爱av网站| a视频在线播放 | 97福利视频 | 欧美巨乳波霸 | 婷婷六月天综合 | 看av在线| 免费在线视频一区二区 | 91av99| 日本精品视频在线观看 | 日本三级不卡视频 | 99精品视频在线观看 | 精品99免费视频 | 欧美精品久久天天躁 | 国产午夜精品久久 | 91丨porny丨九色 | 亚洲精品美女久久17c | 久久在线免费观看 | 在线免费视 | 免费av成人在线 | 久久无码av一区二区三区电影网 | 久草在线视频免费资源观看 | 在线免费av网站 | 91传媒免费观看 | 精品久久中文 | 97天堂网| 久久精品99国产精品亚洲最刺激 | av先锋中文字幕 | 亚洲天堂毛片 | 中文字幕第一页在线 | 6080yy精品一区二区三区 | 色偷偷网站视频 | 国产精久久久久久妇女av | 狠狠干.com | 国产区网址 | 亚洲黑丝少妇 | 久久亚洲福利视频 | 丁香婷婷综合激情五月色 | 99热这里只有精品1 av中文字幕日韩 | 狠狠躁夜夜躁人人爽超碰91 | 久久久在线 | 99热超碰| 天天综合导航 | 欧美日韩二区三区 | 久久亚洲精品国产亚洲老地址 | 日韩有码网站 | 亚洲成人av电影 | 黄免费在线观看 | 久久免费精品国产 | 精品视频在线播放 | 99久久日韩精品视频免费在线观看 | 午夜久久久影院 | 亚洲一区二区视频在线播放 | 国产特黄色片 | 亚洲精品久久久久www | 亚洲精品国产精品乱码在线观看 | 日本久久免费电影 | 日韩一区二区三免费高清在线观看 | 婷婷久久网站 | 日韩va欧美va亚洲va久久 | 亚洲国产精品人久久电影 | 黄a在线看 | av在线免费观看不卡 | 日韩在线免费视频 | 九九99靖品| 精品在线免费视频 | 国产精品久久久久久久久久 | 久久精品久久国产 | a视频在线播放 | 亚洲精品女人久久久 | 亚洲天堂视频在线 | 91精品资源| 9999在线观看 | 欧美日韩精品免费观看视频 | 91黄色在线观看 | 青青河边草观看完整版高清 | 久黄色| 91麻豆精品国产午夜天堂 | 亚洲 欧美 综合 在线 精品 | 午夜男人影院 | 国产99区 | 久久夜av| 91看片在线播放 | 亚洲综合网 | 日本在线观看一区二区 | 久久精品国产99国产 | 最近中文字幕高清字幕免费mv | 成人app在线播放 | 国语对白少妇爽91 | 国产视频精选 | 国产在线观看国语版免费 | 国产99久久精品一区二区300 | 月丁香婷婷 | 国产香蕉久久 | 日本精a在线观看 | 麻豆国产露脸在线观看 | 日本在线观看一区二区三区 | 亚洲无毛专区 | 99色婷婷 | 亚洲精品乱码久久久久久蜜桃动漫 | 国产资源av | 欧美成人aa | 国产精品久久一区二区三区不卡 | 91九色蝌蚪视频 | 久草97| 久久99久久99 | 久久视频免费在线观看 | 久久污视频 | 午夜a区| 日韩精品三区四区 | 国内精品久久久久影院一蜜桃 | 91精品1区| 色多视频在线观看 | 97在线资源| 国产无套视频 | 欧美成人黄色 | 久久免费国产 | 天堂视频一区 | 国产日韩欧美在线一区 | 久久综合影院 | 超碰人人草人人 | 国产免费大片 | 久久天天躁夜夜躁狠狠85麻豆 | 久久久电影 | 亚洲精品国产自产拍在线观看 | 国产在线观看免费 | 一级做a爱片性色毛片www | 国产成人av电影 | 亚洲精品视频在线观看免费 | 天天摸日日操 | 久久综合久久综合久久 | 久久99久久久久久 | 免费国产亚洲视频 | 天天躁日日躁狠狠躁av麻豆 | 国产精品福利小视频 | 成人国产电影在线观看 | 欧美一级性生活视频 | 在线导航av | 激情在线免费视频 | 久久免费视频在线观看6 | 999成人网 | 福利网在线| 天天操夜夜想 | 992tv又爽又黄的免费视频 | 亚洲精品视频一二三 | 欧美激情精品久久久久久 | 久久人91精品久久久久久不卡 | 久久免费99| 日韩av午夜 | 日韩成人xxxx | 欧美日韩91 | 久久情侣偷拍 | 福利视频精品 | 夜夜躁狠狠躁日日躁 | 狠狠婷婷| 99久久99久久精品国产片果冰 | 人人爽人人澡人人添人人人人 | 亚洲伦理中文字幕 | 亚洲精品理论片 | 中文字幕在线观看完整版电影 | 夜夜躁狠狠躁 | 日日射av | 夜夜躁天天躁很躁波 | 欧美日韩高清在线一区 | 在线天堂v| 亚洲少妇天堂 | 国内精品视频在线 | 人人看人人 | 免费av看片| 一级一级一片免费 | 欧美日韩在线精品一区二区 | 日韩欧美精品一区二区 | 国产99久久久欧美黑人 | 久久不射网站 | a视频在线观看免费 | 国产精品美女久久久久aⅴ 干干夜夜 | 天天操天天干天天摸 | 久久久精品久久日韩一区综合 | 亚洲精品午夜久久久 | 国产97视频| 日韩免费一区 | 成人资源站 | 在线播放第一页 | 这里只有精品视频在线观看 | 黄色大全免费网站 | 69精品视频在线观看 | 亚洲成a人片在线www | 久久官网 | 国产 字幕 制服 中文 在线 | 91色影院 | 最新精品视频在线 | av中文字幕免费在线观看 | 91免费看黄 | 精品久久久久久电影 | 日韩高清网站 | 成人cosplay福利网站 | 国产一级片一区二区三区 | 免费激情在线电影 | 亚洲精品视频一二三 | 成人精品99 | 91av九色| 激情开心 | aaa毛片视频 | 中文一二区 | 国产一级免费片 | 91视频免费国产 | 日本性高潮视频 | 亚洲一区久久久 | 精品国产一区二区三区日日嗨 | 91九色老 | 福利视频一区二区 | 中文字幕在线不卡国产视频 | 黄色不卡av| 波多野结衣资源 | 国产在线观看你懂的 | 人人擦 | 超碰97国产| 国产伦精品一区二区三区在线 | 91av电影在线观看 | 狠狠色丁香九九婷婷综合五月 | 国产精品久久久久久久久搜平片 | 天堂在线免费视频 | 国产69久久精品成人看 | 国内成人综合 | 人人爱爱人人 | 精品高清美女精品国产区 | 日韩精品不卡在线 | 91av在线免费播放 | 在线观看av片 | 91麻豆国产 | 久久99精品国产99久久6尤 | 久久综合色天天久久综合图片 | 国产精品久久久久久久久久久久久 | 91在线观看高清 | 国产成人精品一区二区三区在线 | 菠萝菠萝蜜在线播放 | 国内精品二区 | 在线色亚洲 | 综合中文字幕 | 中文区中文字幕免费看 | 日韩欧美在线综合网 | 亚洲精品1234区 | 五月婷婷中文字幕 | 国产精品不卡视频 | 在线观看的黄色 | 99精品久久99久久久久 | 国产伦精品一区二区三区照片91 | 国产福利中文字幕 | 日本精品中文字幕 | 色吊丝在线永久观看最新版本 | 久久久电影 | av在线播放快速免费阴 | 婷婷六月综合亚洲 | 天天色成人 | 91在线精品播放 | 国产精品福利在线 | 日本中文乱码卡一卡二新区 | 在线观看91精品国产网站 | 国产一区成人 | 午夜国产福利在线 | 亚洲视屏一区 | 亚洲精品乱码久久久久久写真 | 99 视频 高清 | 偷拍精品一区二区三区 | 日韩一级片大全 | 黄色av高清 | 国产精品久久久久久久久久99 | av品善网| 国产夫妻自拍av | 国产一级在线观看视频 | 808电影免费观看三年 | 射射射综合网 | 亚洲一级黄色大片 | 高清国产午夜精品久久久久久 | 国产精品中文字幕在线播放 | 亚洲精品国产欧美在线观看 | 国产亚洲精品久久 | 国产一区二区三区在线 | 成人h视频在线 | 2019中文字幕网站 | www.在线观看av | 九九九九九九精品任你躁 | 国产99久久精品 | 九九国产精品视频 | 丁香久久久 | 久热免费在线观看 | av官网| 日韩aⅴ视频| 人人插人人澡 | 日日夜夜爱 | 黄色com | 伊人狠狠| 91免费看黄色 | 一级黄色片在线 | 久久久久久久久久久久亚洲 | 五月天久久综合网 | 911亚洲精品第一 | 久久伊人精品一区二区三区 | 欧美大片aaa | 一本—道久久a久久精品蜜桃 | 99精品视频在线播放观看 | 久久国产精品一二三区 | 精品国产免费人成在线观看 | 韩国av免费看| 午夜精品区 | 欧美 亚洲 另类 激情 另类 | 久久99热这里只有精品国产 | 天天躁日日躁狠狠躁av麻豆 | 麻豆一区在线观看 | 国产精品久久久久久超碰 | 国产精品中文字幕av | 中文字幕资源在线观看 | 亚洲一区美女视频在线观看免费 | 成年人免费在线播放 | 91精品视频在线看 | 久久免费在线 | 成人一级片在线观看 | 国产精品久久久久久五月尺 | 麻豆影视在线免费观看 | 欧洲精品视频一区 | 午夜在线看 | 欧美激情视频在线免费观看 | 亚洲综合丁香 | 天天综合日日夜夜 | 国产成人a亚洲精品v | 欧美成人精品三级在线观看播放 | 丁香五婷| 久久久不卡影院 | 狠狠操狠狠干2017 | 成人污视频在线观看 | 国产精品激情偷乱一区二区∴ | 在线国产黄色 | 成人免费一区二区三区在线观看 | 欧美激情精品久久久久久免费 | av高清在线| 亚洲成人家庭影院 | 最新日韩在线观看视频 | 亚洲小视频在线观看 | 91在线www| av电影在线观看完整版一区二区 | 亚洲综合成人av | 青青射 | 麻豆免费看片 | 韩国av一区 | 国产免费av一区二区三区 | 99国产在线视频 | 四虎国产精品成人免费4hu | 免费h精品视频在线播放 | 国产日韩视频在线播放 | 国精产品永久999 | 欧美了一区在线观看 | 日韩一区二区免费播放 | 久久成视频| 2023年中文无字幕文字 | 欧美资源在线观看 | 人人超碰人人 | 亚洲视频资源在线 | 极品美女被弄高潮视频网站 | 久久精品日韩 | 国内小视频 | 国产精品一区二区电影 | 黄色片亚洲 | 国产精品成人一区 | 日日添夜夜添 | 国产免费三级在线观看 | 亚洲二区精品 | 一级片在线 | 国产在线播放不卡 | 亚洲精品美女免费 | 国产一区二区久久久久 | 久久综合色天天久久综合图片 | 成人黄色在线观看视频 | av一本久道久久波多野结衣 | 日韩欧美亚洲 | 天天天色综合a | 亚洲九九九在线观看 | www免费看片com | 在线最新av | 91视频在线国产 | 99在线精品视频观看 | 2021国产在线 | 国产高清免费在线观看 | 日韩电影在线一区 | 久久精品成人欧美大片古装 | 亚洲伊人色 | 99久久久国产精品美女 | 91精品婷婷国产综合久久蝌蚪 | 69久久99精品久久久久婷婷 | 国产午夜精品久久久久久久久久 | 97超碰人人澡人人爱 | 国产在线看 | 最近中文字幕免费 | 久久久久麻豆v国产 | 久久久蜜桃 | 亚洲黄色免费 | 久草在线免费在线观看 | 日韩欧美一区二区三区在线观看 | 久久伊人八月婷婷综合激情 | 日韩精品久久一区二区三区 | 久久综合久久综合这里只有精品 | 亚洲 欧美日韩 国产 中文 | 日韩免费福利 | 亚洲欧美国产视频 | 99久久超碰中文字幕伊人 | 国产一区麻豆 | 三级黄色大片在线观看 | 中文字幕在线日亚洲9 | 国产主播大尺度精品福利免费 | 91精品久久久久 | 福利视频导航网址 | 最新久久久 | 日韩av一区二区在线 | 久久精品99久久 | 日韩精品亚洲专区在线观看 | 日韩成人一级大片 | 国产精彩视频一区 | 日本韩国精品在线 | 中文字幕二区在线观看 | 国产一区二区三区免费视频 | 香蕉视频国产在线 | 在线欧美日韩 | 国产黄色精品网站 | 蜜臀av在线一区二区三区 | 久久午夜电影 | 亚洲国产美女精品久久久久∴ | 国产精品综合av一区二区国产馆 | 91精品国自产拍天天拍 | 久久香蕉电影网 | 欧美激情视频一区 | 国产最新精品视频 | 久久 亚洲视频 | 国产一区二区不卡视频 | 最近最新中文字幕视频 | 亚洲在线观看av | 国产视频一级 | 69av在线视频| 欧美日韩精品免费观看 | 色婷婷播放 | 免费毛片aaaaaa | av网站在线免费观看 | av东方在线 | 成人黄色在线电影 | 国产很黄很色的视频 | 91av在线免费观看 | 中文免费在线观看 | 国产免费影院 | 丁香婷婷激情五月 | 日韩av福利在线 | 国产精品久久久视频 | 久久久国产成人 | 免费观看成人 | 欧美国产一区在线 | 97精品视频在线 | 成人av观看 | 少妇激情久久 | 正在播放 久久 | 国产手机在线观看视频 | 日日操日日干 | 黄a网站 | av久久久 | 四虎精品成人免费网站 | 久久久久久久久久久综合 | 欧美激情视频一区二区三区 | 免费看黄色大全 | 91视频 - 88av | 在线视频观看成人 | 久久国产精品二国产精品中国洋人 | 婷婷天天色 | 三级大片网站 | 亚洲免费一级 | 黄污网| 国产成人在线精品 | 国产成人精品一区二区在线观看 | 日日操夜夜操狠狠操 | 黄色亚洲在线 | 国产精品自产拍在线观看中文 | 99精品国产99久久久久久福利 | 99热手机在线 | 日韩精品在线免费观看 | 欧美精品免费在线观看 | 久久久久久久久福利 | 天天插视频| 国产成人黄色网址 | 91香蕉视频污在线 | 欧美精品久久久久久久久久白贞 | 超碰人人在 | 久久精品视频在线 | 欧美老少交 | 精品少妇一区二区三区在线 | 欧美精品在线视频观看 | 一级黄色片在线免费看 | 伊人网综合在线观看 | 狠狠干狠狠色 | 久久久国产一区二区三区四区小说 | 97视频免费| 精品国模一区二区三区 | 久久黄页 | 久久久久国产成人免费精品免费 | 国产精品24小时在线观看 | 久久久精品国产免费观看一区二区 | 国产精品久久久久久久午夜 | 美女视频黄色免费 | 黄色免费大片 | 四虎永久免费网站 | 夜夜躁狠狠躁日日躁 | 欧美 日韩 国产 成人 在线 | 天天操天天射天天插 | 久久综合色影院 | 久久久黄视频 | 亚洲一区二区观看 | 亚洲精品视频第一页 | 香蕉久久久久久久 | 成人国产精品一区二区 | 女人高潮特级毛片 | 久久久天天操 | 久久成人资源 | 久在线观看视频 | 久久精品亚洲一区二区三区观看模式 | 中文字幕影片免费在线观看 | 香蕉视频在线免费 | 国产成人精品一区二区三区网站观看 | 国产不卡精品 | 91久久国产自产拍夜夜嗨 | 天天干天天草天天爽 | 福利视频一区二区 | 久久福利在线 | 中文字幕色站 | 久久久在线视频 | 欧美xxxx性xxxxx高清 | 一本到在线 | 91最新国产 | 日韩激情在线视频 | 亚洲国产精品视频在线观看 | 97av免费视频 | 色偷偷88欧美精品久久久 | 麻豆视频免费入口 | 日韩资源在线观看 | 久久免费久久 | 日韩av在线免费看 | 久久久久国产成人精品亚洲午夜 | 高清中文字幕 | 91成人看片| 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 日韩三级不卡 | 天天爱综合| 免费色视频网址 | 亚洲午夜精品久久久久久久久 | 国产精品99久久久久久久久 | 国产精品99久久久久 | 99精品在线视频观看 | 免费在线观看国产精品 | 亚洲最新av在线网站 | 国内丰满少妇猛烈精品播 | 日日插日日干 | 91精品国产91久久久久久三级 | 国产日韩精品视频 | 国产精品观看在线亚洲人成网 | 欧美资源 | 91精品国产乱码久久桃 | 伊人日日干 | 成人国产亚洲 | 少妇bbbb搡bbbb桶 | 亚洲国产中文字幕在线视频综合 | 免费a网址 | 青青草国产精品视频 | 国产麻豆视频在线观看 | 久久99久久久久久 | 国产黄色大片 | 亚洲国产一区二区精品专区 | 91在线国内视频 | a特级毛片| 高清色免费 | 国产成人777777 | 99国产成+人+综合+亚洲 欧美 | 一区二区三区久久精品 | 97久久久免费福利网址 | 午夜少妇一区二区三区 | 国产69精品久久99不卡的观看体验 | 中文在线a在线 | 特级黄色片免费看 | 国产免费久久精品 | 色婷婷丁香 | 最近中文字幕大全中文字幕免费 | 久久91网 | 狠狠艹夜夜干 | 久久www免费人成看片高清 | 欧美日韩高清一区二区 | 黄色日视频 | 午夜视频免费 | 麻豆国产精品永久免费视频 | 十八岁以下禁止观看的1000个网站 | 成人国产电影在线观看 | 免费瑟瑟网站 | 人人爽爽人人 | 日本黄色片一区二区 | 美女很黄免费网站 | 999视频在线播放 | 99国产精品视频免费观看一公开 | 亚洲精品美女在线 | 久热香蕉视频 | www麻豆视频 | 国产成人av电影在线观看 | 五月激情站 | 国产成人精品免高潮在线观看 | 国产一区二区综合 | 黄在线 | 国产黄a三级 | 国产成人精品一区二区三区网站观看 | 一区二区三区四区影院 | 啪啪免费观看网站 | 久草免费福利在线观看 | 亚洲欧洲精品久久 | 精品视频999 | 久久久久国产精品www | 国产91精品高清一区二区三区 | 天天操夜夜操天天射 | 欧美精品久久久久久久亚洲调教 | 国产精品嫩草影院99网站 | 日韩综合第一页 | 国产日韩视频在线观看 | 九色免费视频 | 国内精品久久久久影院男同志 | 片网址| 亚洲精品视频在 | 国产99在线 | 香蕉在线视频观看 | adn—256中文在线观看 | 色婷婷六月天 | 天堂av在线网址 | 色综合久久久久久久久五月 | 最近乱久中文字幕 | 久久久久国产精品厨房 | 久久国产片 | 久久九九网站 | 在线电影 一区 | 天堂在线v | 国产精品高潮久久av | 国产夫妻性生活自拍 | 日韩在线观看视频免费 | 九九免费精品视频在线观看 | 黄色小说18 | 色香蕉视频 | 亚洲人成综合 | 日本中文字幕在线观看 | 免费看色的网站 | 91热爆在线观看 | 国产美女在线免费观看 | 国内精品久久久久影院日本资源 | av中文字幕在线电影 | 色老板在线视频 | 欧美性大胆 | 四虎成人免费观看 | 国产69精品久久久久99尤 | 中文字幕影片免费在线观看 | 国产高清不卡一区二区三区 | 欧美日在线观看 | 日本黄色免费在线 | av久久在线 | 久久8精品 | 四虎影视久久久 | 国产成人l区| 激情喷水 | 黄色一级在线免费观看 | 国产视频中文字幕在线观看 | 日韩视频中文字幕在线观看 | 国产精品成人国产乱 | 在线观看日韩一区 | 久久96国产精品久久99软件 | 97免费视频在线 | 国产精品一区二区免费视频 | 亚洲日韩中文字幕 | 久久国产精品免费看 | 精品福利网站 | 国产特级毛片aaaaaa | 国产在线精品视频 | 日韩美女av在线 | 国产精品一级视频 | 久久超级碰视频 | 成人在线观看你懂的 | 国产成人福利在线 | 97超碰.com| 久草在在线视频 | 91丨精品丨蝌蚪丨白丝jk | 亚州人成在线播放 | 欧美大片在线看免费观看 | 天天干天天操天天射 | 久久影院中文字幕 | 成人黄色电影在线播放 | 999久久久免费视频 午夜国产在线观看 | 91九色综合| 久久久久国产成人免费精品免费 | 日韩va欧美va亚洲va久久 | 成人性生交大片免费观看网站 | 爱干视频 | 亚洲欧洲精品视频 | 二区三区在线视频 | 日韩黄色免费 | 三级在线国产 | 精品视频中文字幕 | 久久高清视频免费 | 亚洲欧美日韩在线看 | 免费久久久久久 | 国产免费久久精品 | 韩国三级在线一区 | 在线观看视频97 | 国产精彩视频一区二区 | 国产中文a| 黄av在线| 日韩在线网址 | 国产真实在线 | 天天综合网天天综合色 | 久久国产精品久久精品 | 免费中午字幕无吗 | 9999免费视频| 97在线视频免费看 | 视频在线观看一区 | 日韩电影一区二区在线 | 四川bbb搡bbb爽爽视频 | 91精品国产综合久久久久久久 | 中文字幕第一页在线播放 | 日韩免费观看一区二区三区 | 日本中文字幕在线一区 | 97久久精品午夜一区二区 | 九九免费在线观看 | 天天干天天拍天天操 | 亚洲国产欧美在线人成大黄瓜 | 欧美激情视频在线免费观看 | 日韩一区二区免费在线观看 | 国产v亚洲v | 欧美精品999 | 在线观看成人网 | 国产精品美女久久久久久免费 | 亚洲精品av中文字幕在线在线 | 99免费看片 | 日韩免费在线观看视频 | 97超级碰碰| 成人免费影院 | av大全在线观看 | 日韩二区三区在线 | 国产亚洲激情视频在线 | 久久久久久久亚洲精品 | 天天色天天爱天天射综合 | www.福利| 97视频在线观看播放 | 日韩网站免费观看 | 99精品在线直播 | 黄色片视频免费 | 久久久久久国产精品美女 | 91麻豆国产福利在线观看 | 国产精品福利午夜在线观看 | 国产99久久久国产精品成人免费 | 在线视频观看亚洲 | 免费亚洲婷婷 | 精品视频在线免费 | 久久久免费在线观看 | 成人97视频一区二区 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 午夜美女wwww | 精品极品在线 | 黄色精品久久 | 欧美美女视频在线观看 | 中文字幕免费观看全部电影 | av一级在线观看 | 精品国产片| 国内精品久久久久久中文字幕 | 91麻豆精品国产自产在线 | 91成人精品一区在线播放69 | 日韩专区中文字幕 | 日韩精品第1页 | 成年人免费看的视频 | 国产精品美女毛片真酒店 | 亚洲成人精品在线观看 | 九九九在线观看 | 日日夜夜精品 | 黄色小说18 | 久久久人人爽 | 99综合电影在线视频 | 九七视频在线 | 91av视频播放 | 91九色自拍| 二区视频在线 | 久久精品国产精品亚洲精品 | 中文字幕日韩电影 | 婷婷5月激情5月 | 久久精品视频网址 | 在线看av的网址 | 日韩高清一区二区 | 麻豆久久一区二区 | 99热日本 | 人成免费网站 | 91日韩在线播放 | 久久久久亚洲精品国产 | 午夜精品久久 | 91免费版在线观看 | 中文字幕免费中文 | 国产黄色一级片在线 | 久久成人麻豆午夜电影 | 国产精品免费观看视频 | 国产在线精品视频 | 亚洲国产精品一区二区久久hs | 欧美va天堂va视频va在线 | 丁香午夜 | av在线免费观看网站 | 91在线操 | 激情综合色图 | 欧美日韩二三区 | 国内精品在线一区 | 日韩在线视频观看 | 欧美极品少妇xxxx | 9999精品视频| 在线观看一区视频 | 黄色www免费| 中文字幕在线免费97 | 亚洲aⅴ免费在线观看 | 人人爽人人搞 | 啪啪小视频网站 | 日韩视频免费在线 | 久久免费电影 | 国产99久久九九精品 | 性色大片在线观看 | 欧美色一色 | 中文字幕在线观看av | 91精品资源 | 91福利社区在线观看 | 成人一区不卡 | 国产96在线观看 | 亚洲香蕉视频 | 亚洲国产成人精品在线观看 | 国产一区二区视频在线播放 | 天天插一插 | 99色人| 成人va天堂 | 国产亚洲精品中文字幕 | 天天天操操操 | 中文字幕123区 | 在线va视频 | 在线探花| 国产免费久久精品 | 久久草网| 精品国产一区二区三区不卡 | 国产成在线观看免费视频 | 在线观看一区二区视频 | 亚洲精品白浆高清久久久久久 | 色偷偷97 | 欧美老女人xx | 在线视频你懂 | 日日夜夜天天射 | 99热国产在线观看 | 久久精品91视频 | 久久精品1区2区 | 91九色视频观看 | 天天操·夜夜操 | 亚洲欧美乱综合图片区小说区 | 99精品黄色 | 在线观看国产亚洲 | 亚洲精品人人 | 日韩在线大片 | 国产视频2区 | 亚洲综合小说电影qvod | 一级黄色大片在线观看 | 在线成人小视频 | 欧美一区免费在线观看 | 精品国产免费一区二区三区五区 | 国产精品资源在线观看 | 国产做爰视频 | 色综合久久久久综合 | 美女视频黄免费 | 中文字幕国产视频 | 91亚洲永久精品 | 在线之家官网 | 久久久综合电影 | 超碰国产在线播放 | 五月天国产 | 国语精品免费视频 | 97在线观看免费高清完整版在线观看 | 91久久精品一区二区三区 | 亚洲综合精品在线 | 九九热久久久 | 五月天网页 | 久久精品久久久久久久 | 亚洲综合视频在线播放 | 免费黄色在线播放 | 久久免费电影网 | 中文字幕中文 | 国产视频1区2区3区 久久夜视频 | 久久久网站 | 99久久99久久综合 | 国产欧美精品在线观看 | 九九视频网 | 成人免费xxx在线观看 | www.成人久久 | 在线观看日韩精品 | 中文在线天堂资源 | 国产一线天在线观看 | 一区 在线 影院 | 免费视频91蜜桃 | aaa黄色毛片 | 亚洲一区二区三区精品在线观看 | 亚洲精品国精品久久99热一 | 久久草av| 久久久久中文字幕 | 99热在线免费观看 | 国产又黄又硬又爽 | 正在播放五月婷婷狠狠干 | 国产91在| 久久精品一 | 国产91全国探花系列在线播放 | 涩av在线| 日韩天堂在线观看 | 亚洲国产精品日韩 | 亚洲电影网站 | 97在线视频免费看 | 超碰人人做 | 天天爱天天操天天干 | 玖玖爱免费视频 | 国产精品不卡一区 | 久久在线免费 | 欧美老少交 | 免费看十八岁美女 | 黄色一级大片在线免费看国产一 | 中文资源在线播放 | 国产黄a三级三级三级三级三级 | 午夜精品久久久 | 亚洲精品在线国产 | 2021国产精品 | 亚洲毛片在线观看. | 久久免费高清 | 精品三级av | 天天摸日日摸人人看 | 丁香在线视频 | 天天色天天综合网 | 97狠狠干 | 久久精品美女视频网站 | 天天做日日爱夜夜爽 | 99久久综合狠狠综合久久 | 三级黄色在线观看 | 国产二区视频在线 | 日本中文字幕在线视频 | 九九视频免费 | 久久69精品久久久久久久电影好 | 91桃色在线观看视频 | 日韩欧美在线一区 | 日韩欧美视频免费在线观看 | 日日干综合 | 五月综合| 亚州欧美视频 | 黄色视屏免费在线观看 | 91av视频网站 | 久久一级片 | 久久久久久久免费 | 欧美精品日韩 | 婷婷综合五月天 | 中文字幕乱偷在线 | 黄色av播放| 色偷偷88欧美精品久久久 | 超碰在线中文字幕 | 超碰在线官网 | 在线小视频你懂的 | 成人国产精品免费 | 欧美精品在线观看免费 | 国产精品综合av一区二区国产馆 | 欧美成年黄网站色视频 | 五月婷婷欧美视频 | 天天躁日日躁狠狠躁av中文 | 精品久久久久久久久久 | 中文字幕在线播出 | 99视频久久 | 亚洲美女久久 | 亚洲va男人天堂 | 蜜臀aⅴ国产精品久久久国产 | 国内一级片在线观看 | 麻豆超碰| 日韩av一区二区三区在线观看 | 日韩大片在线播放 | 国产精品a成v人在线播放 | 欧美成人性战久久 | 日韩色av色资源 | 日日干综合 | 国产免费观看av | 欧美精品久久久久久久久久白贞 | 一区二区三区日韩在线 |