Skip to content

Commit f882036

Browse files
authored
fix(backend): same rss memory for service and aggregated data (#27)
* fix(backend): same rss memory for service and aggregated data Signed-off-by: Roberto Bianchi <roberto.bianchi@spendesk.com> * update Signed-off-by: Roberto Bianchi <roberto.bianchi@spendesk.com> --------- Signed-off-by: Roberto Bianchi <roberto.bianchi@spendesk.com>
1 parent 98933f7 commit f882036

File tree

2 files changed

+14
-10
lines changed

2 files changed

+14
-10
lines changed

web/backend/plugins/metrics.ts

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ export interface MetricsResponse {
3131
dataLatency: LatencyDataPoint[];
3232
}
3333

34-
const bytesToGB = (bytes: number) => Number((bytes / (1024 * 1024 * 1024)).toFixed(2))
34+
const bytesToMB = (bytes: number) => Number((bytes / (1024 * 1024)).toFixed(2))
3535

3636
export default async function (fastify: FastifyInstance) {
3737
const calculateMetrics = async () => {
@@ -68,6 +68,8 @@ export default async function (fastify: FastifyInstance) {
6868
let aggregatedSumP90 = 0
6969
let aggregatedSumP95 = 0
7070
let aggregatedSumP99 = 0
71+
let aggregatedRss = 0
72+
7173
const runtimeMetrics = await api.getRuntimeMetrics(pid, { format: 'json' })
7274
if (!fastify.mappedMetrics[pid]) {
7375
fastify.mappedMetrics[pid] = { services: {}, aggregated: { dataCpu: [], dataLatency: [], dataMem: [] } }
@@ -108,30 +110,28 @@ export default async function (fastify: FastifyInstance) {
108110
for (const metric of runtimeMetrics) {
109111
if (metric.values.length > 0) {
110112
const [{ value, labels }] = metric.values
113+
if (metric.name === 'process_resident_memory_bytes') {
114+
aggregatedRss = bytesToMB(value)
115+
}
111116

112117
if (serviceId === labels.serviceId) {
113-
if (metric.name === 'process_resident_memory_bytes') {
114-
serviceMemData.rss = bytesToGB(value)
115-
aggregatedMemData.rss += serviceMemData.rss
116-
}
117-
118118
if (metric.name === 'nodejs_heap_size_total_bytes') {
119-
serviceMemData.totalHeap = bytesToGB(value)
119+
serviceMemData.totalHeap = bytesToMB(value)
120120
aggregatedMemData.totalHeap += serviceMemData.totalHeap
121121
}
122122

123123
if (metric.name === 'nodejs_heap_size_used_bytes') {
124-
serviceMemData.usedHeap = bytesToGB(value)
124+
serviceMemData.usedHeap = bytesToMB(value)
125125
aggregatedMemData.usedHeap += serviceMemData.usedHeap
126126
}
127127

128128
if (metric.name === 'nodejs_heap_space_size_used_bytes') {
129129
metric.values.forEach(val => {
130130
if (val.labels?.space === 'new') {
131-
serviceMemData.newSpace = bytesToGB(val.value)
131+
serviceMemData.newSpace = bytesToMB(val.value)
132132
aggregatedMemData.newSpace += serviceMemData.newSpace
133133
} else if (val.labels?.space === 'old') {
134-
serviceMemData.oldSpace = bytesToGB(val.value)
134+
serviceMemData.oldSpace = bytesToMB(val.value)
135135
aggregatedMemData.oldSpace += serviceMemData.oldSpace
136136
}
137137
})
@@ -186,6 +186,8 @@ export default async function (fastify: FastifyInstance) {
186186
}
187187
}
188188

189+
serviceMemData.rss = aggregatedRss
190+
aggregatedMemData.rss = aggregatedRss
189191
if (fastify.mappedMetrics[pid].services[serviceId].dataMem.length >= MAX_STORED_METRICS) {
190192
fastify.mappedMetrics[pid].services[serviceId].dataMem.shift()
191193
}

web/backend/test/plugins/metrics.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,4 +53,6 @@ test('metrics with runtime', async (t) => {
5353
assert.ok('dataCpu' in response)
5454
assert.ok('dataLatency' in response)
5555
assert.ok('dataMem' in response)
56+
57+
assert.equal(metrics.dataMem[0].rss, response.dataMem[0].rss)
5658
})

0 commit comments

Comments
 (0)