前言
概述:最近的几年,因为新冠导致国内外动荡不安,2022 年年底随着疫情放松、疫情放开到疫情真正结束。国内的经济跌宕起伏,几经波折,各行各业都在经历着大洗牌。当然,计算机行业影响也稍微有所影响,不过因为 23 年年初的第一枪:ChatGPT火起来了,导致计算机行业率先承受了重大打击,大家纷纷为了自保开始了内卷。
故而,目前如何提升自身核心竞争力也变得重要了起来。那么如何提升自身核心竞争力呢?
1️⃣ 拥抱这个时代,学习并使用ChatGPT 这个工具,提升效率
2️⃣ 能快速学习并运用于当前工作并实践的能力
So,目前我目前选择的是提升性能测试方面的能力。故本文是对学习过程和课后操作的步骤的补充和回顾。
一、前期准备
1️⃣ ECS 云服务器 CentOS
2️⃣ 实体电脑MAC 电脑
二、ECS 云服务器配置 JDK和Docker 环境及其发布 jar 服务
1、安装 JDK(PS:先百度一个吧,我之前自己没有配置过,等后续补充)
2、安装 Docker
根据系统自行查阅安装步骤即可。
举例:
在CentOS上安装Docker环境通常需要执行以下步骤:
更新软件包列表:
sudo yum update
安装所需的依赖包:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
添加Docker软件仓库:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装Docker引擎:
sudo yum install -y docker-ce
启动并设置Docker服务自动启动:
sudo systemctl start docker
sudo systemctl enable docker
验证Docker安装是否成功,运行以下命令:
sudo docker version
3、发布 jar 服务
# 进入当前用户的家目录
cd ~
# 创建目录
mkdir -p learning/order
# 将 jar 包放到learning/order目录下
# 通过相应的软件ftp 上传,我使用的是Electerm
# 通过在learning/order目录下,创建 Dockerfile文件,且文件内内容如下:
------------------------------------------------------------------------------
# 设置基础镜像
FROM openjdk:8-jre-slim
# 设置工作目录
WORKDIR /app
# 复制 jar 文件到工作目录
COPY order-service-1.0.0.jar /app/app.jar
# 暴露容器的端口号
EXPOSE 9082
# 设定容器启动时运行的命令
CMD ["java", "-jar", "app.jar"]
------------------------------------------------------------------------------
# 如果没有安装openjdk8基础镜像,使用 pull 安装,版本和 Dockerfile 里面的保持一致
docker pull openjdk:8
# 将上传的 jar 包制作为镜像,使用一下命令,order文件名称和版本与Dockerfile 里面的保持一致,且最后的 . 符号也是需要
docker build -t order:1.0.0 .
# 查看 order 镜像,使用 docker images
docker images
# 将 order 镜像制作一个 order 容器, --name后容器名称,-p后端口名称(宿主机:容器),9998 是 jar 内固定的,端口后跟的是镜像及其版本
docker run -d --name my-order -p 9081:9998 order:1.0.0
# 查看order容器状态,使用 docker ps 或者 docker ps -a
docker ps
docker ps -a
# 如果发现 my-order 容器是停用状态,可以使用 docker start
docker start my-order
# 如果使用 docker ps 没有发现 my-order 容器,可以通过 docker logs -t my-order 命令查看日志
docker logs -f my-order
# 想要停用 my-order 容器,可以使用 docker stop
docker stop my-order
# 想要删除容器,可以使用命令 docker rm
docker rm my-order
# 想要删除镜像,可以使用命令 docker rmi
docker rmi order:1.0.0
# 如果发现my-order 容器的状态是正常启用的,那就可以通过 curl + 连接 正常访问
curl 127.0.0.1:9081/xxxxx
# 如果外网也是可以去进行连接的,如果连接不了,可以在 ECS 后台--安全组--安全组规则--入方向 里面加上相应的端口,比我的这个是 9081
三、本机Jmeter 安装及其配置
四、云端influxdb安装及其配置
1、influxdb 安装
# 通过 docker pull 安装 influxdb,推荐版本 1.8.3
docker pull influxdb:1.8.3
# 查看 influxdb 镜像是否安装完成
docker images
# 创建 influxdb 容器
docker run -d --name myinfluxdb -p 9083:8086 influxdb:1.8.3
# 通过 docker ps 或者 docker ps -a 查看 influxdb 容器是否正常
docker ps
# 进入 容器内部,通过 docker exec -it 容器名 /bin/bash
docker exec -it myinfluxdb /bin/bash
# 进入 influx
influx
# 查看当前数据库
show databases;
# 创建数据库
create database jmeter;
# 使用当前数据库;
use jmeter;
# 查询表中的值
select * from jmeter;
# 查看数据库中的表
show measurements;
# 退出 influx 数据库
exit
# 退出 myifluxdb 容器
exit
2、Jmter 配置 influxdb
1️⃣ 在“线程组”下添加-->“监听器”-->“后置监听器”
2️⃣ 后端监听器实现 选择:org.apache,jmeter.visualizers.backend.influxdb.InfluxdbBackendListenerClient
3️⃣ influxdbUrl:ECS 的外网地址+myinfluxdb 宿主机的端口
4️⃣ measurement:在 influx 中创建的表
五、云端Grafana安装及其配置
1、Grafana 安装
# 通过 docker pull 安装 Grafana,默认最新的
docker pull grafana
# 查看 grafana 镜像是否安装完成
docker images
# 创建 grafana 容器
docker run -d --name my-grafana -p 3001:3000 grafana
# 通过 docker ps 或者 docker ps -a 查看 grafana 容器是否正常
docker ps
2、Grafana 配置
1️⃣ 本机浏览器访问 ECS外网 IP:3001,这里的 3001 是对应上述的 grafan 里面的宿主机的端口
2️⃣ 默认登录账号和密码都是:admin,登录后会要求修改登录密码
3️⃣ 配置influxdb 的数据源
4️⃣ 配置仪表盘
常用dashboard模板地址: https://grafana.com/grafana/dashboards/
通过Dashboard ID 或者 JSON导入 grafana 的 bashboard
5️⃣ 使用仪表板并加载数据源
六、整体实践
jmeter 跑脚本-->通过 jmeter 中的“后端监听器”将数据保存到:influxdb 中的数据库“jmeter-->grafana 调取 influx 中数据库“jmeter”中的数据通过 dashboards进行展示。
FAQ:
报错1:Docker mysql和jar包报错com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
答:jar 包不对,换了一个,和本次的实验没有关系。
报错 2:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
答:没有找到解决办法,因为本次没有用到自己的 mysql
报错 3:org .apache.http.conn.HttpHostConnectException: Connect to 127.0.0.1:7890 /127.0.0.1 failed: Connection refused
答:重启 jmeter即可。因为经常开启代理导致的。
报错 4:容器启用不了,查询日志报:database or disk is full
答:通过一下命令解决问题
# 查看系统磁盘信息
df -h
# 查看当前目录大小,-s参数表示只显示总和,-h参数表示以人类可读的方式显示。
du -sh ./*
# 进入占用很大的目录,再多次使用du 命令查看当前目录下的所有文件的大小
du -sh *
# 最好百度查询一下那些是可以删除的,一般是/var/log M 目录下的文件过大,使用 rm 命令删除
rm -f xx 文件