美团性能优化之路——性能指标体系

前言

在互联网网站百花齐放的今天,网站响应速度是用户体验的第一要素,其重要性不言而喻,这里有几个关于响应时间的重要条件:

  • 用户在浏览网页时,不会注意到少于0.1秒的延迟;
  • 少于1秒的延迟不会中断用户的正常思维, 但是一些延迟会被用户注意到;
  • 延迟时间少于10秒,用户会继续等待响应;
  • 延迟时间超过10秒后,用户将会放弃并开始其他操作;

而在美团,“消费者第一”是公司的第一价值观,为了给消费者提供更好的用户体验,美团网的技术Geeker们在性能优化的路上做了不少的工作,开发了许多工具让网站的性能监测更容易,通过各种可视化报表,工程师们只需要点点鼠标就能看到网站的性能数据,并能根据数据来预测系统的性能趋势,快速发现有价值的优化点。在本文中,不讲best practices,也不去讲具体的优化手段,仅从美团日常通用的性能指标体系的角度去分享美团的实践。

性能指标的分类

为了更好的去监控整个系统的性能,做好全流程的优化,美团将指标分为了以下3类:

  • Perceived system performance:这类指标主要从工程师的角度去衡量,如后端的响应时间,当前并发的用户数,请求数,请求的错误率等等。
  • Perceived user experience:这类指标用来衡量⽤户的真实体验,从用户体验的角度出发,如首屏时间,白屏时间,完全加载时间之类,即用户能实际感觉到得网页加载延迟。
  • System performance:这类指标从服务器的角度出发,监测目前服务器的CPU、内存、网络带宽、流量等等物理资源。

对于上述的每一类,衡量标准可能都不一样,在数据展示方面,主要通过趋势图和汇总表格来展现,下面来对这3类指标分别细说:

Perceived system performance

这类指标主要为工程师设计,来衡量业务后端的处理速度,主要从以下几个方面去衡量:

1) 响应时间

在美团,响应时间是性能的主要kpi,对于响应时间,美团做了很多精细化的处理; 首先对每个业务的整体(集群)响应时间有个衡量:

  • 95%的响应时间:将一段时间内所有请求的响应时间中取一个值,使95%的请求响应时间均小于或等于它,此值即为95%请求覆盖的响应时间。
  • 90%的响应时间:将一段时间内所有请求的响应时间中取一个值,使90%的请求响应时间均小于或等于它,此值即为90%请求覆盖的响应时间。
  • 50%的响应时间:将一段时间内所有请求的响应时间中取一个值,使50%的请求响应时间均小于或等于它,此值即为50%请求覆盖的响应时间。

以某内部服务为例,3条不同的曲线分别代表了3种不同的响应时间维度:

响应时间

另外为了方便工程师的优化,对具体到每个请求url都做了更精细化的统计,不光统计了上述的指标,还增加了:

  • 最大响应时间:某请求的某段时间范围内响应时间的最大值。
  • 最小响应时间: 某请求的某段时间范围内响应时间的最小值。
  • 时间标准差:某请求某段时间范围内的波动情况,用来衡量某请求是否存在很大波动,标准差越大,波动越大。

以某内部服务为例,通过汇总表格展现出某小时的某url的更细响应时间的维度:

响应时间

2)请求数(按天或小时统计)

根据不同的时间维度去统计系统每天或每小时的请求数(每小时的统计情况可以见上图),并以趋势图和表格形式展示。

某内部服务每天请求数的趋势图:

请求数

3)错误率

关于错误率的统计主要有以下几种:

  • connection timeout:http请求中出现504的次数和比例。
  • error response:http请求中出现500的次数和比例。
  • 错误网关数:http请求中出现502的次数和比例。
  • 异常日志统计:统计业务中出现得异常的数量和趋势。

以某内部服务的异常数量趋势为例:

异常数量

Perceived user experience

这类指标从用户的角度出发,通过模拟用户请求或对真实用户抽样,来监控用户对网站的实际体验效果,主要利用js来收集不同浏览器下访问网站的加载速度和性能;对于一次完整用户请求来说,http请求可以划分为如下几个阶段:

  • DNS:域名解析阶段,通常在几毫秒左右
  • TCP:建立网络连接
  • Requesting:发送请求
  • WebServer处理
  • Transferring:传输数据
  • Parsing:浏览器解析。几个重要的时间点为: a. 首屏时间 客户端第一屏资源加载完毕 b. domready时间 DOM解析完毕,可以进行动态修改 c. load时间 所有资源加载完毕

对于上述的几个阶段,我们设立了多种时间参数(每个参数又有 90% 和 50% 两种指标)来衡量,具体如下:

  • 查找域名:开始查找域名到查找结束,计算公式为(domainLookupEnd - domainLookupStart)
  • 建立连接:开始发出连接请求到连接成功,计算公式为(connectEnd - connectStart)
  • 请求文档:开始请求文档到开始接收文档,计算公式为(responseStart - requestStart)
  • 接收文档:开始接收文档到文档接收完成,计算公式为(responseEnd - responseStart)
  • domready:开始解析文档到 DOMContentLoaded 事件被触发,计算公式为(domContentLoadedEventStart - domLoading)
  • load事件持续:load 事件被触发到 load 事件完成,计算公式为(loadEventEnd - loadEventStart)
  • 完全加载:开始解析文档到文档完全加载,计算公式为(domComplete - domLoading)
  • 首屏加载:开始解析文档到首屏加载完毕,计算公式为(firstscreenready - domLoading)
  • 完全加载【全过程】:此次浏览最开始时刻到完全加载完毕,计算公式为(domComplete - navigationStart)
  • 首屏加载【全过程】:此次浏览最开始时刻到首屏加载完毕,计算公式为(firstscreenready - navigationStart)

为了更清楚的说明每个参数的意义,用下图说明如下:

http请求过程

其中不同的指标对于用户体验的影响权重不同,对于用户来说白屏时间(浏览最开始时刻到首屏加载前)和首屏时间是最重要的。

某应用的上述时间参数趋势图:

时间参数

System performance

这类指标主要监测目前服务器的cpu,内存,硬盘io率,网络带宽,流量等等物理资源的使用情况,这类指标比较常见,就不细说了。

某内部服务的cpu使用率情况:

cpu使用

某内部服务的硬盘IO情况:

硬盘io

某内部服务的网络IO情况:

网络io

总结

俗话说“军马未动,粮草先行!”,监控->分析->优化,号称是性能优化的三部曲,为了更容易地找到性能优化的关键点,建立一个统一的精细化的性能监控平台,做到数据驱动型的性能优化,是公司的长远目标,也是值得公司投入的一个方向,性能优化,从监控开始,只有监控的性能指标体系建立好了,才能更好地去做分析和优化!(PS:欢迎对性能优化感兴趣的童鞋加入美团。)

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

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

相关文章

图谱实战 | 面向C端场景的概念图谱构成、建设与应用索引

转载公众号 | 老刘说NLPC端是知识图谱应用的一个重要领域,这个领域有大量的用户行为数据,存在着包括搜索、推荐、广告投放等业务。当前,主流的互联网公司,如美团、阿里、腾讯都在尝试相关落地,在此当中,概念…

11 个好用的科研工具推荐!工作效率提升 max!

文 | 炼丹学徒编 | 小轶前阵子,卖萌屋团队群里大家互相分享了一波自己收藏已久的 好用科研工具 。小伙伴们纷纷都有一种相见恨晚的感觉!这么多好东西,当然也要分享与各位读者小伙伴啦~也希望大家能把自己用过好用的工具留言在评论区&#xff…

搜索引擎关键字智能提示的一种实现

背景 搜索关键字智能提示是一个搜索应用的标配,主要作用是避免用户输入错误的搜索词,并将用户引导到相应的关键词上,以提升用户搜索体验。 美团CRM系统中存在数以百万计的商家,为了让用户快速查找到目标商家,我们基于s…

会议交流 | DataFunSummit 知识图谱在线峰会——链接知识图谱最前沿技术和最落地产业化应用的桥梁!...

随着人工智能技术的发展与应用,知识图谱作为AI进步的阶梯越来越受到学术界和产业界的重视,并且已经在很多领域、场景中体现出自身的价值。从最初的互联网搜索、推荐、问答等ToC场景,逐渐进入到垂直行业ToB的应用当中。然而,场景的…

LeetCode 1209. 删除字符串中的所有相邻重复项 II(栈)

1. 题目 给你一个字符串 s,「k 倍重复项删除操作」将会从 s 中选择 k 个相邻且相等的字母,并删除它们,使被删去的字符串的左侧和右侧连在一起。 你需要对 s 重复进行无限次这样的删除操作,直到无法继续为止。 在执行完所有删除…

YUI经验谈 - 自定义事件默认行为

纵观主流JS库和框架,YUI在自定义事件方面做的尤为出色。如果需要挑出一个代表性的feature,那么非事件默认行为莫属。 是什么 YUI自定义事件在总体上模仿了DOM事件的设计思想。DOM中的一些事件是有默认行为的,详细见DOM3 Event - Default acti…

美团NLP中心算法实习生招聘

致力于连接最靠谱的算法岗与最强的求职者招聘贴投放请联系微信xixiaoyao-1岗位职责:NLP算法研发,例如文本挖掘、知识预训练、知识&多模态预训练等知识图谱构建核心技术相关论文撰写岗位要求:北京高校在校大学生。(2023年毕业优…

论文浅尝 | 改善多语言KGQA的 Zero-shot 跨语言转换

笔记整理:谭亦鸣, 东南大学博士生来源:NAACL21链接:https://aclanthology.org/2021.naacl-main.465/概述为了扩展多语言知识图谱问答的应用,Zero-shot方法成为一个研究趋势。在Zero-shot的设定下,通过高资源语言的训练…

LeetCode 1172. 餐盘栈(栈 + set)

1. 题目 我们把无限数量 ∞ 的栈排成一行,按从左到右的次序从 0 开始编号。每个栈的的最大容量 capacity 都相同。 实现一个叫「餐盘」的类 DinnerPlates: DinnerPlates(int capacity) - 给出栈的最大容量 capacity。void push(int val) - 将给出的正…

Hive SQL的编译过程

Hive是基于Hadoop的一个数据仓库系统,在各大公司都有广泛的应用。美团数据仓库也是基于Hive搭建,每天执行近万次的Hive ETL计算流程,负责每天数百GB的数据存储和分析。Hive的稳定性和性能对我们的数据分析非常关键。 在几次升级Hive的过程中&…

Prompt tuning新工作,五个参数解决下游任务 fine-tuning

文 | 小伟编 | 小轶前言自从Google石破天惊地发布Bert以来,NLP就进入了预训练语言模型的时代。众所周知,我们可以用预训练语言模型来学习各种各样的任务,即使它们的特征空间有比较大的差异。那么预训练语言模型为什么会有这种泛化能力呢&…

会议交流 | 如何将图谱实体与关系更好的向量化,并基于推理扩充知识边界?——DataFun Summit2022知识图谱在线峰会...

背景介绍知识图谱是对人类先验知识的概括,具有重要的学术价值和广泛的应用前景。在深度学习广泛应用环境下,知识图谱的表示学习通过将图谱实体和关系向量化,便于利用深度学习技术实现异质信息融合;同时,基于这种图谱表…

真正的高阶特征交叉:xDeepFM与DCN-V2

文 | 水哥源 | 知乎Saying1. xDeepFM和DCN-V2是真正的高阶交叉,和前面讲的High Order Factorization Machine(HOFM)又有着千丝万缕的联系。某种简化下,都能退化为HOFM的形式2. 如图3. 推荐模型迭代的时候要平衡涨点和复杂度的关系…

学术会议 | 中国杭州举办——第21届国际语义网大会​ISWC2022 Call for Papers

中国杭州举办!ISWC2022 Call for Papers.ISWC(International Semantic Web Conference)是语义网和知识图谱领域的国际顶级学术会议,2022年10月23-27日,ISWC将在中国杭州举行,通过线上线下结合的方式,汇聚全世界相关的科…

LeetCode 82. 删除排序链表中的重复元素 II(链表)

1. 题目 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。 示例 1: 输入: 1->2->3->3->4->4->5 输出: 1->2->5示例 2: 输入: 1->1->1->2->3 输出: 2->3来源:力…

从 ACL’22 投稿情况,速览当下 NLP 研究热点!

文 | Yimin_饭煲编 | 小轶卖萌屋的作者们,最近可真是忙秃了头~,不仅要苦哈哈地赶 ACL 2022 提前了两个月的Deadline,还要尽心尽力为读者们提供高质量的内容。如果大家心疼卖萌屋的作者们的话,还请多多一键三连:)ACL2022 全部转向了…

开源开放 | DeepKE发布新版本:支持低资源、长篇章、多任务的图谱抽取开源框架(浙江大学)...

OpenKG地址:http://openkg.cn/tool/deepkeGitHub地址:https://github.com/zjunlp/deepkeGitee地址:https://gitee.com/openkg/deepkeDeepKE网站:http://deepke.zjukg.org/CN/index.html开放许可协议:GPL 3.0贡献者&…

LeetCode 478. 在圆内随机生成点(概率)

1. 题目 给定圆的半径和圆心的 x、y 坐标,写一个在圆中产生均匀随机点的函数 randPoint 。 说明: 输入值和输出值都将是浮点数。圆的半径和圆心的 x、y 坐标将作为参数传递给类的构造函数。圆周上的点也认为是在圆中。randPoint 返回一个包含随机点的x坐标和y坐标…

11月AI大事件回顾:GPT3开放使用/女娲视觉大模型/AE文艺复兴/...

编 | iven感谢提供本期内容的 ZenMoore、 jxyxiangyu、付瑶大家好~ 11月的新闻速报来啦!上个月不知道大家有没有忙着写文章,反正小编是这样的:好啦,让我们快来回顾上个月的 AI 大新闻吧!学术进展何恺明 Mas…

开源开放 | 开源立体化漏洞情报知识图谱(四维创智)

OpenKG地址:http://openkg.cn/dataset/vuln-sprocket开放许可协议:CC BY-SA 4.0 (署名相似共享)贡献者:四维创智(李德斌,孙基栩,鲍晨阳)1. 前言随着时间的推移&#xff0…