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

简介: 本篇实战了应用的横向扩容并验证,检查扩容带来性能提升的详细情况

欢迎访问我的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

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

学习路上,你不孤单,欣宸原创一路相伴...
相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
26天前
|
开发框架 监控 安全
Windows Defender 导致 Web IIS 服务异常停止排查
某日凌晨IIS服务异常停止,经查为Windows Defender安全补丁KB2267602触发引擎更新,导致系统资源波动,进而引发应用池回收。确认非人为操作,系统无重启。通过分析日志与监控,定位原因为Defender更新后扫描加重负载。解决方案:将IIS及.NET相关路径添加至Defender排除列表,避免业务影响。
265 116
|
25天前
|
Java 测试技术 网络安全
Burp Suite Professional 2025.10 for Windows x64 - 领先的 Web 渗透测试软件
Burp Suite Professional 2025.10 for Windows x64 - 领先的 Web 渗透测试软件
65 0
Burp Suite Professional 2025.10 for Windows x64 - 领先的 Web 渗透测试软件
|
29天前
|
安全 Linux iOS开发
Burp Suite Professional 2025.10 发布 - Web 应用安全、测试和扫描
Burp Suite Professional 2025.10 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
207 3
|
2月前
|
安全 NoSQL Shell
web渗透-SSRF漏洞及discuz论坛网站测试
SSRF(服务器端请求伪造)是一种安全漏洞,攻击者可诱使服务端发起任意请求,进而探测或攻击内网系统。常用于端口扫描、访问内部服务、读取本地文件等。常见防御包括限制协议、域名和IP,但可通过302跳转、短地址等方式绕过。
198 1
web渗透-SSRF漏洞及discuz论坛网站测试
|
安全 JavaScript 前端开发
AppSpider 7.5.020 发布 - Web 应用程序安全测试
AppSpider 7.5.020 for Windows - Web 应用程序安全测试
67 0
|
2月前
|
安全 Linux iOS开发
Burp Suite Professional 2025.9 发布 - Web 应用安全、测试和扫描
Burp Suite Professional 2025.9 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
336 0
Burp Suite Professional 2025.9 发布 - Web 应用安全、测试和扫描
|
4月前
|
安全 Linux iOS开发
Burp Suite Professional 2025.7 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
Burp Suite Professional 2025.7 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
469 0
Burp Suite Professional 2025.7 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
|
4月前
|
运维 Kubernetes 持续交付
ACK One GitOps:让全球化游戏服务持续交付更简单
ACK One GitOps 致力于提供开箱即用的多集群 GitOps 持续交付能力,简化游戏等服务的多集群/多地域统一部署,让您更加专注于业务开发。
|
5月前
|
开发框架 安全 前端开发
Go Web开发框架实践:模板渲染与静态资源服务
Gin 是一个功能强大的 Go Web 框架,不仅适用于构建 API 服务,还支持 HTML 模板渲染和静态资源托管。它可以帮助开发者快速搭建中小型网站,并提供灵活的模板语法、自定义函数、静态文件映射等功能,同时兼容 Go 的 html/template 引擎,具备高效且安全的页面渲染能力。

推荐镜像

更多