We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
为了弄清楚bcs的性能基线和部署容量,需要对bcs进行各模块组件压测及全链路压测。
以下方案仅针对各组件分别压测
根据多个压测工具的对比,最终选用 JMeter,理由如下:
对常用场景的接口进行压测,集群节点列表、查看集群集群列表、添加,删除集群资源等,详情参考这部分接口:BCS同步至蓝鲸网关到接口列表
编辑 jmx 文件
编辑 Dockerfile
使用 alpine/jmeter:5.6 作为基础镜像
alpine/jmeter:5.6
通过 RUN curl 下载 Github 的 jmeter-prometheus-listener 插件
RUN curl
ENTRYPOINT 指定仅运行 jmeter
ENTRYPOINT
jmeter
其他的参数通过命令行参数指定如:
docker run --rm \ -v /tmp/bcs-test.jmx:/jmeter/bcs-test.jmx \ -v /tmp/bcs_value.properties:/jmeter/bcs_value.properties \ -v /tmp/results:/jmeter/results \ test.yace:0.1 \ -n -t /jmeter/bcs-test.jmx \ -q /jmeter/bcs_value.properties \ -l /jmeter/results/results.jtl \ -e -o /jmeter/results/report
待压测完成后启动另一个镜像 Nginx,将压测报告的 HTML 文件放入,即可被访问
docker run --rm -d \ -v ~/Desktop/canway/tmp/yace/results/report:/usr/share/nginx/html:ro \ -p 8080:80 \ nginx:alpine
为了方便在集群上进行压测,并且支持一键部署,以及将压测结果作为 metrics 指标被采集到监控平台,更方便的方式是将镜像包装成 Helm Chart 的形式,具体思路如下
9270
这样的 Helm Chart 将便于在集群上快速部署压测环境,并且具备报告的自动化曝露功能和压测指标采集能力。
将对各组件的压测作为做成一个插件,作为 cluster-reporter 的能力之一。cluster-reporter 本身已经暴露了 metrics 接口,压测指标可以通过 metrics 接口被采集,在监控平台中观测。插件开发可以使用 vegeta 或 go-stress-testing 压测工具提供了库级 api,可以在插件开发过程中直接引用。
另外也可以减少压测的配置,在 bcs 的 chart 中,一些配置可以模板化获取,如压测目标的 ClusterID,bcs api token等,都可以在 bcs 通过模板渲染时确定,减少手动修改的配置。
按照上述思路完成 Helm Chart 构建后测试,当前仅展示完成几个简单接口的压测结果。
进入 jmeter 容器使用 curl localhost:9270/metrics 可以获取到指标数据
curl localhost:9270/metrics
待压测完成之后,在本地使用 kubectl port-forward svc/bcs-stress-test-service 8080:80 -n bcs-system 可以在本地通过浏览器访问压测报告
kubectl port-forward svc/bcs-stress-test-service 8080:80 -n bcs-system
如果只需要在本地进行压测,也可以将 jmx 文件下载下来,然后运行 jmeter 完成压测拿到压测报告。
./jmeter -n -t /tmp/bcs-test.jmx \ -q /tmp/bcs_value.properties \ -l /tmp/results.jtl \ -e -o /tmp/report_dir
The text was updated successfully, but these errors were encountered:
DeveloperJim
No branches or pull requests
feature相关背景与描述
为了弄清楚bcs的性能基线和部署容量,需要对bcs进行各模块组件压测及全链路压测。
解决方案描述
压测工具
以下方案仅针对各组件分别压测
根据多个压测工具的对比,最终选用 JMeter,理由如下:
对常用场景的接口进行压测,集群节点列表、查看集群集群列表、添加,删除集群资源等,详情参考这部分接口:BCS同步至蓝鲸网关到接口列表
压测构建流程
编辑 jmx 文件
编辑 Dockerfile
使用
alpine/jmeter:5.6
作为基础镜像通过
RUN curl
下载 Github 的 jmeter-prometheus-listener 插件ENTRYPOINT
指定仅运行jmeter
其他的参数通过命令行参数指定如:
待压测完成后启动另一个镜像 Nginx,将压测报告的 HTML 文件放入,即可被访问
docker run --rm -d \ -v ~/Desktop/canway/tmp/yace/results/report:/usr/share/nginx/html:ro \ -p 8080:80 \ nginx:alpine
封装成 Helm Chart
为了方便在集群上进行压测,并且支持一键部署,以及将压测结果作为 metrics 指标被采集到监控平台,更方便的方式是将镜像包装成 Helm Chart 的形式,具体思路如下
9270
端口用于指标采集。完成压测后生成压测报告并使用 chmod 修改权限,使报告文件对 nginx 可读。完成压测后保持sleep,防止生命周期结束导致pod重启。9270
端口,用于收集压测指标。这样的 Helm Chart 将便于在集群上快速部署压测环境,并且具备报告的自动化曝露功能和压测指标采集能力。
不足
其他可行性方案分析
将对各组件的压测作为做成一个插件,作为 cluster-reporter 的能力之一。cluster-reporter 本身已经暴露了 metrics 接口,压测指标可以通过 metrics 接口被采集,在监控平台中观测。插件开发可以使用 vegeta 或 go-stress-testing 压测工具提供了库级 api,可以在插件开发过程中直接引用。
另外也可以减少压测的配置,在 bcs 的 chart 中,一些配置可以模板化获取,如压测目标的 ClusterID,bcs api token等,都可以在 bcs 通过模板渲染时确定,减少手动修改的配置。
其他补充信息
按照上述思路完成 Helm Chart 构建后测试,当前仅展示完成几个简单接口的压测结果。
进入 jmeter 容器使用
curl localhost:9270/metrics
可以获取到指标数据待压测完成之后,在本地使用
kubectl port-forward svc/bcs-stress-test-service 8080:80 -n bcs-system
可以在本地通过浏览器访问压测报告如果只需要在本地进行压测,也可以将 jmx 文件下载下来,然后运行 jmeter 完成压测拿到压测报告。
The text was updated successfully, but these errors were encountered: