根本原因是Grafana大盘查询触发大量时间序列读取与聚合计算,全由Prometheus内存完成;优化核心是分流负载:限制查询范围、降频采集、删除高基数标签、用录制规则预计算、拆分专用实例及启用远程读。
Prometheus 大盘加载慢、内存飙升,根本原因通常是 Grafana 查询触发了大量时间序列读取和聚合计算,而这些操作全由 Prometheus 实例在内存中完成。优化核心不是“让大盘更快”,而是“不让 Prometheus 为大盘扛下不该扛的负载”。
大盘默认常设 1 小时或 24 小时视图,但若底层指标基数高(比如带 pod_name、namespace、container_id 等高维标签),短短几分钟内就可能拉取数十万时间序列,直接压爆 Prometheus 内存。
groups:
- name: cluster_cpu_usage
rules:
- record: cluster:cpu_usage:avg1m
expr: 1 - avg by (cluster) (rate(node_cpu_seconds_total{mode="idle"}[1m]))
一个 http_requests_total{job="api", instance="pod-123", path="/v1/user", status="200"} 就是一个独立时间序列;path 和 status 组合稍多,序列数就指数增长。大盘不需要看到每个 path 的明细,却在后台默默加载全部。
scrape_configs 中用 metric_relabel_configs 删除大盘无用的标签:- source_labels: [path]
regex: ".*"
action: labeldrop
- source_labels: [__meta_kubernetes_pod_name, __meta_kubernetes_namespace]
target_label: instance
separator: "_"
→ 把 pod-a_ns1、pod-b_ns1 等统一为可聚合维度
go_gc_duration_seconds、process_open_fds),它们极少用于大盘,却显著增加索引负担每次刷新大盘,Grafana 都会重跑一遍复杂 PromQL(如 sum by (service) (rate(http_requests_total[5m])))。如果涉及百万级时间序列,Prometheus 必须先加载所有匹配 series,再做 rate + sum,内存峰值极易突破 10GB。
svc:requests_rate_5m:sum),方便 Grafana 直接引用,不拼 PromQL单台 Prometheus 扛所有大盘查询,等于让数据库同时服务 OLTP + OLAP。合理分流是关键。
TPLink TLWDR4320 无线路由器IP带宽控制功能分配带宽设置方法
SQL Server 2008及更高版本数据库恢复做法之日志尾部备份实用指南
TPLink TLWDR4320 无线路由器控制管控小孩上网行为设置
TPLink TLWDR4320 无线路由器打印服务器设置指南
TPLink TLWDR8620 52 无线路由器当作交换机使用教程
TPLink TLWDR8620 52 无线路由器映射服务器到外网操作方法