当前位置: 首页 > news >正文

网站收录很好没排名菏泽网站建设电话

网站收录很好没排名,菏泽网站建设电话,那个网站做720度效果图,深圳seo优化seo优化郭健美#xff0c;阿里巴巴高级技术专家#xff0c;目前主要从事数据中心的性能分析和软硬件结合的性能优化。CCF 系统软件专委和软件工程专委的委员。曾主持国家自然科学基金面上项目、入选上海市浦江人才计划A类、获得 ACMSIGSOFT “杰出论文奖”。担任 ICSE18NIER、ASE18、…郭健美阿里巴巴高级技术专家目前主要从事数据中心的性能分析和软硬件结合的性能优化。CCF 系统软件专委和软件工程专委的委员。曾主持国家自然科学基金面上项目、入选上海市浦江人才计划A类、获得 ACMSIGSOFT “杰出论文奖”。担任 ICSE18NIER、ASE18、FSE19 等重要会议程序委员会委员。 数据中心已成为支撑大规模互联网服务的标准基础设施。随着数据中心的规模越来越大数据中心里每一次软件如 JVM或硬件如 CPU的升级改造都会带来高昂的成本。合理的性能分析有助于数据中心的优化升级和成本节约而错误的分析可能误导决策、甚至造成巨大的成本损耗。 本文整理自阿里巴巴高级技术专家郭健美在 2018 年 12 月 GreenTea JUG Java Meetup上的分享主要介绍阿里大规模数据中心性能监控与分析的挑战与实践。   大家好很高兴有机会与 Java 社区的开发者交流。我的研究领域在软件工程主要集中在系统配置和性能方面。软件工程一个比较常见的活动是找 bug当然找 bug 很重要但后来也发现即便 bug-free 的程序也会被人配置错所以就衍生出了软件配置问题。很多软件需要配置化比如 Java 程序或 JVM 启动时可以配置很多参数。通过配置一套软件可以灵活地提供各种定制化的功能同时这些配置也会对软件整体性能产生不同的影响。当然这些还在软件配置方面来了阿里以后我有机会把这方面工作扩展到了硬件会更多地结合硬件比如 CPU来看系统的配置变更和升级改造对性能、可靠性以及业务上线效果的影响。今天主要谈谈我在这方面的一点工作。 阿里最有代表性的事件是“双 11”。这里还是用的去年的数据因为今年有些数据还没出来。左上角是双十一的销售额去年大概是 253 亿美金比美国同期 Thanksgiving、Black Friday、Cyber Monday 加起来的销售额还要多。当然这是从业务层面去看数据技术同学会比较关注右边的数据去年双十一的交易峰值达到 32.5 万笔/秒、支付峰值达到 25.6 万笔/秒。对于企业来说这么高的峰值性能意味着什么意味着成本我们之所以关注性能就是希望通过持续的技术创新不断地提高性能、同时节省成本。 双十一零点的峰值性能不是一个简单的数字其背后需要一个大规模数据中心来支撑。 简单来说阿里的基础架构的上层是各种各样的应用比如淘宝、天猫、菜鸟、钉钉还有云计算和支付宝等这也是阿里的一个特色即具有丰富的业务场景。底层是上百万台机器相连的大规模数据中心这些机器的硬件架构不同、分布地点也不同甚至分布在世界各地。中间这部分我们称之为中台最贴近上层应用的是数据库、存储、中间件以及计算平台然后是资源调度、集群管理和容器再下面是系统软件包括操作系统、JVM 和虚拟化等。 中台这部分的产品是衔接社区与企业的纽带。这两年阿里开源了很多产品比如 Dubbo、PouchContainer 等可以看出阿里非常重视开源社区也非常重视跟开发者对话。现在很多人都在讲开源社区和生态外面也有各种各样的论坛但是像今天这样与开发者直接对话的活动并不是那么多而推动社区发展最终还是要依赖开发者。 这样大规模的基础架构服务于整个阿里经济体。从业务层面我们可以看到 253 亿美金的销售额、32.5 万笔交易/秒这样的指标。然而这些业务指标如何分解下来、落到基础架构的各个部分就非常复杂了。比如我们在做 Java 中间件或 JVM 开发时都会做性能评估。大部分技术团队开发产品后都会有个性能提升指标比如降低了 20% 的 CPU 利用率然而这些单个产品的性能提升放到整个交易链路、整个数据中心里面占比多少对数据中心整体性能提升贡献多少这个问题很复杂涉及面很广包括复杂关联的软件架构和各种异构的硬件。后面会提到我们在这方面的一些思考和工作。 阿里的电商应用主要是用 Java 开发的我们也开发了自己的 AJDK这部分对 OpenJDK 做了很多定制化开发包括融入更多新技术、根据业务需要及时加入一些 patches、以及提供更好的 troubleshooting 服务和工具。 大家也知道今年阿里入选并连任了 JCPEC 职位有效期两年这对整个 Java 开发者社区、尤其是国内的 Java 生态都是一件大事。但是不是每个人都了解这件事的影响。记得之前碰到一位同仁提到 JCPEC 对阿里这种大业务量的公司是有帮助对小公司就没意义了。其实不是这样的参选 JCPEC 的时候大公司、小公司以及一些社区开发者都有投票资格小公司或开发者有一票大公司也只有一票地位是一样的。很多国外的小公司更愿意参与到社区活动为什么举个简单例子由于业务需要你在 JVM 8 上做了一个特性费了很大的力气开发调试完成、业务上线成功结果社区推荐升级到 JVM11 上这时你可能又需要把该特性在 JVM 11 上重新开发调试一遍可能还要多踩一些新的坑这显然增加了开发代价、拉长了上线周期。但如果你能影响社区标准的制定呢你可以提出将该特性融入社区下一个发布版本有机会使得你的开发工作成为社区标准也可以借助社区力量完善该特性这样既提高了技术影响力也减少了开发成本还是很有意义的。 过去我们做性能分析主要依赖小规模的基准测试。比如我们开发了一个 JVM 新特性 模拟电商的场景大家可能都会去跑SPECjbb2015  的基准测试。再比如测试一个新型硬件需要比较 SPEC 或 Linpack 的基准测试指标。这些基准测试有必要性因为我们需要一个简单、可复现的方式来衡量性能。但基准测试也有局限性因为每一次基准测试都有其限定的运行环境和软硬件配置这些配置设定对性能的影响可能很大同时这些软硬件配置是否符合企业需求、是否具有代表性都是需要考虑的问题。 阿里的数据中心里有上万种不同的业务应用也有上百万台分布在世界各地的不同服务器。当我们考虑在数据中心里升级改造软件或硬件时一个关键问题是小规模基准测试的效果是否能扩展到数据中心里复杂的线上生产环境举个例子我们开发了 JVM 的一个新特性在 SPECjbb2015 的基准测试中看到了不错的性能收益但到线上生产环境灰度测试的时候发现该特性可以提升一个 Java 应用的性能、但会降低另一个 Java 应用的性能。同时我们也可能发现即便对同一个 Java 应用在不同硬件上得到的性能结果大不相同。这些情况普遍存在但我们不可能针对每个应用、每种硬件都跑一遍测试因而需要一个系统化方法来估计该特性对各种应用和硬件的整体性能影响。 对数据中心来说评估每个软件或硬件升级的整体性能影响非常重要。比如“双11”的销售额和交易峰值业务层面可能主要关心这两个指标那么这两个指标翻一倍的时候我们需要买多少台新机器需要多买一倍的机器么这是衡量技术能力提升的一个手段也是体现“新技术”对“新商业”影响的一个途径。我们提出了很多技术创新手段也发现了很多性能提升的机会但需要从业务上也能看出来。 为了解决上面提到的问题我们开发了 SPEED 平台。首先是估计当前线上发生了什么即 Estimation通过全域监控采集数据再进行数据分析发现可能的优化点。比如某些硬件整体表现比较差可以考虑替换。 然后我们会针对软件或硬件的升级改造做线上评估即 Evaluation。比如硬件厂商推出了一个新硬件他们自己肯定会做一堆评测得到一组比较好的性能数据但刚才也提到了这些评测和数据都是在特定场景下跑出来的这些场景是否适合用户的特定需求没有直接的答案。通常用户也不会让硬件厂商到其业务环境里去跑评测。这时候就需要用户自己拿这个新硬件做灰度测试。当然灰度规模越大评测越准确但线上环境都直接关联业务为了降低风险实际中通常都是从几十台甚至几台、到上百台、上千台的逐步灰度。SPEED 平台要解决的一个问题就是即便在灰度规模很小时也能做一个较好的估计这会节约非常多的成本。 随着灰度规模增大平台会不断提高性能分析质量进而辅助用户决策即 Decision。这里的决策不光是判断要不要升级新硬件或新版软件而且需要对软硬件全栈的性能有一个很好的理解明白什么样的软硬件架构更适合目标应用场景这样可以考虑软硬件优化定制的方向。比如Intel 的 CPU 从 Broadwell 到 Skylake其架构改动很大但这个改动的直接效果是什么Intel 只能从基准测试中给答案但用户可能根据自己的应用场景给出自己的答案从而提出定制化需求这对成本有很大影响。 最后是 Validation就是通常规模化上线后的效果来验证上述方法是否合理同时改进方法和平台。 数据中心里软硬件升级的性能分析需要一个全局的性能指标但目前还没有统一的标准。Google 今年在 ASPLOS 上发表了一篇论文提出了一个叫 WSMeter 的性能指标主要是基于 CPI 来衡量性能。在 SPEED 平台里我们也提出了一个全局性能指标叫资源使用效率 RUE。基本思想很简单就是衡量每个单位 Work Done 所消耗的资源。这里的 Work Done 可以是电商里完成的一个 Query也可以是大数据处理里的一个 Task。而资源主要涵盖四大类CPU、内存、存储和网络。通常我们会主要关注 CPU 或内存因为目前这两部分消费了服务器大部分的成本。 RUE 的思路提供了一个多角度全面衡量性能的方法。举个例子业务方反映某台机器上应用的 response time 升高了这时登录到机器上也看到 load 和 CPU 利用率都升高了。这时候你可能开始紧张了担心出了一个故障而且很可能是由于刚刚上线的一个新特性造成的。然而这时候应该去看下 QPS 指标如果 QPS 也升高了那么也许是合理的因为使用更多资源完成了更多的工作而且这个资源使用效率的提升可能就是由新特性带来的。所以性能需要多角度全面地衡量否则可能会造成不合理的评价错失真正的性能优化机会。   下面具体讲几个数据中心性能分析的挑战基本上是线上碰到过的具体问题希望能引起大家的一些思考。   首先是性能指标。可能很多人都会说性能指标我每天都在用这有什么好说的。其实真正理解性能指标以及系统性能本身并不是那么容易。举个例子在数据中心里最常用的一个性能指标是 CPU 利用率给定一个场景数据中心里每台机器平均 CPU 利用率是 50%假定应用需求量不会再增长、并且软件之间也不会互相干扰那么是否可以把数据中心的现有机器数量减半呢这样理想情况下 CPU 利用率达到 100% 就可以充分利用资源了是否可以这样简单地理解 CPU 利用率和数据中心的性能呢肯定不行。就像刚才说的数据中心除了 CPU还有内存、存储和网络资源机器数量减半可能很多应用都跑不起来了。 再举个例子某个技术团队升级了其负责的软件版本以后通过线上测试看到平均 CPU 利用率下降了 10%因而声明性能提升了 10%。这个声明没有错但我们更关心性能提升以后是否能节省成本比如性能提升了 10%是否可以把该应用涉及的 10%的机器关掉这时候性能就不应该只看 CPU 利用率而应该再看看对吞吐量的影响。 所以系统性能和各种性能指标可能大家都熟悉也都在用但还需要更全面地去理解。     刚才提到 SPEED 的 Estimation 会收集线上性能数据可是收集到的数据一定对吗这里讲一个 Hyper-Threading 超线程的例子可能对硬件了解的同学会比较熟悉。超线程是 Intel  的一个技术比如我们的笔记本一般现在都是双核的也就是两个hardwarecores如果支持超线程并打开以后一个 hardware core 就会变成两个 hardware threads即一台双核的机器会有四个逻辑 CPU。 来看最上面一张图这里有两个物理核没有打开超线程两边 CPU 资源都用满了所以从任务管理器报出的整台机器平均 CPU 利用率是 100%。左下角的图也是两个物理核打开了超线程每个物理核上有一个 hardwarethread 被用满了整台机器平均 CPU 利用率是 50%。再看右下角的图也是两个物理核也打开了超线程有一个物理核的两个hardware threads 都被用满了整台机器平均 CPU 利用率也是 50%。左下角和右下角的 CPU 使用情况完全不同但是如果我们只是采集整机平均 CPU 利用率看到的数据是一样的 所以做性能数据分析时不要只是想着数据处理和计算还应该注意这些数据是怎么采集的否则可能会得到一些误导性的结果。 数据中心里的硬件异构性是性能分析的一大挑战也是性能优化的一个方向。比如这里左边的 Broadwell 架构是 Intel 过去几年服务器 CPU 的主流架构近几年在推右边的 Skylake 架构包含最新的 Cascade Lake CPU。Intel 在这两个架构上做了很大的改动比如Broadwell 下访问内存还是保持多年的环状方式而到了 Skylake 改为网格状方式。 再比如L2 Cache 到了Skylake  上扩大了四倍通常来说这可以提高 L2 Cache 的命中率但是 cache 越大也不代表性能就一定好因为维护 cache coherence 会带来额外的开销。这些改动有利有弊但我们需要衡量利和弊对整体性能的影响同时结合成本来考虑是否需要将数据中心的服务器都升级到 Skylake。 了解硬件的差异还是很有必要的因为这些差异可能影响所有在其上运行的应用并且成为硬件优化定制的方向。 现代互联网服务的软件架构非常复杂比如阿里的电商体系架构而复杂的软件架构也是性能分析的一个主要挑战。举个简单的例子图中右边是优惠券应用左上角是大促主会场应用右下角是购物车应用这三个都是电商里常见的业务场景。从 Java 开发的角度每个业务场景都是一个 application。电商客户既可以从大促主会场选择优惠券也可以从购物车里选择优惠券这是用户使用习惯的不同。 从软件架构角度看大促主会场和购物车两个应用就形成了优惠券应用的两个入口入口不同对于优惠券应用本身的调用路径不同性能影响也就不同。所以在分析优惠券应用的整体性能时需要考虑其在电商业务里的各种错综复杂的架构关联和调用路径。像这种复杂多样的业务场景和调用路径是很难在基准测试中完全复现的这也是为什么我们需要做线上性能评估。 这是数据分析里著名的辛普森悖论在社会学和医学领域有很多常见案例我们在数据中心的性能分析里也发现了。这是线上真实的案例具体是什么 App 我们不用追究。假设还用前面的例子比如 App 就是优惠券应用在大促的时候上线了一个新特性 S灰度测试的机器占比为 1%那么根据 RUE 指标该特性可以提升性能 8%挺不错的结果。但是如果优惠券应用有三个不同的分组分组假设就是刚才提到的不同入口应用那么从每个分组看该特性都降低了应用的性能。 同样一组数据、同样的性能评估指标通过整体聚集分析得到的结果与通过各部分单独分析得到的结果正好相反这就是辛普森悖论。既然是悖论说明有时候应该看总体评估结果有时间应该看部分评估结果。在这个例子里面我们选择看部分评估、也就是分组上的评估结果所以看起来这个新特性造成了性能下降应该继续修改并优化性能。 所以数据中心里的性能分析还要预防各种可能的数据分析陷阱否则可能会严重误导决策。 最后还有几分钟简单提一下性能分析师的要求。这里通常的要求包括数学、统计方面的也有计算机科学、编程方面的当然还有更重要的、也需要长期积累的领域知识这一块。这里的领域知识包括对软件、硬件以及全栈性能的理解。其实我觉得每个开发者都可以思考一下我们不光要做功能开发还要考虑所开发功能的性能影响尤其是对数据中心的整体性能影响。比如JVM 的 GC 开发社区里比较关心 GC 暂停时间但这个指标与 Java 应用的 response time 以及所消耗的 CPU 资源是什么关系我们也可以有所考虑。 原文链接 本文为云栖社区原创内容未经允许不得转载。
http://www.yutouwan.com/news/371474/

相关文章:

  • 鄂州门户网站知识网站有哪些
  • go语言网站开发建设网站需要收费吗
  • 网站模板破解下载可视化网站开发平台
  • 固原地网站seo织梦网站修改教程视频教程
  • 网站建设营业执照如何写网站建设方案范文8篇
  • 企业网站建设专业公司头条网站怎么做的
  • 彭州建设局网站wordpress扁平模板下载
  • wordpress建站镜像海淘网站是谁做的
  • 明年做那个网站致富做网站贵不
  • 优化大师官网登录入口seo入口
  • dedecms手机网站制作wordpress开发公司
  • 做网站素材在哪里找哪个app可以免费下载ppt模板
  • 擼擼擼做最好的导航网站一个月做网站
  • 绵阳 网站开发建设明细在哪里看
  • 泉州市建设局网站网站备案怎么那么慢
  • 做网站编辑怎么样wordpress文章商品模板下载
  • 南通海洲建设集团网站c2c网站建设公司
  • 教育网站建设市场分析计划书做加工都在哪个网站推广
  • 如东做网站的公司二类医疗器械
  • 烟台网站建设哪家好精准营销手段
  • 长沙网站建设平台wordpress 数据库设计
  • 合作网站开发公司网站建设模板html
  • 公司网站建设公司好哪个公司网站设计好
  • 那些网站平台可以做3d建模如何学好网站建设
  • 网站栏目的分类三亚网站建设介绍
  • 论坛类网站搭建智能网站建设推荐
  • 安庆城乡建设局网站专业的西安免费做网站
  • 免费建站系统怎么用网站建设与维护费
  • wordpress 新浪微博插件石家庄白帽seo网络公司
  • 网站内页模板合肥手机网站建设