【发布时间】:2017-10-26 11:50:59
【问题描述】:
我今天早些时候启动了一个 CockroachDB 进程,尽管我没有使用它,但它的内存使用量在后台一直在增加。这是怎么回事?有什么办法可以阻止它生长?
【问题讨论】:
标签: cockroachdb
我今天早些时候启动了一个 CockroachDB 进程,尽管我没有使用它,但它的内存使用量在后台一直在增加。这是怎么回事?有什么办法可以阻止它生长?
【问题讨论】:
标签: cockroachdb
如果您启动 CockroachDB 节点并让它运行数小时或数天,这并不意外,因为它的内存使用量会稳定增长一段时间,然后稳定在计算机总内存的 25% 左右。有两个因素在起作用:
CockroachDB 将内部时序监控数据存储到自身中,以便为其admin UI 中的图表提供动力。这意味着即使您没有向系统发送流量,也会定期写入数据。
与大多数数据库一样,CockroachDB 将最近访问的数据缓存在内存中,以便提供更快的读取速度。时间序列写入包含在其中,因此时间序列数据会在内存中累积,直到系统达到其配置的内存限制。
缓存大小限制默认为机器内存的 25%,但可以通过在运行 cockroach start 时设置 --cache 标志来控制。例如,您可以运行 cockroach start --cache=512MiB 将缓存大小限制为 2^29 字节。
如果您根本不关心管理 UI,您还可以通过在启动 CockroachDB 进程之前设置 COCKROACH_METRICS_SAMPLE_INTERVAL 环境变量来选择降低对时间序列数据进行采样的频率。默认每 10 秒采样一次,所以你可以将其设置为COCKROACH_METRICS_SAMPLE_INTERVAL=1m 以减少 6 倍写入的数据量。
【讨论】: