Pinpoint部署和踩坑记录

article/2025/8/23 13:35:07

pinpoint是韩国人开源的 APM (Application Performance Management/应用性能管理)工具 - Pinpoint。它基于google Dapper开发,目标就是为n(n>=1)层架构开发新的跟踪平台,为n层架构的系统提供解决方案。pinpoint能够对基于java的大规模分布式系统和应用做调用链的跟踪。pinpoint提供了一个web页面展示分布式系统的拓扑图以及系统这各个组件之间关系。pinpoint 有3个主要组件组成:日志收集器[Collector]、控制台[Web]、代理[Agent],采用HBase进行存储。请结合下文的Pinpoin架构图来理解各组件之间如何分工合作的。

Pinpoint的特点如下:

  • 分布式事务跟踪,跟踪跨分布式应用的消息
  • 自动检测应用拓扑,帮助你搞清楚应用的架构
  • 水平扩展以便支持大规模服务器集群
  • 提供代码级别的可见性以便轻松定位失败点和瓶颈
  • 使用字节码增强技术,添加新功能而无需修改代码
  • 安装探针不需要修改哪怕一行代码及trace server端部署简单,支持hdfs存储
  • 具有简单的阀值触发报警功能
  • 移植性比较强的,会比较讨人喜欢(相比cat)
  • 自定义插件功能(参考https://github.com/naver/pinpoint/wiki/Pinpoint-Plugin-Developer-Guide)

本文的部署方式也适用于最新的1.8.3版。

集群角色规划

IP address

Hostname

Service

10.203.11.2

cdh-test-1-4

zk,nn1,zkfc,hmaster,pp_collector,pp_web

10.203.11.3

cdh-test-1-5

zk,nn2,zkfc,hmaster,pp_agent

10.203.11.4

cdh-test-1-1

zk,datanode,nm,hrs,jn

10.203.11.5

cdh-test-1-3

datanode,nm,hrs,jn

10.203.11.6

cdh-test-1-2

datanode,nm,hrs,jn

Pinpoint collctor采集器和web服部署在4号机:

pinpoint agent测试用的项目(tomcat服)部署在5号机:

Pinpoint部署步

1、在cdh-test-1-4主机配JDK、装hbase、装Pinpoint的collector和web组件

1.1 需要安装Java

从oracle官网下载、安装jdk-1.8.0后,在/etc/profile文件配置环境变量

export PATH=$PATH:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64/bin

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64

export HADOOP_HOME=/tony_soft/hadoop-2.8.4

export HBASE_HOME=/tony_soft/hbase-1.4.9

export ZOOKEEPER_HOME=/tony_soft/zookeeper-3.4.14

使配置生效:source /etc/profile

 

1.2 安装Hbase

解压Hbase放入指定目录

修改 /hbase/conf/hbase-env.sh 中的JAVA_HOME环境变量位置

export JAVA_HOME=/usr/java/jdk8/

在使用JDK8的情况下, hbase-env.sh中这两行可以注释,避免启动警告。

https://upload-images.jianshu.io/upload_images/2435527-63f353aa78f2001f.png?imageMogr2/auto-orient/

修改Hbase的配置信息
[hadoop@cdh-test-1-4 ~]$ grep --color -C 3 "hbase.rootdir" $HBASE_HOME/conf/hbase-site.xml

-->

<configuration>

  <property>

    <name>hbase.rootdir</name>

    <value>hdfs://tony/hbase</value>

    <description>指定hdfs上的HRegionServers共享目录</description>

  </property>

先启动hbase(我这里是hbase集群模式) cd /tony_soft/hbase/bin && ./start-hbase.sh

再初始化Hbase的pinpoint库: 执行pinpoint提供的Hbase初始化语句用于创建pinpoint所需的表

./hbase shell /home/pp_res/hbase-create.hbase

创建成功后进到hbase shell可看到16张表已建好:

在web UI也能看到HBase的16张表

1.3 安装部署pinpointcollector组件

解压tomcat到指定位置,用于部署pinpoint-collector

cd /home/pp_res/

tar -zxvf apache-tomcat-8.5.40.tar.gz

mv apache-tomcat-8.5.40/ /tony_soft/pp_col

# 修改pp_col的Tomcat配置,修改端口,避免与下面部署的pp_web服务有关端口冲突。

cd /tony_soft/pp_col/conf/

sed -i 's/port="8005"/port="18005"/g' server.xml

sed -i 's/port="8080"/port="18080"/g' server.xml

sed -i 's/port="8443"/port="18443"/g' server.xml

sed -i 's/port="8009"/port="18009"/g' server.xml

sed -i 's/redirectPort="8443"/redirectPort="18443"/g' server.xml

解压pinpoint的collector的war包

cd /home/pp_res/

rm -rf /tony_soft/pp_col/webapps/*     # 清空默认配置

用unzip解压pinpoint的collector组件:

unzip /tony_soft/pinpoint/resource/pinpoint-collector-1.7.3.war -d /tony_soft/pp_col/webapps/ROOT

(如果没有unzip,执行yum -y install unzip安装unzip)

启动第一个Tomcat服务:cd /tony_soft/pp_col/bin/ && ./startup.sh

成功后可在/tony_soft/pp_col/logs目录下的 catalina.out看到启动日志,查看启动过程是否出现错误

1.4 部署pinpointweb组件

再次解压Tomcat后move到指定位置,这个tomcat用于部署pp_web

cd /home/pp_res/

tar -zxvf apache-tomcat-8.5.40.tar.gz

mv apache-tomcat-8.5.40/ /tony_soft/pp_web

# 同样的,修改一下pp_web有关的端口号

cd /tony_soft/pp_web/conf/

sed -i 's/port="8005"/port="28005"/g' server.xml

sed -i 's/port="8080"/port="28080"/g' server.xml

sed -i 's/port="8443"/port="28443"/g' server.xml

sed -i 's/port="8009"/port="28009"/g' server.xml

sed -i 's/redirectPort="8443"/redirectPort="28443"/g' server.xml

解压pinpoint web组件的war包

rm -rf /tony_soft/pp_web/webapps/*   # 清空默认配置

unzip pinpoint的web组件

[root@cdh-test-1-4 classes]#  unzip /tony_soft/pinpoint/resource/pinpoint-web-1.7.3.war -d /tony_soft/pp_web/webapps/ROOT

/tony_soft/pp_web/webapps/ROOT/WEB-INF/classes下的配置文件说明:

  • hbase.properties:配置pp_web从哪个数据源获取采集数据,这里我只指定Hbase的zk地址(在4号机)

  • jdbc.properties :pp_web连接自身Mysql数据库的连接认证配置文件

  • sql目录 pp_web本身有些数据需要存放在MySQL数据库中,需初始化表结构(执行两个.sql脚本即可)
  • pinpoint的web组件
  • .properties :这里pp_web集群的配置文件(如果你需要pp_web集群)
  • applicationContext-* .xml :这些文件在未来调优中会用到
  • log4j.xml :日志相关配置

因为我要在同一个主机下同时运行两个Tomcat,需要先干三件事——

第一件事,先停掉刚才启动的collector的tomcat服务,再去配置两套环境变量:

使这两组环境变量生效:source /etc/profile

第二件事,server.xml中配置端口不冲突(请参考上文步骤1.3)

第三件事,修改collector组件的Tomcat脚本startup.sh、shutdown.sh,在各自文件末尾都添加这几行:

export JAVA_HOME=$JAVA_HOME

export PATH=$PATH:$JAVA_HOME/bin 

export CLASSPATH=$JAVA_HOME/lib 

export CATALINA_HOME=$CATALINA_HOME 

export CATALINA_BASE=$CATALINA_BASE

修改web组件的Tomcat的脚本startup.sh、shutdown.sh,在各自文件末尾都添加这几行:

export JAVA_HOME=$JAVA_HOME

export PATH=$PATH:$JAVA_HOME/bin 

export CLASSPATH=$JAVA_HOME/lib 

export CATALINA_HOME=$CATALINA_2_HOME 

export CATALINA_BASE=$CATALINA_2_BASE

先启动第一个Tomcat:cd /tony_soft/pp_col/bin/ && ./startup.sh

再启动第二个Tomcat:cd /tony_soft/pp_web/bin/ && ./startup.sh

同样的,可以打开catalina.out文件来查看启动是否完成、启动过程是否出现错误等


pp_col和pp_web启动完成,可看到相关的端口处于LISTEN状态,1开头的端口号是pinpoint collector有关的服务端口,2开头的是pinpoin web有关的:

去浏览器中进行访问。输入地址http://${yourIPaddress}:28080 进入PinPoint的Web页面:

 

 

2、在cdh-test-1-5主机上部署测试项目及PinPoint-Agent组件

首先,也要把所需文件放到cdh-test-1-5主机上的的 /tony_soft/pp_test 目录下,包括pinpoint-agent-1.7.3.tar.gz、jdk、tomcat、test.war

2.1 参考上文1.1的安装、配置jdk

 

2.2 部署测试项

解压tomcat到指定目录,用于部署测试项目

[root@cdh-test-1-5]# cd /tony_soft/pp_test

[root@cdh-test-1-5 pp_test]# tar -zxvf apache-tomcat-8.5.40.tar.gz

[root@cdh-test-1-5]# mv apache-tomcat-8.5.40  /tony_soft/pp_test/

从war包部署测试项目

cd /tony_soft/pp_test/

rm -rf /tony_soft/pp_test/webapps/*

[root@cdh-test-1-5 bin]# unzip /tony_soft/test.war -d /tony_soft/pp_test/webapps/ROOT

运行后直接访问8080端口或者8080/test即可。其中/test是会发生异常的,方便后面的警报功能测试。

在继续安装pp_agent开始监控应用之前,做一个小结:

(1)如果Hbase不是和pp-web, pp-col装在一台机器,需要安装zookeeper,只需安装并确认在监听2181端口

(2)如果zookeeper安装在独立机器上,需修改pp_col 和 pp_web的配置文件pinpoint-collector.properties和pinpoint-web.properties,否则会导致pp_col和pp_web模块无法启动

 

2.3 安装配置pp_agent

cd /tony_soft/pp_test

mkdir -p /tony_soft/pp_agent

tar -zxvf pinpoint-agent-1.7.3.tar.gz -C /tony_soft/pp_agent
修改/tony_soft/pp_agent/pinpoint.config,把里面的 profiler.collector.ip 的值改为装有pinpoint collector组件的ip地址。

再去修改启动脚本/tony_soft/pp_test/bin/catalina.sh,通过添加下列三行来添加探针:

这些探针是为了agent把被监控应用的相关数据发送到collector。三行代码分别代表:

  • pp_agent目录下 pinpoint-bootstrap-1.7.3.jar包的绝对路径
  • pp_agent的唯一ID,不能与被监控的其他项目相同
  • 被采集项目的名称,pp_web页面中下拉框选择项目时显示的名字

配置好后启动测试项目

cd /tony_soft/pp_test/bin/ && ./startup.sh

 

3、Pinpoint的Alarm功能需要MySQL服务

如果要使用Pinpoint的Alarm功能需要MySQL服务支持,否则点击pp web页面右上角的齿轮后,其中一些功能(如编辑用户、用户组、报警等功能)会出现如图所示的异常:

所以需要先使用pp_web组件自带的sql文件创建有关的表

在MYSQL里面建了两张表以后,pp_web页面仍然无法正常显示User Group,解决办法请看下文“2019-50-28第三次踩坑记录”。

最后来看一下pinpoint的架构:

架构中各组件的角色:

pinpoint web UI显示的内容来自于后端的pinpoint web服务,

pinpoint web服务会去hbase中取数,

collector会把来自于agent的数据采集上来,由collector存入hbase(本案例采用hbase集群模式,不是单机HBASE)。

Demo展示时,可以把pp collector服务和pp web服务部署在同一个主机上,方便collector接收agent发来的数据后发给web服务,web服务再对hbase读/写;agent服务部署在应用端,方便将数据发送给collector。

 

 

======2019-05-27第一次踩坑=======

 

在重启pp_col和pp_web时出现故障:pp_col能重启,但是无法启动pp_web

(1)重启pp_col、pp_web,pp_col成功重启、pp_web失败重启

(2)重启pp_web、pp_col,pp_col成功重启、pp_web失败重启

(3)查看相关日志后发现有is very like to cause memory leak字样

(4)原因:在4号机上同pp_col和pp_web服致内存不足,致了无法同运行col服和web服。那么改成pp_col在4号机启动,pp_web在1号机启动(http端口号是28080),之后发现在浏览器访问28080端口页面时打不开。原因很有可能是之前只是放行了从外网访问4号机IP地址的28080端口,而没有放行从外网访问1号机IP地址的28080端口。

所以现在改成在4号机启动pp_web服务,在1号机启动pp_col服务。需要修改相关的/etc/profile(CATALINA_HOME、CATALINA_BASE环境变量)、/tony_soft/pp_col/conf/server.xml(有关端口)后成功启动各自的pp_col、pp_web :

测试的项目日志也表明启动成功:

 

 

======2019-05-28第二次踩坑记录======

 

【解决web页不显示应用问题】

昨天和今天都被一个问题困扰,就是web页面不显示已添加到pp_agent的java应用,下面是解决过程。

第一次尝试——

先是分别重启pp_collector、pp_web、pp_agent、pp_test(java应用程序),仍不显示被agent打了探针的应用, 如截图:

第二次尝试——

检查过各主机的/etc/hosts文件,检查过主机间的网络通信,都没问题。

百思不得其解,再次查看pinpoint架构图后突然灵光一闪!联想到pp_web显示数据的来源是hbase,hbase的数据来源是collector,而collector的数据由agent发来。既然agent已经随着java的test应用启动了,那么agent是否将应用的数据成功发送到collector了呢?如果成功发送了应用的数据,那么web页应该显示已添加的application呀!然后去检查/tony_soft/pp_agent/pinpoint.config配置文件,发现配置项profiler.collector.ip写的不是collector所在的IP地址。推测这个错误很可能是导致web页面的application list下拉框不显示已添加的application原因。改成collector所在主机的IP地址后,依次重启pp_collector、pp_web服务、pp_agent、pp_test应用,再去查看web页,证明推测是对的:

到pp_test也就是测试用的java应用的web页面http://${yourIP}:8080/多访问几下,发现hbase的requests数目也大于0了,证实了推测正确:

 

 

===========2019-50-28第三次踩坑记录==========

 

【web页面用户组管理页问题】

现象——

为了将来使用Alarm功能对指定用户提供告警,需要配置用户和用户组。在web页点击右上角的齿轮后,发现查看User Group时发现错误提示,如截图:

第一次排查——

进到pp_web服务所在的日志目录,查看最新的日志catalina.out,发现有Unknow database ‘pinpoint’字样:

2019-05-28 14:04:10 [ERROR](c.n.p.w.c.UserGroupController      ) Exception occurred while trying to CRUD userGroup information

org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is java.sql.SQLException: Cannot create PoolableConnectionFactory (Unknown database 'pinpoint')

        at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:289)

然后检查$CATALINA_HOME//webapps/ROOT/WEB-INF/classes/jdbc.properties,发现日志里提到的库名没在mysql中:

原因是之前通过两个.sql脚本初始化的数据库表都没在pinpoint库名下。于是先到数据库中创建pinpoint库:

然后分别重启pp_web、pp_col、test应用,再到web页面查看User Group,仍然报错。

 

第二次排查——

通过web页面的User Group尝试创建用户,报错:

再去查看最新的catalina.out日志,发现有提示说pinpoint下面的puser表不存在:

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'pinpoint.puser' doesn't exist

进到mysql shell检查之前通过pp_web组件自带的sql文件创建的表,发现puser表不属于pinpoint库

解决办法是把那些表都拷贝到pinpoint库下面:

拷贝完以后,不用重启pp_web服务,到web页面重新查看和操作用户和用户组,发现没有报错了:

再添加多个用户以后,能在mysql shell中查看到该用户了:

添加用户组:

创建用户组成功后,将用户tony_test1添加到组里:

 

 

=========下一步=========

 

需要加入更多的JAVA应用到pinpoint-agent当中,以便监控java作业运行情况、方便定位应用故障、方便发现应用的性能问题和大数据集群的性能问题。

例如,在部署了pinpoint-web、pinpoint-collector、hbase集群、pinpoint-agent的集群上,如果想要监控一个通过jar包启动的应用,那么可以通过下列方式为应用部署pinpoint-agent探针:

java -javaagent:/tony_soft/pp_agent/pinpoint-bootstrap-1.7.3.jar \

-Dpinpoint.agentId=pp_agentID_2019-05-28 -Dpinpoint.applicationName=monitor-service \

-jar monitor-service-0.0.1-SNAPSHOT.jar

应用启动后,可以在web页的应用列表里看到:

监控其他java应用的做法也是类似的,就是通过在启动java应用的时候像刚才那样添加启动参数即可,不需要改java应用的代码。

jar包monitor-service-0.0.1-SNAPSHOT.jar启动之后,里面的应用程序会去查mysql数据库,那么pinpoint-agent能跟踪到,但是我的web页中的拓扑图没显示MySQL组件,如截图:

但是,点击页面的Inspetor按钮之后,就能在页面底部Mysql有关信息,如截图:

【未完, 待续。。。】


http://chatgpt.dhexx.cn/article/6HkuZ4JA.shtml

相关文章

Pinpoint 技术架构及部署

目录 一、背景 二、简介 三、Pinpoint Collector 收集端 四、Pinpoint Web 五、Pinpoint Agent 六、监控效果图 七、其他 一、背景 随着项目微服务的进行&#xff0c;微服务数量逐渐增加&#xff0c;服务间的调用也越来越复杂&#xff0c;我们急切需要一个APM工具帮我们…

性能测试利器 — 全链路监控工具Pinpoint安装教程(非docker版本)

1、pinpoint介绍 1.1、相关简介 pinpoint是开源在github上的一款APM监控工具&#xff0c;它是由Java编写的&#xff0c;用于大规模分布式系统的监控&#xff1b;它对性能的影响最小(只增加约3%资源利用率)&#xff0c;安装agent是无侵入式的&#xff0c;只需要在被测试的Tomc…

pinpoint监控学习笔记

pinpoint分以下主要模块&#xff1a; pinpoint-agent&#xff0c;这个工程引用了其它核心jar&#xff0c;整个pinpoint监控的配置文件在这个项目中: pinpoint.config。 pinpoint-bootstrap: 这个工程定义了当jvm启动时&#xff0c;利用java instrument&#xff0c;实现对于后续…

Pinpoint 快速开始

Pinpoint有三个主要组件(collector, web, agent)&#xff0c;并使用HBase作为存储。Collector和Web被打包为单个war文件&#xff0c;而agent被打包以便可以作为java agent附加到应用。 Pinpoint quickstart 为agent提供一个示例TestApp&#xff0c; 并使用tomcat maven插件来启…

Pinpoint 一款强大的APM工具

背景 程序的监控一直是程序员最头痛的事情之一&#xff0c;现网程序有问题怎么办&#xff1f;看进程看端口 top/free/df 三件套&#xff1f;网络抓包&#xff1f;看日志&#xff1f;所以为了满足这些初级需求很多公司都做了主机监控&#xff0c;进程端口监听等功能&#xff0c…

pinpoint新增自定义插件监控

pinpoint&#xff1a;源码地址&#xff1a;https://github.com/pinpoint-apm/pinpoint.git 定义&#xff1a;基于Google的Dapper理论&#xff0c;通过在程序内部的class的方法&#xff0c;构造方法等地方埋点&#xff0c;通过Java-agent技术实现类增强的一种链路追踪的监控&…

pinpoint 安装 for spring cloud

pinpoint 安装 for spring cloud 1.环境说明2.安装步骤2.1 安装pinpoint2.2 安装agent2.2.1 下载2.2.2 agent配置2.2.3 JVM 配置2.2.4 日志中输出traceId 3.部署问题3.1 多个相同名称的项目放在一个pinpoint下监控3.2 agent id 过长问题&#xff08;最大长度不能超过24个字符&a…

利用Pinpoint搭建全链路监控系统

随着项目微服务的进行&#xff0c;微服务数量逐渐增加&#xff0c;服务间的调用也越来越复杂&#xff0c;我们急切需要一个APM工具帮我们监控各个服务的性能及对服务间的调用进行跟踪&#xff0c;而通过调研多个开源APM工具后&#xff0c;最终我们选择了Pinpoint。 简介 Pinp…

pinpoint安装部署(相关博客合集)

pinpoint安装部署 说明一、PinPoint介绍及工作原理1.1 确定部署的组件及服务 二、相关组件版本兼容情况2.1 确定版本 三、部署3.1 HBASE3.2 agent 说明 本博客写在搭建PinPoint之前&#xff0c;主要是用来记录查阅的相关博客资料&#xff0c;等到动手搭建完再更新实际部署操作…

分布式跟踪工具Pinpoint技术入门

本文初衷 因为工作需要&#xff0c;这周研究了一下APM&#xff08;Application Performance Management&#xff09;相关技术&#xff0c;看了些许资料&#xff0c;对比了各种技术的特点&#xff0c;最终选择Pinpoint作为性能监控工具&#xff0c;本文的主要目的是记录本人部署…

【Pinpoint】安装

文章目录 一. 下载1. 版本&#xff08;2.3.3&#xff09;2. [下载地址](https://github.com/pinpoint-apm/pinpoint/releases/tag/v2.3.3)3. 下载内容4. [hbase](http://archive.apache.org/dist/hbase/1.2.6/) 二. 安装1. 安装JDK82. 安装hbase1.2.61. 解压文件2. 修改sh文件3…

2、Pinpoint-Server端安装

0、本章节简介 安装Pinpoint服务端 采用Docker安装所以需要提前安装 docker和 docker-compose 本文使用的版本是Pinpoint:2.1版本 ps 由于Pinpoint依赖了很多的基础镜像&#xff0c;所以推荐不要在已经部署了程序的机器上部署&#xff0c;以免造成端口号冲突&#xff0c;推荐使…

pinpoint 介绍

基本概念 APM (Application Performance Management/应用性能管理)工具 为大规模分布式系统. 开发语言:Java. 特点: ● 低侵入性 不用改一行业务代码 ● 低性能影响(大约3%资源增长) ServerMap 可以直观的看到分布式系统拓扑结构和节点的事务数量. Realtime Active Thr…

Pinpoint--基础--02--架构设计

Pinpoint–基础–02–架构设计 1、整体架构 1.1、Pinpoint Collector 数据收集模块&#xff0c;接收Agent发送过来的监控数据&#xff0c;并存储到HBase部署在 Web 容器上 1.2、Pinpoint Web 监控展示模块&#xff0c;展示系统调用关系、调用详情、应用状态等&#xff0c;并…

PinPoint(二)技术详解

英文原文&#xff1a;https://naver.github.io/pinpoint/1.8.4/techdetail.html 说明&#xff1a;【】中内容为方便解释自己加的 在这篇文章中&#xff0c;我们描述了Pinpoint的技术细节比如请求追踪&#xff08;transaction tracing&#xff09;和字节码插装&#xff08;byte…

pinpoint搭建及springboot接入使用

效果图&#xff1a; 搭建步骤 Pinpoint github地址&#xff1a;GitHub - pinpoint-apm/pinpoint: APM, (Application Performance Management) tool for large-scale distributed systems. 下载对应的包以及安装hbase 首先安装hbase hbase版本是1.7.1&#xff0c; 下载地址…

APM链路监控:PinPoint使用手册

文章目录 一、PinPoint简介二、PinPoint架构组成三、PinPoint使用说明1.首页2.请求调用栈3.服务状态4.链路事务筛选 结尾 一、PinPoint简介 pinpoint是开源在github上的一款APM监控工具&#xff0c;它是由java编写的&#xff0c;用于大规模分布式系统的监控&#xff1b;它对性…

Pinpoint--基础--3.1--安装部署--环境准备

Pinpoint–基础–3.1–安装部署–环境准备 前提 使用hd用户登陆 完成基础环境搭建https://blog.csdn.net/zhou920786312/article/details/118212302代码位置 https://gitee.com/DanShenGuiZu/learnDemo/tree/master/pinpoint-learn/demo11、安装环境准备 1.1、jdk1.8 基础环…

Pinpoint分布式系统性能监控工具

Pinpoint分布式性能监控工具(docker安装) 在做性能压测的时候&#xff0c;你是不是有只能看到测试报告&#xff1f; 在做性能压测的时候&#xff0c;你是不是想知道每一个方法执行了多长时间&#xff1f; Pinpoint几乎可以帮助你查看你想看到的每一个细节。 Pinpoint是什么&…

PinPoint使用教程

这篇博客&#xff0c;应该是是目前为止&#xff0c;百度上能搜到的关于PinPoint使用教程中最详细的一份答案了。为什么这样说呢&#xff0c;因为我不想写PinPoint使用教程的&#xff0c;后来百度上搜了好久&#xff0c;搜烦了&#xff0c;一怒之下&#xff0c;自己出了一片最详…