搜索

15.11. 运行大型查询会导致 Loki 错误

download PDF

当长时间运行大型查询时,可能会导致 Loki 错误,如 timeouttoo many outstanding requests。这个问题没有完全的修复,但有几种方法可以缓解它:

调整查询以添加索引过滤
使用 Loki 查询,您可以查询索引和非索引字段或标签。包含标签过滤的查询更好。例如,如果您查询一个特定 Pod,它不是 indexed 字段,您可以将其命名空间添加到查询中。索引字段列表可在 Loki label 列中的 "Network flow format reference" 中找到。
考虑查询 Prometheus 而不是 Loki
Prometheus 比 Loki 更适合在大型时间范围上查询。但是,使用 Prometheus 还是 Loki 取决于您的具体用例。例如,对 Prometheus 的查询比 Loki 快,大时间范围不会影响性能。但是,和 Loki 相比,Prometheus 指标中包括的流日志的数量较少。如果查询兼容,Network Observability OpenShift Web 控制台会自动优先选择 Prometheus over Loki,否则默认为 Loki。如果您的查询没有针对 Prometheus 运行,您可以更改一些过滤或聚合来切换。在 OpenShift Web 控制台中,您可以强制使用 Prometheus。当不兼容的查询失败时会显示错误消息,这可帮助您找出要更改哪个标签,以使查询兼容。例如,将过滤器或聚合从 ResourcePod 更改为 Owner
考虑使用 FlowMetrics API 创建自己的指标
如果您不需要的数据不能作为 Prometheus 指标提供,您可以使用 FlowMetrics API 创建自己的指标。如需更多信息,请参阅"FlowMetrics API 参考"和"使用 FlowMetric API 配置自定义指标"。
配置 Loki 来提高查询性能

如果问题仍然存在,您可以考虑配置 Loki 来提高查询性能。有些选项取决于您用于 Loki 的安装模式,如使用 Operator 和 LokiStack,或 Monolithic 模式或 Microservices 模式。

  • 对于 LokiStackMicroservices 模式,尝试 增加 querier 副本的数量
  • 增加查询超时。您还必须在 FlowCollector spec.loki.readTimeout 中增加到 Loki 的 Network Observability 读取超时。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.