profile worker commands by total running time in seconds

pull/1/head
ansuz 4 years ago
parent 93c807524f
commit 93d56e5e3d

@ -56,6 +56,11 @@ var getCacheStats = function (env, server, cb) {
}); });
}; };
// CryptPad_AsyncStore.rpc.send('ADMIN', ['GET_WORKER_PROFILES'], console.log)
var getWorkerProfiles = function (Env, Server, cb) {
cb(void 0, Env.commandTimers);
};
var getActiveSessions = function (Env, Server, cb) { var getActiveSessions = function (Env, Server, cb) {
var stats = Server.getSessionStats(); var stats = Server.getSessionStats();
cb(void 0, [ cb(void 0, [
@ -315,6 +320,7 @@ var commands = {
INSTANCE_STATUS: instanceStatus, INSTANCE_STATUS: instanceStatus,
GET_LIMITS: getLimits, GET_LIMITS: getLimits,
SET_LAST_EVICTION: setLastEviction, SET_LAST_EVICTION: setLastEviction,
GET_WORKER_PROFILES: getWorkerProfiles,
}; };
Admin.command = function (Env, safeKey, data, _cb, Server) { Admin.command = function (Env, safeKey, data, _cb, Server) {

@ -94,6 +94,7 @@ module.exports.create = function (config) {
disableIntegratedEviction: config.disableIntegratedEviction || false, disableIntegratedEviction: config.disableIntegratedEviction || false,
lastEviction: +new Date(), lastEviction: +new Date(),
evictionReport: {}, evictionReport: {},
commandTimers: {},
}; };
(function () { (function () {

@ -14,6 +14,14 @@ const DEFAULT_QUERY_TIMEOUT = 60000 * 15; // increased from three to fifteen min
Workers.initialize = function (Env, config, _cb) { Workers.initialize = function (Env, config, _cb) {
var cb = Util.once(Util.mkAsync(_cb)); var cb = Util.once(Util.mkAsync(_cb));
var incrementTime = function (command, start) {
if (!command) { return; }
var end = +new Date();
var T = Env.commandTimers;
var diff = (end - start);
T[command] = (T[command] || 0) + (diff / 1000);
};
const workers = []; const workers = [];
const response = Util.response(function (errLabel, info) { const response = Util.response(function (errLabel, info) {
@ -112,7 +120,9 @@ Workers.initialize = function (Env, config, _cb) {
} }
const txid = guid(); const txid = guid();
var start = +new Date();
var cb = Util.once(Util.mkAsync(Util.both(_cb, function (err /*, value */) { var cb = Util.once(Util.mkAsync(Util.both(_cb, function (err /*, value */) {
incrementTime(msg && msg.command, start);
if (err !== 'TIMEOUT') { return; } if (err !== 'TIMEOUT') { return; }
Log.debug("WORKER_TIMEOUT_CAUSE", msg); Log.debug("WORKER_TIMEOUT_CAUSE", msg);
// in the event of a timeout the user will receive an error // in the event of a timeout the user will receive an error

Loading…
Cancel
Save