2

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

4

1 回答 1

3

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

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

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

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

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

于 2017-05-25T18:08:17.350 回答