作者 | 千风
本文分为三个部分:概述中引入了积压问题,并介绍了函数核算异步调用根本链路;并在目标介绍部分具体介绍了目标检查方法,分类解读了不同的目标意义;最后以一个常见的异步恳求积压场景为例,介绍如安在 1 分钟内快速定位积压问题。
为异步调用保驾护航
运用函数核算异步调用的开发者最关心的问题是:调用恳求能否在预期的时刻内被处理完结。若没能处理完结,那么在客户眼中就是异步调用恳求积压了,但是根据之前函数核算异步调用目标体系,无论是定位积压,还是检查积压,过程都是十分繁琐的。
针对以上问题,函数核算推出了一系列异步调用恳求积压相关的目标,可以协助用户快速定位恳求积压,向用户展现积压量化值。本文将具体介绍怎么经过这些监控目标快速定位到函数异步调用出现的积压问题,为各位开发者解说晋级后的异步调用目标体系。
在开端之前,先简单介绍下函数核算异步调用。
异步调用是函数核算调用函数的一种方法,经过异步调用你不仅可以保证函数会至少履行一次,还可以保存调用履行过程中的状况转化信息和履行成果,其调用链路如下所示:
用户/事件源建议异步调用恳求后会马上回来本次恳求 ID,随后函数核算体系将本次调用的相关信息转化为音讯的格式,放入 MNS 音讯队行列中供体系内下流模块消费,下流模块会根据解析出来的调用音讯进行函数调用。
调用完结后,假如函数配置了 Destination,则体系会根据调用成果以及 Destination 内容进行进一步处理,Destination 相关内容介绍请参阅异步调用文档:
help.aliyun.com/document_de…
目标晋级
晋级后的函数核算异步调用链路监控目标首要新增了如下几类:
下面咱们将对上述目标进行具体解读。
目标检查
现在可以经过函数核算控制台或许 Serverless Devs 东西这两种方法检查函数的监控目标大盘,下面咱们将以控制台为例,指导咱们怎么检查异步调用链路相关的监控目标,根据 Serverless Devs 的检查方法可以参阅:
github.com/devsapp/fc/…
下面介绍的步骤前提是已开通了函数核算服务;且成功创建了服务以及函数,假如还未进行这些操作,请参阅运用控制台创建函数:
help.aliyun.com/document_de…
首要翻开函数核算控制台,点击左边监控大盘标签,滑倒底部,可以检查到该地域一切服务的异步调用处理状况以及异步音讯处理均匀延时概览表格:
此刻咱们点击恣意一个服务称号,进入后,可以看到该服务下一切函数的异步调用处理状况;以及异步音讯处理均匀延时概览表格:
接下来咱们点击恣意一个函数称号,进入后可以看到一切函数纬度的监控目标,并以图的方式展现:
至此,咱们现已学会了这些目标的检查途径。下面持续为各位开发者介绍解读上述异步链路相关目标。
目标解读
咱们将根据不同的目标类型对监控目标进行分类解读。
异步调用处理状况
异步恳求入队
异步调用中,到达函数核算的恳求数,当入队恳求数大于恳求处理完结数时,标明有恳求积压,函数处理异步恳求的速度小于异步恳求建议的速度。请调整函数弹性弹性(含预留资源)上限,参阅:
help.aliyun.com/document_de…
或可钉钉搜索参加阿里函数核算官网客户群(11721331)联络咱们进行处理图片。
异步恳求处理完结
异步调用中,函数核算处理完结的恳求数,异步恳求处理完结数量,应一直不大于异步恳求入队的数量。
异步恳求积压数
现已到达函数核算的异步恳求中,等待处理以及正在处理中的恳求统一视为积压恳求, 这些恳求的数量为异步音讯积压数,当这个值不为 0 时,标明异步调用恳求是有积压的。
该目标将异步调用恳求积压量化,处理积压数不可见问题,极大提高了异步调用的可观测性,也是本次晋级的重要内容之一。
异步恳求处理延迟
均匀处理时延
函数异步调用恳求从进入处理行列到开端处理的时延,按指定时刻粒度统计求均匀值。当该值高于预期时,标明函数异步调用恳求或许存在积压。
“异步恳求入队”、“异步恳求处理完结” 以及 “均匀处理延时” 这三个目标被放置在监控大盘的概览图表中,旨在协助用户快速定位到出现积压的函数,处理积压定位难的问题。
1 分钟定位积压问题
在之前的异步调用目标体系下,假如想要定位积压问题,首要需求找到积压函数,此刻需求逐个函数检查其函数监控目标详情,定位成功后,也无法直观看到具体的积压量化值。
晋级后的异步调用目标体系可以很好地处理积压问题定位难以及积压量化的问题。下面将环绕积压问题的场景,描绘怎么运用上述目标快速定位积压问题。
事务场景
问题描绘:
小张的事务涉及到三个函数,且都是异步调用,某天用户的事务出了问题,每个环节的异步处理时延都增大了。为了快速定位问题,用户想到了异步链路监控目标,进行了如下定位动作。
定位过程:
首要翻开地域等级的监控大盘,选择目标时刻段,检查该地域下各个服务的监控目标;
发现多个服务的异步调用均匀处理延时高于预期,一起其异步恳求入队数均大于恳求处理完结数,标明这些服务都有一定程度异步调用音讯积压,且 A-Service 的异步恳求入队数量和异步调用恳求完结数差别最大,积压最严重,点击 A-Service 检查监控目标:
可以看到该服务下的函数 A-Function 是积压源,点击 A-Function 检查函数纬度的监控目标:
从恳求积压数图中可以看到积压是从 15:07 时刻开端的,当前该账号下未完结的异步调用恳求数最大时大约有 7000 左右 ,一起异步调用恳求处理均匀时延在逐步升高,现在是 30 万毫秒左右。每分钟处理的异步调用恳求数在 800 — 900 之间。
注:由于小张现在运用的是账号等级共享行列,因而异步恳求积压数显示的整个账号下的异步调用恳求积压数,如因事务需求,函数需求独享行列,可以联络函数核算团队进行开通。
进一步发现,地域按量实例数图中实例数现已打满,因而定位到原因是因为 A-Function 的恳求激增,账号等级的按量实例数约束打满了,使得其他函数的异步调用也受到了影响,导致事务每个环节都受到了影响。
问题处理:
定位到问题后,小张马上联络了函数核算团队,根据事务量进行了地域按量实例约束调整。
一起 A-Function 调用量最大,或许会对地域纬度的异步调用恳求调度以及按量实例数产生一定的冲击,对其他函数的异步调用恳求造成影响,因而函数核算团队建议为 A-Function 开启独享行列功用,一起设置弹性实例上限,这样将 A-Function 的异步调用恳求进行阻隔,避免对其他函数的影响。
总结
晋级后的函数核算异步调用监控目标体系可以协助用户处理积压问题定位难以及积压量化等问题,结合云监控报警的设置,极大提高了函数核算异步调用应用的稳定性。
一起,为了尽量避免恳求积压状况的产生,咱们现在正在对函数核算异步处理体系层面进行优化,包括行列回收机制、独享行列才能以及积压音讯重定向战略等,然后提高函数核算体系处理异步调用恳求的才能。这样,经过强壮的异步调用恳求处理体系以及全面的监控目标体系,为函数核算异步调用保驾护航。
福利大放送
开发者怎么自我提高?怎么拓展自身技能,了解最优学习途径迅速入门?阿里云 Serverless 免费敞开超全开发者学习材料,将最前沿的技术知识沉淀送给各位。内含:技术电子书、技术大会材料合集、知识图谱、18 节入门视频课等,助力一切开发者一起学习进步!
重视 Serverless 大众号后台回复 学习 即可获得开发者学习材料下载链接!
发布云原生技术最新资讯、汇集云原生技术最全内容,定时举办云原生活动、直播,阿里产品及用户最佳实践发布。与你并肩探究云原生技术点滴,分享你需求的云原生内容。
重视【阿里巴巴云原生】大众号,获取更多云原生实时资讯!