现在我每隔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个数组条目等?