Graphite 停止随机收集数据

Gui*_*ume 8 metrics graphite

我们有一个 Graphite 服务器,通过 collectd、statsd、JMXTrans 收集数据……这几天以来,我们的数据经常出现漏洞。挖掘我们仍然拥有的数据,我们可以看到碳缓存大小的增加(从 50K 到 4M)。我们没有看到收集的指标数量增加(metricsReceived 稳定在 300K 左右)。我们的查询数量平均从 1000 次增加到 1500 次。

奇怪的是,当缓存大小增加时,cpuUsage 从 100%(我们有 4 个 CPU)略微下降到 50%。

再次奇怪的是,如果从磁盘读取八位字节,我们会看到数量增加,而写入的八位字节数量减少。

我们主要使用默认值配置 carbon:

  • MAX_CACHE_SIZE = inf
  • MAX_UPDATES_PER_SECOND = 5000
  • MAX_CREATES_PER_MINUTE = 2000

显然,我们的系统中发生了一些变化,但我们不明白是什么,也不知道我们如何找到这个原因......

有什么帮助吗?

小智 2

这不是石墨堆栈的错误,而是 IO 瓶颈,很可能是因为您的存储没有足够高的 IOPS。因此,队列不断增加,并在 4M 处溢出。那时,您会丢失大量排队数据,这些数据稍后会反映为图表中的随机“间隙”。您的系统无法跟上接收指标的规模。它不断地充满并溢出

奇怪的是,当缓存大小增加时,cpuUsage 从 100%(我们有 4 个 CPU)略微下降到 50%。

这是因为您的系统开始交换并且 CPU 由于 IO 等待而获得大量“空闲时间”。

为了添加上下文,我在 aws 上的系统上配置了 500 个 IOPS,在该系统上我收到了一些 40K 指标。队列稳定在50K。