开发者社区> 程序员欣宸> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

简介: 在前文单实例的基础上,对服务做横向扩容,再用Jemeter验证扩容效果
+关注继续查看

欢迎访问我的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/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: "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:      100
Time taken for tests:   68.527 seconds
Complete requests:      20000
Failed requests:        0
Total transferred:      3700000 bytes
HTML transferred:       1040000 bytes
Requests 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压测,得到结果如下:
# SamplesAverageMedian90% Line95% Line99% LineMinMaxError %ThroughputReceived KB/secSent KB/sec
200004892941100160836960108990.00%188.8/sec30.6125.45
  • 如上所示,内存翻倍后对吞吐量的提升非常明显;

继续提升内存

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

升级CPU

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

小结纵向扩容

  • 下面的表格将前面每次修改后的测试结果列举出来了:
内存CPU吞吐率(AB)吞吐率(JMeter)
256M0.133.7731.21
512M0.1291.86188.80
1G0.1326.19324.58
2G0.1340.61340.10
256M181.3680.61
256M286.6282.11
  • 从上述数据可以看出:
  1. 内存扩容在1G之前是有显著提升的,但过了1G提升就不明显了;
  2. CPU资源增大到原有的10倍后,吞吐量有3倍左右提升,继续加倍CPU资源,也无法带来明显提升;
  • 这里要注意的是此次测试的后台代码很简单,并未涉及RPC、数据库、缓存等,数值不能作为生产环境的参考,因为每个实际的业务都有其自身的特征,此处仅提出一种扩容和验证扩容效果的手段;
  • 至此,纵向扩容的测试就完成了,接下来的章节,咱们一起测试一下横向扩容的效果;

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

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
kubernetes下的Nginx加Tomcat三部曲之一:极速体验
实战kubernetes下部署上述Nginx和Tomcat服务,并开发spring boot的web应用来验证环境,本片是三部曲的开篇,咱们来个极速体验,感受一下
29 0
一边在大厂一线搬砖、一边操着 CTO 的心搞开源:一位普通中年程序员的开源十年路
“不管哪个赛道,不专注搞个三五年,跳来跳去,不会有啥出息。”
57 0
Oracle 查询表空间使用率 SQL 语句
Oracle 数据库的表空间如果使用超过100%,会导致数据库无法使用,因此需要及时扩展!
47 0
开发者社区精选直播合集(三十五)| Kubernetes最佳实践合集
Kubernetes 作为云原生时代的“操作系统”,熟悉和使用它是每名用户的必备技能。本篇来看k8s 相关实践。
128 0
干货分享 | 阿里PB级Kubernetes日志平台建设实践
本文整理自阿里云日志服务技术专家元乙在 QCon 全球软件开发大会(北京站)2019 上的演讲,他的分享主要介绍了阿里超大规模下 Kubernetes 日志平台的架构实践,通过日志采集、处理、分析、监控、异常诊断等全方位技术,实现 Kubernetes 以及业务应用真正意义上的可观察性。
823 0
k8s与CICD--利用flux部署应用到kubernetes
前言 一直在思考部署应用到k8s的姿势,之前介绍过helm,个人感觉helm把记录数据放到k8s中不是特别好。最近发现了weave的flux项目(A tool for deploying container images to Kubernetes services)。
2219 0
简化 Kubernetes Yaml 文件创建
如果需要自动化处理复杂的Kubernetes任务,常常需要编写Yaml配置文件。由于Yaml文件格式比较复杂,即使是老手有时也不免会犯错或需要查询文档,也有人开玩笑这是使用 Yaml 编程。我们今天将介绍几个方法来帮助大家来简化 Kubernetes Yaml 文件创建。
16531 0
【转发】未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项。试图加载格式不正确的程序。
http://www.cnblogs.com/joey0210/archive/2012/09/29/2708420.html   上一篇文章说到了DLL引用问题,主要是说的程序中如果使用过了反射,则反射创建对象的dll必须放在web应用程序的bin目录里。
1215 0
+关注
程序员欣宸
前华为、腾讯、阿里员工,从事Java后台工作
194
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载