在阿里云容器服务上创建Spring Boot应用之压测篇

  Spring Boot框架的第一个稳定版本是在2014年由Pivotal发布的,该框架的宗旨在于为基于Spring的Web应用提供快速设计开发,并追求小而美、约定胜于配置、快速开发、自包含且便捷。Spring Boot当前开发中的版本是1.4。

  上一篇文章“在阿里云容器服务上创建第一个Spring Boot应用”,讲述了如何通过Maven的Docker plugin上传镜像到阿里云的容器Hub,并通过阿里云的容器服务快速在云环境创建应用。本文将描述下,如果在阿里云环境里继续对这个Web应用进行压测,下面我会按照4个步骤进行介绍:

  • 第一步:评估应用的架构
  • 第二步:评估压测的架构
  • 第三步:配置压测任务
  • 第四步:查看压测结果

第一步:评估应用的架构

  上一篇我们通过阿里云容器服务给这个Sping Boot服务配置了一条路由规则:
容器端口为8080,域名前缀为spring-boot。容器服务会自动生成一个测试域名‘spring-boot.<cluster_id>.<region_id>.alicontainer.com’

  当一个Request请求这个域名时会经过以下几次转发:

  • 这个域名的DNS指向集群的负载均衡SLB的ip。
  • SLB会监听80端口的请求并转发到集群内的每台云服务器的80端口。
  • 而每台云服务器里面有一个系统的容器acs-routing,会负责将服务器的80端口上指定域名的请求转发到指定容器的内部8080端口。

以下是应用的架构简图:

我们回到容器服务的控制台记录下几个信息,后续会再用到:

  • 应用的域名:(应用列表->服务列表tab->服务详情的访问端点 http://spring-boot.cfe5de77bd7a4474c826e8465930fae75.cn-shenzhen.alicontainer.com)
  • 集群的负载均衡SLB:(集群列表->更多操作->负载均衡管理->负载均衡详情的ID 1529d3bd5cd-cn-shenzhen-st3-a01)
  • 集群的云服务器名称列表:(集群列表->集群名称的链接展开)

第二步:评估压测的架构

评估压测指标

首先我们需要对Spring Boot的用户访问场景进行评估,经过拍脑袋之后,我们决定以10个并发对首页进行压测,看看能否抗的住,主要观察几个指标:首页的tps、rt,服务器的cpu、load。最常见的方式就是搞一个httpload、jmeter压压,幸运的发现阿里云已经提供了类似的能力。我们决定通过“云监控”和“性能压测”两个产品来试试。

以下是压测的架构简图:

压测方案分为两部分:

安装监控插件(ECS插件)

通过云监控采集服务器的监控数据(免费开通云监控->云服务监控->ECS监控列表->筛选第一步中的2台服务器,“点击安装”ECS插件)

设置压测目标信息

在性能测试产品里绑定压测的ECS和SLB(免费开通性能测试企业版->测试环境->云内机器)


下面开始配置压测任务

第三步:配置压测任务

新增压测脚本(性能测试控制台->测试脚本->脚本)


点击上图的新增脚本

设置脚本名:perf-springboot

添加一个事务:事务名称(testPerf),请求链接(http://spring-boot.cfe5de77bd7a4474c826e8465930fae75.cn-shenzhen.alicontainer.com/),请求类型(GET)
点击保存

新增测试场景

选择脚本名

设置场景名:perf-springboot
设置并发用户数:10

点击保存

新增测试任务


点击新增任务

设置任务名:perf-springboot

设置持续时间:10分钟

设置施压集群:深圳

选择监控机:绑定之前深圳集群的两台机器

绑定场景:绑定上一步的测试场景

点击保存

点击确认

点击执行

第四步:查看压测结果

休息10分钟回来~

查看压测结果

查看tps数据

查看rt数据

查看服务器的cpu数据

时间: 2024-10-28 09:38:23

在阿里云容器服务上创建Spring Boot应用之压测篇的相关文章

在阿里云容器服务上创建一个spring boot应用

环境需求 你喜欢的文本编辑器或者IDE JDK1.8或以上版本 Maven3.0或以上版本 如果你不是在linux操作系统上面做开发,你需要docker-toolbox来构建Linux的虚拟环境 第一步:创建一个spring boot应用 下载并解压spring boot应用模板代码git clone https://github.com/spring-guides/gs-spring-boot-docker.gitcd gs-spring-boot-docker/complete 编辑代码文件

在阿里云容器服务上创建一个使用Redis的Python应用

使用容器服务可以方便快速的创建应用,下面的例子展示如何在容器服务上创建一个使用Redis的Python应用,只需要简单的几步. 第一步:准备代码 由于只是一个例子,所以我不可能使用太复杂的应用代码. app.py from flask import Flask from redis import Redis app = Flask(__name__) redis = Redis(host='redis', port=6379) @app.route('/') def hello(): redis

在阿里云容器服务上开发基于Docker的Spring Cloud微服务应用

本文为阿里云容器服务Spring Cloud应用开发系列文章的第一篇. 一.在阿里云容器服务上开发Spring Cloud微服务应用(本文) 二.部署Spring Cloud应用示例 三.服务发现 四.服务间通信与集成 五.服务智能路由 六.集中配置管理 七.高可用和容错 八.监控和日志 九.服务的部署和发布策略 微服务概述 单体应用通常指在一个程序中满足多个业务或技术领域的需求,不同的需求领域内化为模块.假定我们要开发一个Web应用,通常的MVC模式可以满足要求.针对不同领域有不少代码生成工具

在阿里云容器服务上开发基于Docker的Spring Cloud微服务应用(五)

服务智能路由 本文为阿里云容器服务Spring Cloud应用开发系列文章的第五篇,讨论如何利用Spring Cloud 对 Netflix Zuul支持,完成服务的职能路由功能. 一.在阿里云容器服务上开发Spring Cloud微服务应用 二.部署Spring Cloud应用示例 三.服务发现 四.服务间通信与集成 五.服务智能路由(本文) 六.集中配置管理 七.高可用和容错 八.监控和日志 九.服务的部署和发布策略 使用Zuul构建简单API Gateway 在手机端完成一个功能有可能需要

在阿里云容器服务上,轻松搭建Concourse CI

Concourse CI是一款CI/CD工具,它的魅力在于极简设计,被广泛应用于Cloud Foundry各个模块的CI/CD.阿里云也推出了CI工具CodePipeline,开箱即用,推荐试用. Concourse CI官方提供了标准的Docker镜像,在阿里云容器服务部署一套 Concourse CI应用是很轻松的一件事儿. 准备Docker集群 首先,在阿里云容器服务控制台创建一个集群.简单起见,这里节点数为1,网络类型为经典网络. 集群创建过程大约几分钟,成功后的状态如下图: 然后需要开

容器服务--如何在阿里云容器服务上运行基于TensorFlow的Alexnet

AlexNet是2012年由Alex Krizhevsky使用五层卷积.三层完全连接层开发的CNN网络,并赢得了ImageNet竞赛(ILSVRC).AlexNet 证明了CNN在分类问题上的有效性(15.3%错误率),而此前的图片识别错误率高达25%.这一网络的出现对于计算机视觉在深度学习上的应用具有里程碑意义. AlexNet也是深度学习框架常用的性能指标工具,TensorFlow就提供的alexnet_benchmark.py可以测试GPU和CPU上的性能.我们尝试基于AlexNet在阿里

在阿里云容器服务上使用OSS数据卷(Volume)

数据卷 Docker的特性,决定了容器本身是非持久化的,容器被删除后其中的数据也一并被删除了.Docker提供数据卷(Volume),通过挂载宿主机上的目录来实现持久存储. 但在集群环境中,宿主机上的数据卷有很大的局限性 容器在机器间迁移时,数据无法迁移 不同机器之间不能共享数据卷 为了解决这些问题,阿里云容器服务提供第三方数据卷,将各种云存储包装成数据卷,可以直接挂载在容器上,并在容器重启.迁移时自动重新挂载.目前支持ossfs和云盘两种存储. 开通数据卷功能 点击容器服务控制台左侧数据卷,展

跨入流式计算时代,用不着洪荒之力——在阿里云容器服务上一键部署JStorm

JStorm是阿里巴巴出品的强大的企业级流式计算引擎,跟Apache Strom相比,具有使用方便.性能高.生态丰富等优点,是搭建流式计算平台的优秀选择.更多关于JStorm的介绍,请参考官方网站http://www.jstorm.io/ 但是,部署JStorm依赖于zookeeper.python.JDK等若干个组件,同时还要配置nimbus.supervisor等角色,部署过程比较长.为了简化这一过程,阿里巴巴JStorm团队和容器服务团队合作推出了Docker版的JStorm,可以实现一键

使用阿里云容器服务Jenkins 2.0实现持续集成之Pipeline篇(updated on 2016.12.23)

Jenkins 2.0 Jenkins 2.0新特性:Pipeline as code,全新的开箱体验和UI可用性提升以及完全向后兼容. Pipeline as Code通过使用Groovy DSL来描述一套运行于Jenkins上的工作流程,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂发布流程.并且,Jenkins支持从代码库直接读取脚本. 全新的开箱体验和UI可用性提升Jenkins 1.XXX 安装默认是开放所有权限,因为安全性存在隐患.而Jenkins 2.0