写点什么

Kubernetes 下 web 服务的性能测试三部曲之二:纵向扩容

作者:程序员欣宸
  • 2022 年 5 月 16 日
  • 本文字数:1365 字

    阅读完需:约 4 分钟

Kubernetes下web服务的性能测试三部曲之二:纵向扩容

欢迎访问我的 GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos

本篇概览

实战步骤

  • 今天的实战用以下几种方式提升单个 Pod 性能:


  1. 内存资源从 256M 提升到 512M;

  2. 内存资源从 512M 提升到 1G;

  3. 内存资源从 1G 提升到 2G;

  4. CPU 资源从 0.1 提升到 1;

  5. CPU 资源从 1 提升到 2;


注意:每次纵向扩容之前,需要停止和删除原有的 deployment 和 service,扩容后,第一次测试的成绩请丢弃,因为 JIT 在理论上对结果有影响;


如何停止和删除原有的 deployment 和 service

  • 执行以下命令即可先删除 service,再删除 deployment:


kubectl delete service tomcathost && kubectl delete deployment tomcathost
复制代码

内存资源从 256M 提升到 512M

  • 打开上一章我们搭建 web 服务时创建的 tomcat.yaml 文件,内容如下:


apiVersion: extensions/v1beta1kind: Deploymentmetadata:  name: tomcathostspec:  replicas: 1  template:    metadata:     labels:       name: tomcathost    spec:     containers:     - name: tomcathost       image: bolingcavalry/k8stomcatdemo:0.0.5       tty: true       ports:       - containerPort: 8080       resources:         requests:           memory: "256Mi"           cpu: "100m"         limits:           memory: "256Mi"           cpu: "100m"
复制代码


  • 如上所示,找到 resources 节点下的两个 memory 节点,将值从"256Mi"改成"512Mi";

  • 执行 AB 测试:


ab -n 20000 -c 100 http://192.168.119.153:30008/getserverinfo
复制代码


  • 得到的结果如下:


Concurrency Level:      100Time taken for tests:   68.527 secondsComplete requests:      20000Failed requests:        0Total transferred:      3700000 bytesHTML transferred:       1040000 bytesRequests per second:    291.86 [#/sec] (mean)Time per request:       342.635 [ms] (mean)Time per request:       3.426 [ms] (mean, across all concurrent requests)Transfer rate:          52.73 [Kbytes/sec] received
复制代码
  • 接下来用 JMeter 压测,得到结果如下:

  • 如上所示,内存翻倍后对吞吐量的提升非常明显;

继续提升内存

  • 继续修改 tomcat.yaml 的内存参数,记录下来每次 AB 和 JMeter 的测试结果,这里就不赘述了,稍后在表格中统一给出;

升级 CPU

  • 继续修改 tomcat.yaml,将内存恢复为 256Mi,将 CPU 从 100m 改成 1000m,也就是从 0.1CPU 改为 1CPU,然后再从 1CPU 改为 2CPU,分别记录下来每次 AB 和 JMeter 的测试结果;

小结纵向扩容

  • 下面的表格将前面每次修改后的测试结果列举出来了:

  • 从上述数据可以看出:


  1. 内存扩容在 1G 之前是有显著提升的,但过了 1G 提升就不明显了;

  2. CPU 资源增大到原有的 10 倍后,吞吐量有 3 倍左右提升,继续加倍 CPU 资源,也无法带来明显提升;


  • 这里要注意的是此次测试的后台代码很简单,并未涉及 RPC、数据库、缓存等,数值不能作为生产环境的参考,因为每个实际的业务都有其自身的特征,此处仅提出一种扩容和验证扩容效果的手段;

  • 至此,纵向扩容的测试就完成了,接下来的章节,咱们一起测试一下横向扩容的效果;

欢迎关注 InfoQ:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...


发布于: 刚刚阅读数: 2
用户头像

搜索"程序员欣宸",一起畅游Java宇宙 2018.04.19 加入

前腾讯、前阿里员工,从事Java后台工作,对Docker和Kubernetes充满热爱,所有文章均为作者原创,个人Github:https://github.com/zq2599/blog_demos

评论

发布
暂无评论
Kubernetes下web服务的性能测试三部曲之二:纵向扩容_Java_程序员欣宸_InfoQ写作社区