是否可以查看哪些因素影响了 QuestDB 内存使用情况?

问题描述 投票:0回答:1

我正在运行 QuestDB,发现内存使用率很高。我想检查一下是什么对流程的 RSS 做出了贡献。可以这样做吗?

questdb
1个回答
0
投票

是的,这是可能的。为此,您应该配置 Prometheus 指标 并抓取它们。

首先,QuestDB 在 Java 虚拟机 (JVM) 中运行,因此 JVM 本身可能需要一些内存用于其堆。要查看堆大小,您应该检查

questdb_memory_jvm_max
指标(以字节为单位)。如果堆大小看起来太高,您应该考虑收集 heap dump,然后对其进行分析或报告问题。

接下来,QuestDB 使用本机(又称堆外)内存、匿名内存和映射内存。本机内存使用情况分为不同的指标,名称中带有

questdb_memory_tag_
前缀。例如。
questdb_memory_tag_MMAP_TABLE_READER
代表为表读取器映射文件分配的内存量(以字节为单位)。匿名内存的一个例子是
questdb_memory_tag_NATIVE_FAST_MAP
指标。这代表查询引擎分配的哈希表使用的内存,用于 JOIN 和 GROUP BY 查询。

在内存使用方面,映射内存通常不是问题。这是因为该内存是有弹性的,并且由操作系统自动处理:如果进程请求内存,操作系统会逐出映射页面,并在稍后访问它们时加载它们。因此,您应该查看本机内存指标 - 如果其中任何一个指标具有较高且可能不断增长的值,则可能表明存在问题。

© www.soinside.com 2019 - 2024. All rights reserved.