DigitalOcean 应用托管更新:应用端到端运行时性能大幅改进
DigitalOcean 希望可以为企业提供所需的工具和基础设施,以帮助企业客户加速云端的开发,实现业务的指数级增长。为此 DigitalOcean 在 2020 年就推出了App Platform。
App Platform(应用托管) 是一个完全托管的 PaaS 解决方案,非常适合小规模应用开发和部署,或是专注于 Web 应用开发且不熟悉底层部署的开发者。开发者使用 App Platform 时,只需关联 Github 仓库或提前构建的容器镜像,App Platform 将承担管理基础设施、应用程序运行时和依赖项的所有繁重工作,让开发者无需设置底层基础设施,降低了开发的复杂性。App Platform 支持许多流行的语言和框架,如Node.js、Python、Django、Go、PHP、Laravel、React、Ruby、Ruby on Rails、Gatsby、Hugo、静态网站和Docker。
近期,为了提高 App Platform 的效率,我们已经将所有应用程序迁移到了一个新升级的基础设施上,这包括对运行时性能的大幅改进。接下来,将介绍我们如何实现 gVisor(沙箱运行时环境) 的最新版本,并分享我们的性能测试结果。
gVisor 的增强
App Platform 是 DigitalOcean 的 PaaS 平台。App Platform 的核心目标之一是用户无需担心底层基础设施,并保证基础设施始终处于最新状态。这就是我们的工作! App Platform 协同工作的多个构建块,可以为用户提供了简单部署的体验。其中一个构建模块就是 Google 的 gVisor 容器运行时,它有助于我们安全、密集地将应用程序打包在同一主机上。
然而,gVisor 增加的安全性机制会带来一定的代价。其核心原则之一就是拦截应用程序的系统调用(syscalls),并在 gVisor 而不是内核中处理这些系统调用。这种通过 ptrace 实现的拦截会带来很大的开销。为了解决这个问题,谷歌发布了一种新的系统调用拦截方法,名为 systrap。这一新平台极大地减少了 gVisor 处理系统调用的开销,从而提高了大多数应用的性能。一般来讲,只要你的应用和业务不是与 CPU 负载重度绑定的,都能从这项改进中受益。
为了更直观地展示改进效果,我们测量了端到端(如你的用户所能观察到的)吞吐量,针对一个最小的 Node.js 应用(它的网络是受限的),以及一个 WordPress 应用(循环使用不同的主题)。之所以选择 WordPress 应用,是因为PHP 应用的性能受到 gVisor 沙箱的影响非常明显。这是因为运行 PHP 应用会出现大量文件操作,以及循环使用不同的主题,让它可以成为一个很典型的极端测试。

上图清楚地展示了新版本 gVisor 及其 systrap 平台带来的改进效果。结果是基本 Node.js 应用的吞吐量提高了两倍多,WordPress 应用的吞吐量提高了七倍多。根据你应用程序的特性,优化效果可能比我们的结果更明显,也可能不那么明显.我们的这些测试结果,可以作为 Google 在其 systrap 公告中的指标的另一份参考。
注:本文中的测试基准吞吐量数据,基于DigitalOcean的内部测试框架和参数得出,使用了具有 2 个专用 vCPU 的应用程序。实际性能数字可能会因系统配置、操作环境和工作负载类型等各种因素而异。
安全发布上线
在我们的测试中,我们发现 gVisor 与我们一直在使用的旧版本相比有一些退步。其中一些是与应用程序应有的行为不兼容,另一些是平台本身的问题。我们与 gVisor 团队建立了紧密的反馈改进机制,收集了我们所看到问题的必要信息,以确定它们的根本原因,并迅速修复。我们非常感谢 gVisor 团队的快速响应和他们在解决这些问题方面的快速支持。
进行这样的平台级改进并非没有风险,对我们来说,进行此类改进时不干扰或破坏用户的应用至关重要。我们所有的地区有将近 60 个集群需要安全升级。因此,我们采取了一种缓慢的、基于金丝雀的方法,在集群群中逐步实现这一更改。gVisor 更新是我们整个栈的整体更新的一部分,其它还包括新的 Linux 内核和 Kubernetes 版本等。我们没有选择对现有集群进行就地升级,而是创建了新的集群,并逐渐启用应用程序部署到它们上面。一旦被认为稳定,我们开始创建旧集群的替代集群,并将应用程序从旧集群迁移到新集群。这个过程现在已经完成,所有应用程序都在新集群上运行。
来尝试改进后的 App Platform 性能吧!
如果你之前在 App Platform 上的应用程序性能有明显问题,请考虑再试一次。我们已经从很多客户那里得到了正向的反馈,他们在这次版本更新过程的早期迁移了应用程序,他们表示自己遇到的性能问题已经在将应用程序移动到新基础设施后,得到了解决。
试试看!登录你在云控制台的App Platform账户,或者通过创建 DigitalOcean 账户,来体验一下更新后的 App Platform。如果你希望咨询更多云服务方案,或希望从其它云服务迁移到 DigitalOcean,可访问DigitalOcean 中国独家战略合作伙伴卓普云官网与我们的技术售前团队咨询、沟通。

相关文章:
DigitalOcean 应用托管更新:应用端到端运行时性能大幅改进
DigitalOcean 希望可以为企业提供所需的工具和基础设施,以帮助企业客户加速云端的开发,实现业务的指数级增长。为此 DigitalOcean 在 2020 年就推出了App Platform。 App Platform(应用托管) 是一个完全托管的 PaaS 解决方案&…...
c/c++对于char*的理解(联合string容器)
在C和C中,char*是一个指向字符(char)的指针。它经常被用来处理C风格的字符串,这种字符串是以空字符(\0)结尾的字符数组。以下是关于char*的一些关键点: C风格的字符串: C风格的字符…...
Web前端三大主流框架是什么?
Web前端开发领域的三大主流框架分别是Angular、React和Vue.js。它们在Web开发领域中占据着重要的地位,各自拥有独特的特点和优势。 Angular Angular是一个由Google开发的前端框架,最初版本称为AngularJS,后来升级为Angular。它是一个完整的…...
一个基于servlet的MVC项目-登录验证
一、MVC的概念 MVC是Model、View、Controller的缩写,分别代表 Web 应用程序中的3种职责1 模型:用于存储数据以及处理用户请求的业务逻辑。 2视图:向控制器提交数据,显示模型中的数据。 3控制器:根据视图提出的请求,判断将请求和数据交给哪个…...
Windows 11 下 kafka 的安装踩坑
安装 windows系统kafka小白入门篇——下载安装,环境配置,入门代码书写(推荐) kafka在windows下安装和使用入门教程 问题1 参考链接 运行kafka集成的zookeeper时,命令:bin\windows\zookeeper-server-star…...
二维数组:行列互换/求最大值及其所在位置/求各行各列的和/矩阵乘积/深入理解二维数组
二维数组 1.定义 只有行号可以省略,初始化 全部初始化/部分初始化/不初始化 2.元素引用 3.存储形式 :顺序存储 按行存储 4.深入理解二维数组 #include<stdio.h> #include<stdlib.h>#define M 2 #define N 3int mian() {int a[M][N] {{1,2,3},{4,5,6}}…...
The Onion Router-洋葱
目录 Tor的运作原理 Tor挑战和局限性 Tor,即The Onion Router(洋葱路由器),是一个用于匿名通信的开放网络,它旨在增强用户的隐私和安全。Tor的名字源自其设计原理,类似于将信息包装在多层“洋葱”中&…...
自动化工具 Ansible:playbooks 剧本编写
目录 前言 一、playbooks 剧本概述 1、playbooks 剧本概念 2、playbooks 剧本组成部分 3、playbooks 剧本特点与优势 二、ansible-playbook 命令 三、playbooks 剧本简单实例 1、编写 apache 的 yum 安装部署脚本 2、编写 nginx 的 yum 安装部署剧本 四、playbooks 定…...
AttributeError: module ‘flask.app‘ has no attribute ‘route‘
秒解方法一: # 未引入Flask app Flask(__name__)秒解方法二: AttributeError: ‘module’ object has no attribute ‘route’错误描述: 这个错误通常发生在使用 app.route 装饰器时,表示 Flask 无法找到 route 属性。 解决方法…...
在云计算与人工智能中,7ECloud扮演着什么样的角色
数据驱动的时代,云计算和人工智能已成为推动现代科技进步的两大引擎。作为一家专注于云计算的公司,7ECloud正是在这个领域发挥自己的力量,力图为企业提供一站式解决方案,并拥有来自厂家的源头支持,用极其低的价格助力企…...
视频推拉流EasyDSS视频直播点播平台如何优先展示正在直播的直播间?
视频推拉流EasyDSS视频直播点播平台集视频直播、点播、转码、管理、录像、检索、时移回看等功能于一体,可提供音视频采集、视频推拉流、播放H.265编码视频、存储、分发等视频能力服务,在应用场景上,平台可以运用在互联网教育、在线课堂、游戏…...
JavaEE之线程(4)——线程安全、线程安全的原因,synchronized关键字
前言 在本栏的前面的内容中,我们介绍了线程的创建、Thread 类及常见方法、线程的状态,今天我们来介绍一下关于线程的另一个重点知识——线程安全。 一、线程安全 基本概念: 线程安全的确切定义是复杂的,但我们可以这样认为&…...
Python3 笔记:分支结构
Python 中选择结构:单分支选择结构、双分支选择结构、多分支选择结构。 1、if 语句是单分支选择结构,其语法形式如下: if 条件表达式: 语句块 如果条件表达式的值为真,即条件成立,语句块将被执行;否…...
《TAM》论文笔记(上)
原文链接 [2005.06803] TAM: Temporal Adaptive Module for Video Recognition (arxiv.org) 原文代码 GitHub - liu-zhy/temporal-adaptive-module: TAM: Temporal Adaptive Module for Video Recognition 原文笔记 What: TAM: Temporal Adaptive Module for …...
【Java的抽象类和接口】
1. 抽象类 1.1 抽象类概念 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果 一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。 以上代码中…...
今天开发了一款软件,我竟然只用敲了一个字母(文末揭晓)
软件课题:Python实现打印100内数学试题软件及开发过程 一、需求管理: 1.实现语言:Python 2.打印纸张:A4 3.铺满整张纸 4.打包成exe 先看效果: 1. 2.电脑打印预览 3.打印到A4纸效果(晚上拍的&#x…...
【C++杂货铺】红黑树
目录 🌈前言🌈 📁 红黑树的概念 📁 红黑树的性质 📁 红黑树节点的定义 📁 红黑树的插入操作 📁 红黑树和AVL树的比较 📁 全代码展示 📁 总结 🌈前言…...
css--控制滚动条的显示位置
各种学习后的知识点整理归纳,非原创! ① direction属性 滚动条在左侧显示② transform:scaleY() 滚动条在上侧显示 正常的滚动条会在内容超出规定的范围后在区域右侧和下侧显示在有些不正常的需求下会希望滚动条在上侧和左侧显示自己没有想到好的解决方案…...
华为设备display查看命令
display version //查看版本信息 display current-configuration //查看配置详情 display this //查看当前视图有效配置 display ip routing-table //查看路由表 display ip routing-table 192.168.3.1 //查看去往3.1的路由 display ip interface brief //查看接口下ip信息 dis…...
自动攻丝机进出料激光检测 进料出料失败报警循环手动及关闭报警退出无限循环
/**************进料检测********************/ /***缺料无限次循环 手动退出 超时报警*******/ void check_Pon() // { zstatus0; //报警计数器归零 Signauto1; …...
C语言标准演进实战指南:如何在现代项目中应用C11/C17/C23特性
C语言标准演进实战指南:如何在现代项目中应用C11/C17/C23特性 1. 为什么现代C项目需要关注新标准特性 在嵌入式系统、高性能计算和基础设施软件领域,C语言仍然是无可争议的王者。根据2023年TIOBE指数统计,C语言连续第三年蝉联最受欢迎编程语言…...
爱毕业aibye精选6大AI论文平台榜单:助力高效写作与智能降重,科研工作者的得力助手!
工具名称 核心功能 特色优势 Aibiye 论文生成降AI率 全学科覆盖、仿写优化、自动图表生成 Aicheck AI检测文献综述辅助 精准查新、3分钟高效成文 GPT学术版 润色/翻译/代码解释 多模型协同、PDF深度解析 摆平论文 大纲生成降重改写 三步出稿、本硕博通用 QuillB…...
24小时运行验证:OpenClaw+ollama-QwQ-32B自动化监控脚本稳定性测试
24小时运行验证:OpenClawollama-QwQ-32B自动化监控脚本稳定性测试 1. 项目背景与目标设定 去年冬天的一个深夜,我被手机警报惊醒——某个关键商品的价格突然跌破了我的心理预期。手忙脚乱登录电商平台时,优惠早已结束。这次经历让我意识到&…...
Obsidian移动端深度评测:安卓/iOS同步技巧+5个必装生产力插件
Obsidian移动端深度评测:安卓/iOS同步技巧5个必装生产力插件 在移动办公场景下,Obsidian作为一款强大的知识管理工具,其跨平台能力与插件生态为商务人士和学生群体提供了独特的价值。本文将深入解析Obsidian在Android和iOS平台的核心差异&…...
EdB Prepare Carefully:定制你的RimWorld完美开局体验
EdB Prepare Carefully:定制你的RimWorld完美开局体验 【免费下载链接】EdBPrepareCarefully EdB Prepare Carefully, a RimWorld mod 项目地址: https://gitcode.com/gh_mirrors/ed/EdBPrepareCarefully 是否厌倦了RimWorld随机生成的殖民者团队带来的不确定…...
Elasticsearch踩坑记录:scaled_float字段查询结果和你想的不一样?
Elasticsearch中的scaled_float:为什么你的查询结果总是不准确? 刚接触Elasticsearch的开发者经常会遇到一个令人困惑的现象:明明存储的是精确的浮点数,查询时却返回了意料之外的结果。这背后往往与scaled_float字段类型的特殊处理…...
告别性能瓶颈:如何用NVIDIA Profile Inspector释放显卡90%潜能?
告别性能瓶颈:如何用NVIDIA Profile Inspector释放显卡90%潜能? 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector 为什么官方显卡控制面板永远像个"锁着的工具箱"&#…...
Python视频剪辑自动化工具:零基础批量处理指南
Python视频剪辑自动化工具:零基础批量处理指南 【免费下载链接】JianYingApi Third Party JianYing Api. 第三方剪映Api 项目地址: https://gitcode.com/gh_mirrors/ji/JianYingApi 在数字内容创作爆炸的时代,视频剪辑效率提升已成为自媒体人、教…...
ncmdumpGUI:突破网易云音乐NCM格式限制的高效解决方案
ncmdumpGUI:突破网易云音乐NCM格式限制的高效解决方案 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI ncmdumpGUI是一款开源的音频格式转换工具&am…...
从机器人ROS2到微服务gRPC:手把手教你用IDL定义跨语言通信的‘世界语’
从机器人ROS2到微服务gRPC:手把手教你用IDL定义跨语言通信的‘世界语’ 清晨的阳光透过实验室的玻璃窗洒进来,机械臂正在执行预设的轨迹动作,而云端的数据分析服务实时监控着它的能耗曲线。这个看似简单的场景背后,隐藏着一个复杂…...
