为什么 CockroachDB 的内存使用量在增加,即使我没有向它发送任何流量?

Why is CockroachDB's memory usage increasing even though I'm not sending it any traffic?

我今天早些时候启动了一个 CockroachDB 进程,即使我没有使用它,它的内存使用量在后台一直在增加。这是怎么回事?有什么办法可以阻止它长大吗?

如果您启动一个 CockroachDB 节点并让它 运行 数小时或数天,它的内存使用量会稳定增长一段时间,然后稳定在计算机总内存的 25% 左右,这并不意外。有两个因素在起作用:

  1. CockroachDB 将内部时间序列监控数据存储到自身中,以便为其 admin UI 中的图表提供动力。这意味着即使您没有向系统发送流量,也会定期写入数据。

  2. 与大多数数据库一样,CockroachDB 将最近访问的数据缓存在内存中,以便提供更快的读取速度。时间序列写入包含在其中,因此时间序列数据会在内存中累积,直到系统达到其配置的内存限制。

缓存大小限制默认为机器内存的 25%,但可以通过在 运行ning cockroach 启动时设置 --cache 标志来控制。例如,您可以 运行 cockroach start --cache=512MiB 将缓存大小限制为 2^29 字节。

如果您根本不关心管理员 UI,您还可以选择通过在启动 CockroachDB 之前设置 COCKROACH_METRICS_SAMPLE_INTERVAL 环境变量来降低采样时间序列数据的频率过程。它默认每 10 秒采样一次,因此您可以将其设置为 COCKROACH_METRICS_SAMPLE_INTERVAL=1m 以将写入的数据量减少 6 倍。