在Mac上利⽤压测⼯具Jmeter-Suite进⾏⼀次压测实践的保姆级详细步骤(参考腾讯云⽂章)
参考的⽂章
写此⽂的⽬的
由于我是刚开始接触kubernetes和jmeter,所以在学习过程中遇到了很多很多问题,同时我很烦恼为什么⽹上没有⽂章是从真正零基础地记录部署的过程,⽐如安rew和helm3之类的步骤都被省略
了,像我这种菜菜就很抓瞎。所以在我终于摸到了kubernetes世界的⼤门、碰到了压测的边边后,我决定写⼀篇⽂章回馈菜菜们。
需要的背景知识
阅读《kubernetes权威指南》第⼀章(了解kubernetes的基本概念)
阅读(了解jmeter的作⽤)
我的系统
详细步骤
省略购买压测机器部分的内容,直接跳到压测⼯具安装部分开始。
1 安rew
brew是⼀个mac上⾯很好⽤的软件管理系统,可以简化mac上的安装过程。
我⽤了⼀个知乎专栏上的⾃动化脚本,链接是,真诚表⽩作者,原本下载速度很慢的,现在下载速度飞升 T^T
ps安装期间我遇到了各种问题,因为我原本的mac系统很低,安装了低版本的brew,不知道啥原因死活装不上新版本,我⼲脆重新装了个机,重新安装,就⾮常顺利
2 安装wget
Linux系统上⼀个下载⽂件的⼯具。
其实我感觉它的功能和brew挺像的,但由于我参考的⽂章⾥⽤了wget那我就⽤吧()
⽤brew install wget命令,我在这⼀步很顺利,省略之。
3 安装helm
Helm 是Deis 开发的⼀个⽤于Kubernetes 应⽤的包管理⼯具,主要⽤来管理Charts。
chart 是描述相关的⼀组Kubernetes资源的⽂件集合。单个chart可能⽤于部署简单的东西,⽐如memca
ched pod,或者⼀些复杂的东西,⽐如完整的具有HTTP 服务,数据库,缓存等的Web 应⽤程序
堆栈。chart通过创建为特定⽬录树的⽂件,将它们打包到版本化的压缩包,然后进⾏部署。
按照⽂档上的操作,我在运⾏完
wget get.helm.sh/helm-v3.2.
tar -zxvf helm-v3.2.
cp linux-amd64/helm /usr/local/bin/
后,出现了zsh: exec format error: helm 的报错,简单搜索了⼀下,似乎是⽆法解析⽂件?于是我⼜重新进⾏安装helm的操作,也就是运⾏brew install kubernetes-helm,⼜出现了错误。
Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
Could not symlink bin/helm
Target /usr/local/bin/helm
already exists. You may want to remove it:
rm '/usr/local/bin/helm'
原因似乎是之前已经装了⼀次helm,⽂件重复了
于是我按照提⽰,运⾏
rm '/usr/local/bin/helm'
brew link helm
brew install kubernetes-helm
安装helm的过程到此结束。
4 安装kubectl
kubectl是Kubernetes 命令⾏⼯具,使得你可以对 Kubernetes 集运⾏命令。你可以使⽤ kubectl 来部署应⽤、监测和管理集资源以及查看⽇志。
由于前⾯我们已经安装了brew,所以可以直接运⾏brew install kubectl 。
再运⾏kubectl version来确定是否安装成功,当出现类似于
Client Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.2", GitCommit:"faecb196815e248d3ecfb03c680a4507229c2a56", GitTreeState:"clean", BuildDate:"2021-01-14T05:14:17Z", GoVersion:"go1.15.6", Compiler Server Version: version.Info{Major:"1", Minor:"18+", GitVersion:"v1.18.4-tke.3", GitCommit:"f8797eb035aca9c928af02ea9a74d232cfd41bc6", GitTreeState:"clean", BuildDate:"2020-10-12T03:32:01Z", GoVersion:"go1.14.8", C 的代码时说明已经安装成功啦。
5 部署压测集
接着按照⽂章的内容,运⾏
git clone github/tkestack/charts.git
cd charts/
helm install your-name incubator/jmeter-suite (这⾥的your-name请更改为⾃⼰给服务取的名字)
然后出现报错
Error: Kubernetes cluster unreachable:
Get "localhost:8080/version?timeout=32s": dial tcp 127.0.0.1:8080: connect: connection refused
这⾥要配置环境变量KUBECONFIG,需要运⾏export KUBECONFIG=集配置⽂件的路径,但这个配置是⼀次性的,终端窗⼝⼀关闭或者新开⼀个终端窗⼝就需要重新配置,如果需要更改全局的环境
变量需要更改~/.bash_profile⽂件。
然后解决完上⾯这个报错后,再重新运⾏helm install your-name incubator/jmeter-suite ,随后⼜出现了报错
Error: rendered manifests contain a resource that already exists.
Unable to continue with install: ServiceAccount "jmeter-influxdb" in namespace "default" exists and cannot be imported into the current release: invalid ownership metadata;
annotation validation error: missing key "meta.helm.sh/release-name": must be set to "test"; annotation validation error: missing key "meta.helm.sh/release-namespace": must be set to "default"
呃⼤概意思就是本地已经有了⼀个namespace为default的jmeter了,解决这个错误挺简单
1 运⾏helm list --all --all-namespaces,查看系统⾥所有的releases。
2 运⾏ helm uninstall jmeter -n default,卸载这个namespace为default的jmeter。
随后便可以安装jmeter了,重新运⾏helm install your-name incubator/jmeter-suite ,这次成功了,随后出现
NAME: test
LAST DEPLOYED: Wed Jan 27 17:18:21 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
active下载6 编写脚本
打开jmeter⼯具
在下载好jmeter,我下载的是如图的⿊⾊字体版本。
接着我双击/bin⽬录下的ApacheJMeter.jar⽂件,打不开。就算把电脑的那个安全性提醒关掉也打不开,好吧,运⾏下⾯的命令强制打开java -jar /Users/chrystal/Documents/apache-jmeter-5.4.1\ 2/bin/ApacheJMeter.jar (请把后⾯的路径改为⾃⼰存放⽂件的路径)
此时命令⾏如下图
这说明!不能⽤这个窗⼝来跑测试脚本!所以我们要新开⼀个终端窗⼝进⾏后⾯的操作。新开的终端窗⼝记得配置kubernetes环境变量。该jar包打开的界⾯如下
可以把原⽂章中提到的demo测试脚本⽤它打开,如图
接下来参考demo脚本写⼀个⾃⼰的脚本,具体的基础设置解释在原⽂章⾥有。那么测试⼀下的接⼝吧。设置脚本
在jmeter处新建个⽂件,添加线程组
下⾯红框处是我更改后的配置,重要的是我设置了5000个线程,循环2次。(*我后来改了,因为线程组太多了,测试停不下来,改成了50x200)
右键线程组,添加http请求,并设置IP地址。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论