1. 概念:

说白了就是对环境要求极高,要么是生产环境,要么是高仿生产环境。

参考文章:https://baijiahao.baidu.com/s?id=1602958532092938474&wfr=spider&for=pc


2. 要点:

  • 业务模型:梳理出核心业务、非核心业务,确认流量高峰的时候可能对哪些业务场景产生影响

  • 测试数据:注意数据隔离,正常的数据绝对不能污染,比如push给用户的信息及权限等。

    方式一:使用测试账户进行,测试完毕将这些账户产生的流水数据清除

    方式二: 打标记,比如在header里增加一个特殊标记,业务处理过程中识别这个标记并传递下去,这样一条请求的全流程就不会出错,也不会污染正常的数据。

  • 测试工具:JMeter、LR等

  • 监控工具:主要是APM、InfluxDB&Telegraf&Grafana等


3. APM全链路监控分析

(1)Application Performance Management:应用性能管理

(2)架构图如下:

全链路压测_第1张图片

(3)搭建环境

  • 一个干净的centos7 64位虚机: https://blog.51cto.com/11009785/2412236

  • 关闭防火墙

    systemctl stop firewalld.service  # 停止firewall

    systemctl disable firewalld.service  # 禁止firewall 开机启动

  • 关闭selinux

    vi /etc/selinux/config

    将 SELINUX=enforcing 改为  SELINUX=disabled

    reboot

  • 安装docker和docker-compose

    yum update -y

    yum install -y lrzsz zip unzip docker

    yum install -y epel-release

    yum install -y python-pip

    pip install -i https://pypi.douban.com/simple/ --upgrade pip

    pip install -i https://pypi.douban.com/simple/ docker-compose

    为了加速doker镜像pull速度,可以修改daemon.json

    vi /etc/docker/daemon.json

    {"registry-mirrors": ["http://579fe187.m.daocloud.io","https://pee6w651.mirror.aliyuncs.com"]}

  • 启动docker

    systemctl enable docker

    systemctl start docker

  • 安装pinpoint

    sudo curl -L https://github.com/naver/pinpoint-docker/archive/master.zip -o /opt/pinpoint-docker.zip

    到这里,等很长时间。本文先暂停。

  • -----------------------------------------这里先暂停安装------------------------------

  • 部署监控代理

    为了监控我们的应用,就需要部署监控代理。访问APM之后,点击右上角“配置”

    全链路压测_第2张图片


    再切换到“安装”页签,有一个下载链接,给出了agent的地址

    全链路压测_第3张图片



    点击下载即可(下载链接出来的很慢,可以等等或刷新页面试试)


    或者在应用程序的linux上机器上,直接下载:

    wget https://github.com/naver/pinpoint/releases/download/1.8.1/pinpoint-agent-1.8.1.tar.gz



    在应用的机器上,/usr/local目录下,mkdir pinpoint-agent,下载的tar包解压后文件都放在这里

    修改配置文件pinpoint.config,将profiler.collector.ip配置为pinpoint机器的ip

    image.png


    然后修改tomcat启动文件catalina.sh,添加以下3个参数:

    # java agent参数


    JAVA_OPTS="$JAVA_OPTS -javaagent:/usr/local/pinpoint-agent/pinpoint-bootstrap-1.8.1.jar"

    # agentId参数(应用的唯一标识,不允许和其他应用重名,自己定义)

    JAVA_OPTS="$JAVA_OPTS -Dpinpoint.agentId=APM-001"

    # applicationName参数(应用名,自己定义)

    JAVA_OPTS="$JAVA_OPTS -Dpinpoint.applicationName=fcy-dang"



    或者,按下图配置:

    全链路压测_第4张图片



    配置完之后,重启tomcat,然后在界面上就能看到新添加的应用了

    注意:一定要先启动pinpoint机器,再启动tomcat,要不然老报错

    选择应用名字,再选择深度为4

    全链路压测_第5张图片


    全链路压测_第6张图片


    操作:按住鼠标左键,拖动,形成一个框,再松开鼠标

    全链路压测_第7张图片

    全链路压测_第8张图片

    双击某一行,出现详细的分析,甚至能看到sql语句

    全链路压测_第9张图片

    全链路压测_第10张图片

    全链路压测_第11张图片


    还可以监控:

    全链路压测_第12张图片

    全链路压测_第13张图片


  • 这个工具的好处:

    不侵入代码,全链路监控,可以监控多个应用,只要把agent放在相应的机器上就可以


  • 注意事项:

    最好同步一下虚拟机的时间,要不然会因为时间不正常抓不到数据;

    如果不能访问,那么重启虚拟机,再启动docker,再启动tomcat;

    第一次数据展现比较慢, 大概30分钟