阿里巴巴测试环境稳定性提升实践

摘要: 测试环境是研发/测试同学最常用的功能,稳定性直接影响到研发效率,那如何提升测试环境的稳定性?阿里巴巴应用与基础运维平台高级开发工程师张劲,通过阿里内部实践,总结了一套测试环境稳定性提升方法,供大家参考。

点此查看原文:http://click.aliyun.com/m/43443/

导读:测试环境是研发/测试同学最常用的功能,稳定性直接影响到研发效率,那如何提升测试环境的稳定性?阿里巴巴应用与基础运维平台高级开发工程师张劲,通过阿里内部实践,总结了一套测试环境稳定性提升方法,供大家参考。

痛点

每一次容器申请失败直接造成研发测试停滞, 同时带来答疑及问题排查(程序猿最怕的就是在代码写得正嗨的时候被人给打断,所以一般我都带耳机),涉及到测试链路上各个系统。随着集团pouch化的全面推进,半年来测试环境日容器申请量暴增10倍以上,低成功率导致研发低效的问题越来越凸显,每天累计造成集团上百小时的研发测试停滞,损失不可接受,也渐渐成为了pouch化推进过程中的一个阻力。

因此, 测试环境稳定性亟待大幅提升。

如何提升,经过答疑汇总和错误分析,主要集中在两个方面:

已成功申请的资源不可用
  • 测试环境宿主机较差(过保机器),且虚拟比高,容易发生故障。
  • 宿主机故障时,其上的容器不会被自动迁移,很可能导致再次部署重启时失败。
  • 调度系统巡检会将故障宿主机置为不可调度,由于其上仍有容器,不能下线修复后重用, 造成机器资源越来越少。
新申请资源时成功率低
  • 测试环境机器被分为优先级不同的资源池,资源池间机器资源不共享。
  • 测试环境机器的容量/余量不透明,没有告警,造成因资源不足的调度失败。
  • 因为测试环境与线上环境有很大不同,资源调度系统之前没有针对测试场景优化, 成功率不高。

目标

容器申请成功率:99.9%

方案

e76d30e81a2979f5ca63b086eb0b433ddd37a873

指标数据

从一开始我们就觉的数据非常重要,没有相关的稳定性数据,那我们就无的放矢,根据数据我们就能找到需要优化的点以及持续优化的动力。所以项目开始阶段就做了挺长时间的数据收集工作。

  • 测试环境链路数据收集:从上至下包括Normandy(基础应用运维平台),黄蜂(资源申请平台),Zeus(二层调度),Sigma(集团资源调度系统);其中我们最关心的就是最终容器交付的成功率,以及失败case。失败case可以帮助我们分析整个系统中到底哪些地方存在问题,成功率趋势则帮助我们检验新的修复优化是否真的有效且稳定,也是最终成果的衡量指标。、
  • 测试环境链路稳定性数据展示平台:其实上下游的每个系统都有自己的数据,但是没有整合,有的用阿里表哥,有的是发邮件,有的则没有展示出来,所以做这样一个小东西的目的就是将上下游系统的数据统一整合在一个页面上,更便于查看分析问题。
  • 每日/周/月错误分析:收集每天的错误数量及样例,便于分析问题。

已申请容器不可用

容器自动置换

容器自动置换是为了解决已申请的容器不可用问题,简单来说就是在另一台好的宿主机上扩一个新容器,然后将原来在故障宿主机上的旧容器下线。

整个流程如下:Sigma(资源调度系统)自动巡检出故障宿主机(比如磁盘满/硬件故障等),通知Atom(故障机替换)置换该故障宿主机上容器,Atom向Normandy(基础应用运维平台)发起机器置换流程。

通过自动置换将故障机腾空,然后下线修复。

新申请容器失败

合理化资源池分配

56fd916ea9532420e19fb0c78e01ca95d71914b7


d12e630f741cb70768e8924004c3944a42db2739

屏蔽底层系统失败

因为测试环境与线上环境差异很大,一般测试环境使用的机器都是线上淘汰机,同时为了节省预算,每台宿主机的虚拟比都很高,导致在创建和使用容器时都特别容易失败,所以有必要做一个容器buffer池屏蔽掉底层失败对用户的影响。

buffer池的整个逻辑非常简单清晰:在测试环境容器生产链路靠近用户的一端嵌入buffer池,预生产一批容器,在用户需要的时候分配给他。即使申请buffer容器失败,依然可以按原生产链路继续生产容器。每次从buffer池申请一个容器后,buffer池会自动异步补充一个相同规格的容器进来,以维持buffer池的容量。

如何确定buffer哪些规格的容器及池子的容量是另一个关键点:需要统计每种规格-镜像-资源池的历史申请量,按比例分配每种buffer的容量。同时为了保证即使在底层系统中断服务时,整个系统依然对用户可用,还需要确定高峰期的容器申请量,可允许中断时长以及测试环境机器资源, 用来确定整个buffer池子的容量。

还需要考虑的一点是,用户也分为普通用户(研发测试人员),系统用户(比如自动化测试系统等),他们的优先级也不同,需要优先保证普通用户可用。

同时为了最大程度的降低引入buffer池后可能对用户造成的影响,buffer池内加了许多动态开关,用于及时屏蔽某些功能。比如可针对具体应用设置是否需要修改容器主机名,此操作非常耗时,如果不改主机名,则平均不到1秒内会申请成功;如果某个应用不想使用buffer,也可立即屏蔽;如果buffer池本身出现问题,可以快速降级,在整个链路中去掉buffer功能。

另外buffer池在交付buffer容器前会额外做一次检查,判断容器是否可用,避免容器交付后,因为容器不可用而导致的服务部署失败,用户使用不了等问题。buffer池内部也会定期清理脏容器(不可用, 数据不一致等)和补充新的buffer容器。

总结

3244e08ec95162180ed6b4bccef4a122f6a74b10

上图展示测试环境最近2个月的容器申请成功率趋势,包括buffer池全量前后一个月。

从图中可以看到,11月末12月初的两天成功率极低,均是因为调度失败,之后根据资源池余量预测及报警及时调整了各个资源池的容量,提前消除了调度失败的可能,在此之后,成功率波幅都减少很多。

另一点,从buffer全量后,成功率波幅明显比buffer全量前大幅减小,波动次数明显减少,成功率趋于稳定。

buffer池全量后的一周内,由于buffer池内部的bug以及buffer命中率较低,成功率浮动较大,在bug修复以及提高buffer池命中率后,成功率基本稳定。

a9e50be306ae210b2e240dab17fd673e61512de0

上图展示近两个月的每日成功率趋势图,纵向对比了用户视角(有buffer)与底层系统视角(无buffer)。从图中可以看出,buffer池确实屏蔽了许多底层系统失败,除了其中一天buffer池被穿透导致成功率大跌。

展望

虽然经过一系列改造优化后,成功率有了明显的提升,但是依然有很多地方需要完善:

  • 资源池容量自动调配:目前算法简单,有些情况无法解决,比如大规模的新增或删除容器造成对余量趋势的误判。另外也要避免引入自动调配后造成宿主机标签的混乱。
  • buffer池模版动态的增减以及每种buffer的数量动态变化。当前buffer池一个难题就是如何覆盖到低频的应用镜像,这种镜像虽然低频但是容易申请失败,一旦这种容器大量申请,容易穿透buffer池,造成大量失败。
  • 扩大buffer池的容量,需要根据机器资源伸缩。

除了对以前工作的完善,测试环境依然有许多要做的事情:比如如何提高整个测试环境资源的利用率, 如何减少容器交付耗时(从用户申请到用户可用),如何推动应用的可调度化等等,希望能够和大家一起探讨。


嘉宾介绍

张劲(太云),阿里巴巴应用与基础运维平台-产品与架构部高级开发工程师,主要负责测试环境研发和效能提升,喜欢开源。

云效粉丝福利:

1.想要和作者一起共事吗?云效2.0-StarOps智能运维平台-致力于打造具备世界级影响力的智能运维平台,诚聘资深技术/产品专家  

工作地点:杭州、北京、美国

https://job.alibaba.com/zhaopin/job_detail.htm?refNo=GP042139

2.参与你不知道的《阿里巴巴Java开发手册》背后故事文内活动,赢取签名版《阿里巴巴Java开发手册》,活动即将截止,欲参加从速!

识别以下二维码,干货


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/522532.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android中设置lmargin简书,超详细React Native实现微信好友/朋友圈分享功能-Android/iOS双平台通用...

(一)前言本文主要会涉及到以下内容:微信开发者应用申请审核安装配置微信分享库微信好友/朋友圈功能实现(二)应用申请审核首先大家需要去微信开发平台去注册账号并且创建一个移动应用。(地址:https://open.weixin.qq.com)开始创建移动应用,填写应用名称,应用名称以及中英文的信息…

【干货合集】看完这些干货,再说你因为“怕蛇”,所以学不好Python!

摘要: 作为编程语言界的“当红小生”,Python不仅能够承担起Web项目的重任,还能够用于写自动化脚本帮助你做很多事情,不仅能够用于机器学习和神经网络的研究,还能够用于最具有业务价值的数据分析方面,无论什…

蜕变!网易轻舟微服务这波操作,始于异构融合、源于中台!

戳蓝字“CSDN云计算”关注我们哦!作者|刘晶晶提及中台,无人不知。从概念诞生于阿里到如今高居神坛之上,整个行业无一不在频繁建设中,不可否认,TA带来的ICT变革远远超过了字面含义。深入实践我们感受到,有了…

首次公开!菜鸟弹性调度系统的架构设计

摘要: 为什么菜鸟需要弹性调度? 在弹性调度出现之前,菜鸟整体资源使用率都处于一个比较低的水平,这是因为: 1.在线应用一般是通过单机性能压测,并且结合经验预估业务流量的方式来确定所需容器数量。这种方式…

springboot listener_看完这份springboot 全套面试提升宝典,面试不带怕的

简介:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发…

“Java跌落向下,Python奋斗向前”,程序员:看哭了...

还记得被Java统治的时代吗?最近,这个格局已经被悄然打破,正是被来自曾经的小弟,新晋网红Python给硬生生拽下神坛。对此,Java曾表示强烈质疑,最近一份数据榜单悄悄来了!PLPY 8月榜单官宣&#xf…

注册docker hub账号

官网地址:https://hub.docker.com

浏览器渲染流水线解析与网页动画性能优化

摘要:若干年前,我写过一篇介绍浏览器渲染流水线的文章 - How Rendering Work (in WebKit and Blink),这篇文章,一来部分内容已经过时,二来缺少一个全局视角来对流水线整体进行分析,所以打算重新写一篇新的文…

努比亚手机浏览器 安全证书失效_浏览器提示“该站点安全证书的吊销信息不可用”的解决方法-...

最近有用户遇到在Win10系统下浏览网页时,系统一直会提示安全警报,提示内容为“该站点安全证书的吊销信息不可用。是否继续?”,那么该如何解决呢?其实这大部分都是网页和浏览器的一些问题造成的,下面小编就为…

2021浙江高考宁波四中成绩查询,2021浙江高考成绩查询时间公布 几号能查分

2021年浙江省高考成绩26日左右可查询,分段填报志愿日程确定啦。下面一起来看看吧。第一段什么时候报志愿普通类提前录取和第一段、艺术类第一批和第二批第一段、体育类第一段同时填报志愿,填报时间为6月29日至6月30日。普通类第二段、艺术类第二批第二段…

还在用 Dockerfile 部署 Spring Boot?out 啦!试试谷歌的大杀器 Jib

之前gblfy和大家分享过一篇将 Spring Boot 项目部署到远程 Docker 上的文章: 一键部署 Spring Boot 到远程 Docker 容器 但是这种部署有一个问题,就是一个小小的 helloworld 构建成镜像之后,竟然都有 660 MB,这就有点过分了&…

常见的Hadoop十大应用误解

戳蓝字“CSDN云计算”关注我们哦!作者 | 大数据架构师本文链接:https://www.jianshu.com/p/08255fa980e4Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力…

解析DataWorks数据集成中测试连通性失败问题

摘要: 大家好,这里和大家分享的是DataWorks数据集成中测试连通性失败的排查思路。与测试连通性成功与否的相关因素有很多,本文按照多个因素逐步排查,最终解决问题,希望大家以后再遇到此类问题,请参考此文&a…

带有下标的赋值维度不匹配_不稳定的期权时间价值

教科书上的期权公式:期权价格内在价值时间价值。这是个静态的表述,假设标的、波动率在到期前不在变化。实际上,在存续期间,这块时间价值将会受到“方向、波动率、时间”等维度影响。期权作为时间消耗性金融衍生品,若期…

Kubernetes的Device Plugin设计解读

摘要: Kubernetes的生态地位已经确立,可扩展性将是其发力的主战场。异构计算作为非常重要的新战场,Kubernetes非常重视。而异构计算需要强大的计算力和高性能网络,需要提供一种统一的方式与GPU、FPGA、NIC、InfiniBand等高性能硬件…

美国专利机构榜单:华为、京东方进前20名;印度巨头信实与微软结盟;三星发布 1.08 亿像素传感器,小米参与合作……...

关注并标星星CSDN云计算极客头条:速递、最新、绝对有料。这里有企业新动、这里有业界要闻,打起十二分精神,紧跟fashion你可以的!每周三次,打卡即read更快、更全了解泛云圈精彩newsgo go go 特斯联完成20亿元C1轮融资&a…

本地安装Docker

docker官网:https://hub.docker.com/?overlayonboarding

阿里云上Kubernetes集群联邦

摘要: kubernetes集群让您能够方便的部署管理运维容器化的应用。但是实际情况中经常遇到的一些问题,就是单个集群通常无法跨单个云厂商的多个Region,更不用说支持跨跨域不同的云厂商。这样会给企业带来一些担忧,如何应对可用区级别…

边缘检测robert原理_在操作机器视觉检测过程中,遇到检测精度的难题怎么办?_西旺科技...

随着自动化行业发展,机器视觉技术的应用已经十分广泛。但是在一些机器视觉检测项目中,很多客户遇到了检测精度的难题。例如:检测加工零件的外形尺寸、内外径,要求精度到10um。目前很多配置选择500万的相机,理论上是可以…

引以为戒,特斯拉Kubernetes控制台被黑客攻击

摘要: 特斯拉公司惨遭“毒手”是因为其Kubernetes平台没有设置密码保护。 点此查看原文:http://click.aliyun.com/m/43609/ 几个月前RedLock公司工作人员发现:数百个Kubernetes管理控制台无需密码即可访问,即直接公开暴露在互联网…