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

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 本篇实战了应用的横向扩容并验证,检查扩容带来性能提升的详细情况

欢迎访问我的GitHub

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

本篇概览

  • 本章是《Kubernetes下web服务的性能测试三部曲》系列的终篇,之前我们用AB和JMeter两种工具压测了k8s环境下的Tomcat,并通过调整内存和CPU来验证纵向扩容的效果,本章我们来验证横向扩容对吞吐量的影响;

前文列表

《Kubernetes下web服务的性能测试三部曲》的前两篇文章请点击以下链接:

  1. 《Kubernetes下web服务的性能测试三部曲之一:准备工作》
  2. 《Kubernetes下web服务的性能测试三部曲之二:纵向扩容》

基本环境信息

  • 基本环境的配置,与第一章一致,Tomcat的deployment配置如下:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: tomcathost
spec:
  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: "512Mi"
           cpu: "100m"
         limits:
           memory: "512Mi"
           cpu: "100m"

注意,本章实战的Pod内存为512M,因为256M的Pod吞吐率太低,从启动到预热(用来应对JIT的第一次测试,丢弃成绩),都会耗费大量时间,因此用512M可以节省测试时间;

  • 请按照上述配置将deployment和service在k8s环境启动起来,启动命令如下,在tomcat.yaml文件所在目录下:
kubectl create -f tomcat.yaml,tomcat-svc.yaml

横向扩容,将Pod数从1增加到8

  • 将Pod数从1增加到8,执行以下命令即可:
kubectl scale deployment tomcathost --replicas=8
  • 因为新的Pod创建、启动、初始化等操做,需要等待几分钟再进行测试;
  • 继续继续AB和JMeter测试,然后再分别将replicas参数设置为4、2、1,得到结果如下表所示:
内存 CPU Pod数 吞吐率(AB) 吞吐率(JMeter)
512M 0.1 1 38.17 38.00
512M 0.1 2 62.92 78.67
512M 0.1 4 98.11 112.91
512M 0.1 8 246.51 277.77
  • 以上的结果可以发现,随着Pod数的翻倍,吞吐量也是在线性增长的,增长的效果接近翻倍,也就是说横向扩容并没有出现纵向扩容时的那种单机极限的瓶颈,在节点数量得以保证的情况下,可以通过横向扩容来提升吞吐量(因为硬件资源的限制,我这里只能将Pod扩展到8个,如果您有条件可以继续测试下去);

节省测试时间的方法

  • 正常的测试顺序是副本数从1到2,然后从2到4,再从4到8,这样每次扩容后都会有容器创建,都要等待Pod创建和初始化,然后还要预热(避免JIT的影响),所以,本次实战我的顺序是一开始直接扩容到8个Pod,然后等待创建和初始化,再正常预热,用AB和JMeter测试Pod等于8的吞吐量,然后将Pod数从8缩减到4,缩减后剩下的4个Pod都是缩减之前用过的,不需要再预热就能直接压测了,这样从8到4,从4到2,从2到1的几次缩减都不需要等待初始化和执行预热了;

和上一章的数据差异

  • 细心的读者会发现,本章在Pod内存为512M的时候,吞吐量的数字和上一章是不同的,因为本章使用的硬件资源和上一章有所不同所致,但是实战的软件环境、步骤和镜像都是完全相同的;
  • 至此,《Kubernetes下web服务的性能测试三部曲》就全部结束了,希望能对你您在K8S环境下的扩容和压测都有所帮助,也欢迎您的关注和来信探讨:zq2599@gmail.com

欢迎关注阿里云开发者社区博客:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...
相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
2月前
|
XML JSON 数据安全/隐私保护
Web服务
【10月更文挑战第18天】Web服务
60 9
|
9天前
|
Web App开发 IDE JavaScript
Selenium IDE:Web自动化测试的得力助手
Selenium IDE:Web自动化测试的利器。作为开源工具,Selenium IDE支持录制与回放用户操作,适用于Chrome、Firefox等多浏览器,简化了测试流程,提升了效率,降低了自动化测试的门槛。它还支持导出多种编程语言的脚本,便于测试集成与复用。
59 19
Selenium IDE:Web自动化测试的得力助手
|
11天前
|
Web App开发 IDE 测试技术
Selenium:强大的 Web 自动化测试工具
Selenium 是一款强大的 Web 自动化测试工具,包括 Selenium IDE、WebDriver 和 Grid 三大组件,支持多种编程语言和跨平台操作。它能有效提高测试效率,解决跨浏览器兼容性问题,进行性能测试和数据驱动测试,尽管存在学习曲线较陡、不稳定等缺点,但其优势明显,是自动化测试领域的首选工具。
88 17
Selenium:强大的 Web 自动化测试工具
|
10天前
|
Web App开发 IDE JavaScript
Selenium IDE:Web自动化测试的得力助手
Selenium IDE是开源的Web自动化测试工具,适用于Chrome、Firefox等多款浏览器。它提供简单的录制与回放功能,用户可通过录制浏览器操作自动生成测试脚本,支持导出为多种编程语言,便于非专业测试人员快速上手,有效提升测试效率与质量。
77 6
Selenium IDE:Web自动化测试的得力助手
|
2月前
|
XML JSON 安全
Web服务是通过标准化的通信协议和数据格式
【10月更文挑战第18天】Web服务是通过标准化的通信协议和数据格式
165 69
|
28天前
|
监控 安全 测试技术
如何在实际项目中应用Python Web开发的安全测试知识?
如何在实际项目中应用Python Web开发的安全测试知识?
28 4
|
1月前
|
Go UED
Go Web服务中如何优雅平滑重启?
在生产环境中,服务升级时如何确保不中断当前请求并应用新代码是一个挑战。本文介绍了如何使用 Go 语言的 `endless` 包实现服务的优雅重启,确保在不停止服务的情况下完成无缝升级。通过示例代码和测试步骤,详细展示了 `endless` 包的工作原理和实际应用。
47 3
|
1月前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
60 3
|
1月前
|
JSON Go UED
Go Web服务中如何优雅关机?
在构建 Web 服务时,优雅关机是一个关键的技术点,它确保服务关闭时所有正在处理的请求都能顺利完成。本文通过一个简单的 Go 语言示例,展示了如何使用 Gin 框架实现优雅关机。通过捕获系统信号和使用 `http.Server` 的 `Shutdown` 方法,我们可以在服务关闭前等待所有请求处理完毕,从而提升用户体验,避免数据丢失或不一致。
25 1
|
1月前
|
XML 安全 PHP
PHP与SOAP Web服务开发:基础与进阶教程
本文介绍了PHP与SOAP Web服务的基础和进阶知识,涵盖SOAP的基本概念、PHP中的SoapServer和SoapClient类的使用方法,以及服务端和客户端的开发示例。此外,还探讨了安全性、性能优化等高级主题,帮助开发者掌握更高效的Web服务开发技巧。