AWS Log Insights统计Lambda p99/p95时如何替换缺失@initDuration为0
Lambda 含冷启动耗时的P95/P99真实时延统计方法
CloudWatch Logs Insights 原生支持coalesce函数,作用是返回传入参数列表中第一个非空、非null的值,刚好可以解决非冷启动请求下@initDuration字段不存在的问题,自动将空值替换为0。
全局总时延百分位查询语句
直接在求和逻辑里给@initDuration加上coalesce兜底即可,该查询会覆盖时间范围内所有请求(冷启动+非冷启动),不会出现仅统计冷启动样本的偏差:
stats pct(@duration + coalesce(@initDuration, 0), 99) as p99_latency, pct(@duration + coalesce(@initDuration, 0), 95) as p95_latency
注意事项
- 不要直接用
@billedDuration统计真实感知时延:计费时长按1ms向上取整,且部分初始化阶段耗时不会纳入计费统计,和用户实际感受到的端到端时延存在偏差 - 如果需要拆分冷启动、温启动请求各自的时延表现,可以用分组查询:
fields @duration + coalesce(@initDuration, 0) as total_latency, coalesce(@initDuration, 0) > 0 as is_cold_start | stats pct(total_latency, 99), pct(total_latency, 95) by is_cold_start
- 如果需要按函数版本、别名做维度拆分,直接在stats最后加对应的by字段即可,空值兜底逻辑不受影响。
内容的提问来源于stack exchange,提问作者Kancha
相关产品推荐
相关产品推荐

