Azure Function故障与警告:Function App运行故障检查方法咨询
配置Timer Trigger与Binding的Function App运行故障/警告排查方法
- 实时日志优先排查
进对应Function App实例,直接打开左侧「监控」栏下的日志流,把日志筛选级别切到Warning/Error,等下一次Timer触发时就能看到实时抛出的问题:比如cron表达式格式非法、绑定服务连接鉴权失败、执行过程中抛出的未捕获异常,都会直接在实时流里输出。要查历史问题就切到同栏下的「失败请求与异常」面板,选对应时间范围,能按触发ID关联到单次执行的完整错误栈。 - Timer Trigger专项问题排查
Timer相关的专属日志分类是WebJobs.Internal.Timers,重点筛这部分的Warning/Error条目:- 如果看到Schedule is overdue警告,说明调度错过了预期触发时间,常见原因是实例扩缩容卡顿、单实例并发配额占满、或者cron配置的时区和实际运行时区不匹配
- 如果看到LeaseId mismatch相关警告,是Timer的单实例运行分布式锁出了问题,一般是绑定的存储账户连接不稳定、实例异常重启导致租约失效
- 如果Timer完全没触发也没报错,先查应用配置里的
WEBSITE_TIME_ZONE参数:默认运行时用UTC时区,你写的cron如果是按本地时区配置的,没改这个参数会出现触发时间偏移8小时之类的问题,这类问题不会抛硬错误,只会在Verbose级别的日志里打调度时间记录,很容易漏
- Binding相关故障排查
所有绑定的加载、运行日志归在Microsoft.Azure.WebJobs.Host.Protocols分类下:- 启动阶段如果报Cannot bind parameter错误,先核对function.json/注解里的绑定参数名和代码里的入参出参名是否一致,绑定方向(in/out)有没有配反
- 如果报连接配置缺失错误,检查对应绑定需要的连接串是不是已经配到云端的应用程序设置里,本地调试用的
local.settings.json配置不会自动同步到云端,很多人部署的时候会漏 - 运行阶段的绑定错误(比如Output Binding写目标资源报403权限不足、404资源不存在、序列化失败),会在单次执行的日志里明确标注对应的绑定参数名、目标资源地址、具体错误码,顺着对应配置查权限、参数格式就行
- 隐性警告排查
很多不阻断主流程但有隐患的问题默认不会在Information级别日志输出,你可以到诊断设置里临时把日志级别调到Verbose,把日志归档到同实例绑定的存储账户或Log Analytics工作区后搜Warning级别条目,能查到比如Binding序列化降级、Timer因冷启动延迟触发、并发限流排队这类隐性问题。如果出现任务执行到一半中断的情况,先查日志里有没有Timeout value of [配置时长] exceeded相关报错:消费计划下Function默认执行超时是5分钟,超时会直接终止进程,日志里会打明确的超时提示。
内容的提问来源于stack exchange,提问作者WaAzure086
相关产品推荐
相关产品推荐

