美文网首页prometheusPrometheus
prometheus 查询长时间段数据时oom问题

prometheus 查询长时间段数据时oom问题

作者: 火头陀 | 来源:发表于2019-05-24 21:50 被阅读4次

问题描述

单一label的metric浏览长时间数据面板时(比如1周)查询失败并且导致prometheus oom

排障思路

  • 当time series 很长时做数据抽样,比如10W个poinit里抽样1000个点用于绘图
  • 限制内存使用以避免oom

思路落地

数据抽样

搜索grafana文档发下如下配置


image.png

参考文献:https://grafana.com/docs/features/datasources/prometheus/#query-editor

当查询到的样本数据量非常大时可以导致Grafana渲染图标时出现一些性能问题,通过Min Step可以控制Prometheus查询数据时的最小步长(Step),从而减少从Prometheus返回的数据量。
Resolution选项,则可以控制Grafana自身渲染的数据量。例如,如果Resolution的值为1/10,Grafana会将Prometeus返回的10个样本数据合并成一个点。因此Resolution越小可视化的精确性越高,反之,可视化的精度越低。

参考文献:https://yunlzheng.gitbook.io/prometheus-book/part-ii-prometheus-jin-jie/grafana/grafana-panels


URL query parameters:

  • query=<string>: Prometheus expression query string.
  • start=<rfc3339 | unix_timestamp>: Start timestamp.
  • end=<rfc3339 | unix_timestamp>: End timestamp.
  • ==step=<duration | float>: Query resolution step width in duration format or float number of seconds.==
  • timeout=<duration>: Evaluation timeout. Optional. Defaults to and is capped by the value of the -query.timeout flag.
  • The data section of the query result has the following format:

参考文献:https://prometheus.io/docs/prometheus/2.7/querying/api/


限制内存使用以避免oom

从帮助文档里发现--query.max-samples=50000000 即:默认最多加载50000000 samples, 如超过此限制会拒绝query, 因此可根据机器内存合理配置此数值保证不会oom
ps: prometheus version:2.7.1

./prometheus --help
usage: prometheus [<flags>]
      --query.max-samples=50000000 Maximum number of samples a single query can load into memory. Note that queries will fail if they would load more samples than this into memory, so this also limits the number of samples a query can return.

参考文献:./prometheus --help

相关文章

网友评论

    本文标题:prometheus 查询长时间段数据时oom问题

    本文链接:https://www.haomeiwen.com/subject/mjcozqtx.html