【问题标题】:How to prevent high memory consumption caused by a aql-query returning a large result set?如何防止 aql-query 返回大型结果集导致的高内存消耗?
【发布时间】:2022-08-17 17:01:54
【问题描述】:

在我们的 artifactory-pro 7.38 实例中,我发现了非常高的内存使用率,这是我以前在 artifactory 6 中从未见过的。现在我有一个内存转储,显示了一个堆栈跟踪,揭示了内存消耗的原因。当使用某个 aql-query 按日期过滤所有工件时,jdbc-resultset 似乎变得非常大(+20 mio 项)。虽然有可能限制结果的选项,但我想知道如何保护实例免受这种情况的影响。有没有一种方法可以根据结果的数量来限制结果集的大小?我读到至少支持与 aql-query 一起传递限制,但是在服务器端可以做些什么,比如强制分页?

    标签: artifactory


    【解决方案1】:

    在 Artifactory 版本中7.41.x已经进行了改进,允许系统完全针对这种情况终止长时间运行的 AQL 查询,以避免出现性能问题。

    默认情况下,系统将终止任何持续时间超过 15 分钟(默认值)的查询。为了更改它,您可以添加以下属性来更改值:

    artifactory.aql.query.timeout.seconds - AQL 的查询超时,默认为 15 分钟(900 秒)

    此外,正如您所提到的,可能是可以改进查询。我建议您阅读 this wiki page 关于限制和分页的内容。

    我希望这可以澄清和帮助。

    【讨论】:

      猜你喜欢
      • 2011-10-17
      • 1970-01-01
      • 1970-01-01
      • 2015-12-14
      • 2014-01-25
      • 1970-01-01
      • 1970-01-01
      • 2016-12-09
      • 1970-01-01
      相关资源
      最近更新 更多