fix(metrics): fix metrics
This commit is contained in:
@ -65,24 +65,18 @@ export class ThroughputTracker {
|
||||
return { in: 0, out: 0 };
|
||||
}
|
||||
|
||||
// Sum bytes in the window
|
||||
// Calculate total bytes in window
|
||||
const totalBytesIn = relevantSamples.reduce((sum, s) => sum + s.bytesIn, 0);
|
||||
const totalBytesOut = relevantSamples.reduce((sum, s) => sum + s.bytesOut, 0);
|
||||
|
||||
// Calculate actual window duration (might be less than requested if not enough data)
|
||||
const actualWindowSeconds = Math.min(
|
||||
windowSeconds,
|
||||
(now - relevantSamples[0].timestamp) / 1000
|
||||
);
|
||||
|
||||
// Avoid division by zero
|
||||
if (actualWindowSeconds === 0) {
|
||||
return { in: 0, out: 0 };
|
||||
}
|
||||
// Use actual number of seconds covered by samples for accurate rate
|
||||
const oldestSampleTime = relevantSamples[0].timestamp;
|
||||
const newestSampleTime = relevantSamples[relevantSamples.length - 1].timestamp;
|
||||
const actualSeconds = Math.max(1, (newestSampleTime - oldestSampleTime) / 1000 + 1);
|
||||
|
||||
return {
|
||||
in: Math.round(totalBytesIn / actualWindowSeconds),
|
||||
out: Math.round(totalBytesOut / actualWindowSeconds)
|
||||
in: Math.round(totalBytesIn / actualSeconds),
|
||||
out: Math.round(totalBytesOut / actualSeconds)
|
||||
};
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user