const collect = () => { const memUsage = safeMemoryUsage(); if (memUsage) { heapSizeTotal.set(memUsage.heapTotal); heapSizeUsed.set(memUsage.heapUsed); if (memUsage.external !== undefined) { externalMemUsed.set(memUsage.external); } } }
app.use(function(req, res, next) { req.startTime = Date.now(); req.startMem = process.memoryUsage().heapUsed; next(); });
function logMemoryUsage() { var mbUsed = process.memoryUsage().heapUsed / 1024 / 1024; mbUsed = Math.round(mbUsed * 100) / 100; var mbTotal = process.memoryUsage().heapTotal / 1024 / 1024; mbTotal = Math.round(mbTotal * 100) / 100; //debugLog("memoryUsage: heapUsed=" + mbUsed + ", heapTotal=" + mbTotal + ", ratio=" + parseInt(mbUsed / mbTotal * 100)); }
/** * Get used bytes for closures , objects & strings * * @return {string} */ const getHeapUsed = () => { return prettifyBytes(memoryUsage.heapUsed); }
function printStats() { const executionTime = (Date.now()-startTime)/1000; console.log('################MEMORY#####################'); console.log(`# Average memory: ${stats.MEM_AVG/1048576} MB`); console.log(`# MAX memory: ${stats.MEM_MAX/1048576} MB`); console.log(`# MIN memory: ${stats.MEM_MIN/1048576} MB`); console.log(`# END memory: ${process.memoryUsage().heapUsed/1048576} MB`); console.log('################MEMORY#####################'); console.log(`Execution time: ${executionTime} sec.`); console.log(`Average: ${executionTime/TICK_COUNT} sec.`); console.log(`Rate: ${TICK_COUNT/executionTime}/sec.`); }
GameServer.BuildingModel.find(function (err, buildings) { if (err) return console.log(err); buildings.forEach(GameServer.addBuilding); if(GameServer.needToSpawnCamps) GameServer.spawnCamps(); // GameServer.updateRegions(); // Not called because downstream of the init sequence, setupSpawnZones calles it GameServer.computeFrontier(false); var hrend = process.hrtime(hrstart); console.log('loadBuildings execution time: %ds %dms', hrend[0], hrend[1] / 1000000); console.log(process.memoryUsage().heapUsed/1024/1024,'Mb memory used'); GameServer.updateStatus(); });
var Heap = function() { this.getStatus = function(request,callback) { let heap = { used: round( (process.memoryUsage().heapUsed / 1024) / 1024 ), total: round( (process.memoryUsage().heapTotal / 1024) / 1024 ) }; callback(undefined,heap); }; }
setInterval(function() { const memoryUsage = process.memoryUsage(); const ram = memoryUsage.rss + memoryUsage.heapUsed; const million = 1000000; logger.info( "Ram Usage: " + ram / million + "mb | rss: " + memoryUsage.rss / million + "mb | heapTotal: " + memoryUsage.heapTotal / million + "mb | heapUsed: " + memoryUsage.heapUsed / million ); }, 5000);
GameServer.CampModel.find(function (err, camps) { if (err) return console.log(err); if(camps.length == 0){ GameServer.readCamps(); }else{ camps.forEach(GameServer.addCamp); } var hrend = process.hrtime(hrstart); console.log('setUpCamps execution time: %ds %dms', hrend[0], hrend[1] / 1000000); console.log(process.memoryUsage().heapUsed/1024/1024,'Mb memory used'); GameServer.updateStatus(); });
function memoryStats(){ console.log("--- PROCESS INFO"); console.log(`Resident Set Size: ${ process.memoryUsage().rss }`); console.log(`Total Heap Size: ${ process.memoryUsage().heapTotal }`); console.log(`Used Heap: ${ process.memoryUsage().heapUsed }`); console.log(`External: ${ process.memoryUsage().external }`); }
app.use(function(req, res, next) { var time = Date.now() - req.startTime; var memdiff = process.memoryUsage().heapUsed - req.startMem; debugPerfLog("Finished action '%s' in %d ms", req.path, time); });
function reportMemory() { global.gc(); var increase = process.memoryUsage().heapUsed - startMem; console.log("memory increase: " + (+(increase / 1024).toPrecision(3)) + "kB"); }
GameServer.RemainModel.find(function (err, remains) { if (err) return console.log(err); GameServer.battleRemains = remains; GameServer.battleRemains.forEach(function(r){ new Remains(r.x,r.y,r.type); }); // console.warn('tick:',tick,'/',nbTicks); if(++tick == nbTicks) { var hrend = process.hrtime(hrstart); console.log('loadMarkers execution time: %ds %dms', hrend[0], hrend[1] / 1000000); console.log(process.memoryUsage().heapUsed/1024/1024,'Mb memory used'); GameServer.updateStatus(); } });
twig.extendFunction('memory_usage', function() { return Math.round((process.memoryUsage().heapUsed / 1024 / 1024) * 100) / 100; });