用于从服务器内存绘制堆数据的算法

时间:2018-03-01 23:49:03

标签: node.js graph statistics smoothing graphing

现在我每隔100秒就收集一次node.js服务器上的内存信息。我想在前端显示内存使用信息作为图形。

const mem = {
  heapTotals: [],
  heapUseds: [],
  maxHeapTotal: 0,
  maxHeapUsed: 0
};

setInterval(function () {

  const m = process.memoryUsage();
  mem.heapTotals.push(m.heapTotal);
  mem.heapUseds.push(m.heapUsed);

  if (m.heapTotal > maxMem.maxHeapTotal) {
    mem.maxHeapTotal = m.heapTotal;
  }
  if (m.heapUsed > maxMem.maxHeapUsed) {
    mem.maxHeapUsed = m.heapUsed;
  }

}, 100000);

我们不是将它存储在数据库中,也不存储在内存中。当然,我们每隔100秒就继续推进该阵列,如果我们的服务器暂停了一段时间,它会随着时间推移而开始增长。

我正在寻找一种有趣的算法,我可以每100秒使用一次,以优化数组,因此它只有2000个条目。

我需要一种方法来浏览现有数组,删除过去的项目,但是将它们与同行进行平均,以便图表有点平滑。

说我有这个:

[3,3,5,5,6,7,9,2,3,5,3,6,4,8,8,4,4,5]  (18 items)

我会通过采取每第3项,并将其平均值和之前的两项来减少它,所以它将是:

[(3+3+5)/3,(5+6+7)/3,(9+2+3)/3,(5+3+6)/3,(4+8+8)/3,(4+4+5)/3] 

这样的事情。然而,这不是一个完整的算法。有没有人知道这样做的正确/最佳方式,以便图表准确但不会超过2000个数组条目等?

0 个答案:

没有答案