From 49ebba4d6ca901d4239b8a91464ccc153eba5b5a Mon Sep 17 00:00:00 2001 From: John McLear Date: Tue, 26 Jan 2021 16:41:08 +0000 Subject: [PATCH] some duration storage in stats --- src/node/hooks/express.js | 7 +++++++ src/node/server.js | 23 +++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/src/node/hooks/express.js b/src/node/hooks/express.js index b3d4f34e4..ff3ede75b 100644 --- a/src/node/hooks/express.js +++ b/src/node/hooks/express.js @@ -182,8 +182,15 @@ exports.restartServer = async () => { app.use(cookieParser(settings.sessionKey, {})); + stats.gauge('expressConfigureDuration', () => expressConfigureDuration); + const preExpressConfigure = Date.now(); hooks.callAll('expressConfigure', {app}); + const expressConfigureDuration = Date.now() - preExpressConfigure; + + stats.gauge('expressCreateServerDuration', () => expressCreateServerDuration); + const preExpressCreateServer = Date.now(); hooks.callAll('expressCreateServer', {app, server: exports.server}); + const expressCreateServerDuration = Date.now() - preExpressCreateServer; await util.promisify(exports.server.listen).bind(exports.server)(settings.port, settings.ip); }; diff --git a/src/node/server.js b/src/node/server.js index 3e3b25d21..1084ad6ef 100755 --- a/src/node/server.js +++ b/src/node/server.js @@ -60,16 +60,39 @@ exports.start = async () => { stats.gauge('memoryUsage', () => process.memoryUsage().rss); stats.gauge('memoryUsageHeap', () => process.memoryUsage().heapUsed); + // Performance stats gauges + // We use gauges because a reload might replace the value + stats.gauge('postNpmLoad', () => preNpmLoad); + stats.gauge('postNpmLoad', () => postNpmLoad); + + const preNpmLoad = Date.now() - stats.startTime; await util.promisify(npm.load)(); + const postNpmLoad = Date.now() - stats.startTime; try { + stats.gauge('dbInitDuration', () => dbInitDuration); + const preDbInit = Date.now(); await db.init(); + const dbInitDuration = Date.now() - preDbInit; + + stats.gauge('loadPluginsDuration', () => loadPluginsDuration); + const prePluginsUpdate = Date.now(); await plugins.update(); + const loadPluginsDuration = Date.now() - prePluginsUpdate; + console.info(`Installed plugins: ${plugins.formatPluginsWithVersion()}`); console.debug(`Installed parts:\n${plugins.formatParts()}`); console.debug(`Installed hooks:\n${plugins.formatHooks()}`); + + stats.gauge('loadSettingDuration', () => loadSettingsDuration); + const preLoadSettings = Date.now(); await hooks.aCallAll('loadSettings', {settings}); + const loadSettingsDuration = Date.now() - preLoadSettings; + + stats.gauge('createSettingsDuration', () => createSettingsDuration); + const preCreateServer = Date.now(); await hooks.aCallAll('createServer'); + const createSettingsDuration = Date.now() - preCreateServer; } catch (e) { console.error(`exception thrown: ${e.message}`); if (e.stack) console.log(e.stack);