router.get('/index/metrics/heap', (req, res) => { const memoryUsage = process.memoryUsage(); res.json(`${prettyBytes(memoryUsage.heapUsed)} / ${prettyBytes(memoryUsage.heapTotal)}`); });
async checkRam (data) { const consumedMemoryMB = Math.round(process.memoryUsage().heapUsed / 1024 / 1024 * 100) / 100 data.response.consumedMemoryMB = consumedMemoryMB if (consumedMemoryMB > maxMemoryAlloted) { data.response.nodeStatus = data.connection.localize('Unhealthy') data.response.problems.push(data.connection.localize(['Using more than {{maxMemoryAlloted}} MB of RAM/HEAP', { maxMemoryAlloted: maxMemoryAlloted }])) } }
async run(message, args, level) { // eslint-disable-line no-unused-vars const duration = moment.duration(this.client.uptime).format(" D [days], H [hrs], m [mins], s [secs]"); message.channel.send(stripIndents` = STATISTICS = • Users :: ${this.client.users.size.toLocaleString()} • Servers :: ${this.client.guilds.size.toLocaleString()} • Channels :: ${this.client.channels.size.toLocaleString()} • Uptime :: ${duration} • RAM usage :: ${(process.memoryUsage().heapUsed / 1024 / 1024).toFixed(2)} MB • Build :: ${NODE_ENV.toProperCase()} • Platform :: ${process.platform === "win32" ? "Windows" : process.platform.toProperCase()} = VERSIONS = • delet :: v${pkg.version} • Discord.js :: v${version} • Node.js :: ${process.version}`, { code: "asciidoc" }); }
constructor() { fs.closeSync(fs.openSync(path, 'w')) if (storage.config.allowDebugger) { storage.on('log', (...data) => { this.logString(...data) const memoryUsage = process.memoryUsage() this.logString('RSS ' + memoryUsage.rss + ' HPT ' + memoryUsage.heapTotal + ' HPU ' + memoryUsage.heapUsed + ' EXT ' + memoryUsage.external) }) storage.on('logAlias', (...data) => { this.logString(...data) const memoryUsage = process.memoryUsage() this.logString('RSS ' + memoryUsage.rss + ' HPT ' + memoryUsage.heapTotal + ' HPU ' + memoryUsage.heapUsed + ' EXT ' + memoryUsage.external) }) } }
.addField("GitHub", "[Click here](https://github.com/DS-Development/delet)", true) .addField("Node.js version", process.version, true) .addField("Memory usage", `${(process.memoryUsage().heapUsed / 1024 / 1024).toFixed(2)} MB`, true) .setFooter(`Made with Discord.js (v${version})`, "https://vgy.me/ZlOMAx.png") .setTimestamp();
setInterval(() => { if (this.minerReqTask) { this.minerReqTask = false this.minerState = (this.minerState + 1) % 4 } const blockchainLoaded = storage.session.netInfoBlockchainLength ? (blockchain.getLength() * 100 / storage.session.netInfoBlockchainLength).toFixed(1) : 0 if (this.headerType === 1) { const memoryUsage = process.memoryUsage() this.boxes.header.setLine(0, '{bold}RSS ' + _.padStart(helper.sizeToStr(memoryUsage.rss), 6) + ' HPT ' + _.padStart(helper.sizeToStr(memoryUsage.heapTotal), 6) + ' HPU ' + _.padStart(helper.sizeToStr(memoryUsage.heapUsed), 6) + ' EXT ' + _.padStart(helper.sizeToStr(memoryUsage.external), 6) + '{/bold}') } else { this.boxes.header.setLine(0, '{bold}HPS ' + _.padStart(storage.session.stat.hps, 4) + (storage.session.stat.txs ? ' TXS ' + _.padStart(storage.session.stat.txs, 4) : ' RPS ' + _.padStart(storage.session.stat.rps >> 1, 6)) + (storage.session.stat.bsz ? ' BSZ ' + _.padStart(helper.sizeToStr(storage.session.stat.bsz), 6) : ' DAQ ' + _.padStart(storage.session.stat.daq, 4)) + ' BLK ' + _.padStart(blockchain.getLength(), 8) + ' {' + storage.session.stat.sncColor + '-fg}' + _.padEnd(blockchainLoaded > 0 && blockchainLoaded < 100 ? '(' + blockchainLoaded + '%)' : 'SNC', 7) + '{/' + storage.session.stat.sncColor + '-fg} ' + _.padStart(storage.session.stat.net, 7) + ' ' + _.padStart(storage.session.stat.netRole, 6) + ' MNR ' + this.minerStates[this.minerState] + _.padStart(storage.session.version, 9) + '{/bold}') storage.session.stat.rps = 0 } this.screen.render() }, 2000)
// Bot statistics. Notice that most of the rendering of data is done through this code, // not in the template, to simplify the page code. Most of it **could** be done on the page. app.get("/stats", (req, res) => { const duration = moment.duration(client.uptime).format(" D [days], H [hrs], m [mins], s [secs]"); const members = client.guilds.reduce((p, c) => p + c.memberCount, 0); const textChannels = client.channels.filter(c => c.type === "text").size; const voiceChannels = client.channels.filter(c => c.type === "voice").size; const guilds = client.guilds.size; renderTemplate(res, req, "stats.ejs", { stats: { servers: guilds, members: members, text: textChannels, voice: voiceChannels, uptime: duration, memoryUsage: (process.memoryUsage().heapUsed / 1024 / 1024).toFixed(2), dVersion: Discord.version, nVersion: process.version } }); });
if (argv.verbose) { console.log(LOG_VERBOSE + 'Allocated ' + Math.round((process.memoryUsage().heapUsed / Math.pow(1024, 2))) + ' MB of memory when iterating through the database.' );