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

时间:2017-05-25 18:08:17

标签: cockroachdb

我今天早些时候开始了一个CockroachDB进程,即使我还没有使用它,它的内存使用量也在不断增加。发生了什么事?有没有办法阻止它成长?

1 个答案:

答案 0 :(得分:3)

如果你启动一个CockroachDB节点并让它运行几个小时或几天,那么它的内存使用率会稳定增长一段时间并且在计算机总内存的25%左右达到稳定水平之前并不出乎意料。这有两个因素:

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

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

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

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