如何排查Azure Function App中高CPU占用的具体函数?
Azure Monitor 指标面板直接查看
登录Azure门户,打开你的Function App资源,进入「监控」>「指标」页面。选择命名空间为Function App,然后挑选Function Execution CPU Time这类函数级CPU指标,再添加「函数名称」作为维度,就能按单个函数拆分查看CPU消耗的趋势和具体数值,还可以调整时间范围对比不同时段的情况。通过Application Insights分析性能数据
要是你的Function App已经集成了Application Insights,直接打开对应的App Insights资源,进入「性能」面板,把分组依据设为「函数」,就能看到每个函数的CPU使用率、执行耗时等核心性能指标。也可以用Kusto查询精准筛选:requests | where cloud_RoleName == "你的FunctionApp名称" | summarize avg(duration), max(cpuTime) by name | order by max_cpuTime desc这条查询会按CPU时间从高到低列出所有函数,快速锁定资源消耗大户。
本地开发阶段用Core Tools+系统监控排查
如果是本地运行的Function App,用func start启动后,搭配系统自带的性能工具(比如Windows任务管理器、Linux的top命令),同时观察函数的执行日志,就能直观看到哪个函数运行时CPU占用明显升高。Core Tools本身也会输出每个函数的执行耗时和基础资源使用信息,方便初步定位。自定义日志或代码埋点深度排查
要是上面的方法不够细致,可以在函数代码里添加简单的CPU监控逻辑,比如用System.Diagnostics.Process类获取函数执行前后的CPU使用率并记录到日志里。另外,在Azure门户的单个函数「监控」>「日志」页面,也能查看函数执行时的详细运行日志,部分场景下会包含CPU相关的调用信息。
内容的提问来源于stack exchange,提问作者Craig

