解决Grafana query processing would load too many samples into memory in query exec
现象
版更后, Grafana 无法正常展示 Prometheus 资料。
问题描述
稍微拉长 Grafana 时间轴,Grafana 会显示 query processing would load too many samples into memory in query execution.
报错信息。
报错截图
问题分析
因版更后, 可能因业务改变而导致prometheus metric
突增。但 Grafana 拉取的数据超过了 Prometheus 限制。 通过查找资源和翻阅 Prometheus GitHub 发现。由于PromQL语句可能会载入大量的 metrics 数据,导致 Prometheus 内存以及 CPU 消耗超标,为了保护 Prometheus 不会被复杂的 PromQL 查询吃掉过多的资源,Prometheus 作者在代码层面设置了限制。在 Prometheus 2.5.0 版本后,Prometheus 新增可以通过–query.max-samples参数来调整限制,满足更多的业务需求。
Prometheus 2.5.0 GitHub 特性说明:
地址:https://github.com/prometheus/prometheus/releases/tag/v2.5.0
Issue 地址:https://github.com/prometheus/prometheus/pull/4513
解决办法
因 GS prometheus
在迁移时升级过 Prometheus
版本,故需要查阅对应版本的 Prometheus
源码来了解 Prometheus 默认限制大小。
Prometheus 源码地址:https://github.com/prometheus/prometheus/blob/v2.15.2/cmd/prometheus/main.go
通过 Prometheus 源码可知,Prometheus 默认的最大查询上限为:50000000
。因 GS Grafana 图查询次数超过 Prometheus 限制,所以,我们需要通过参数来调整上线大小。
参数说明:
经过沟通,目前使用的 Gs prometheus 启动参数为:
参考文档:
http://blog.kankanan.com/article/query-processing-would-load-too-many-samples-into-memory-in-query-execution.html
https://github.com/prometheus/prometheus/blob/v2.15.2/cmd/prometheus/main.go
https://github.com/prometheus/prometheus/releases/tag/v2.5.0
https://github.com/prometheus/prometheus/pull/4513
本文出自”Jack Wang Blog”:http://www.yfshare.vip/2022/10/27/解决Grafana query processing would load too many samples into memory in query exec/