Commit d25d13d7c0ee33907df53799f02e9fbef73ae329

Authored by Sergey Matvienko
Committed by Andrew Shvayka
1 parent a477cad1

remote js-executor: added slow query log, log config on service start

... ... @@ -28,6 +28,9 @@ const config = require('config'),
28 28 const scriptBodyTraceFrequency = Number(config.get('script.script_body_trace_frequency'));
29 29 const useSandbox = config.get('script.use_sandbox') === 'true';
30 30 const maxActiveScripts = Number(config.get('script.max_active_scripts'));
  31 +const slowQueryLogMs = Number(config.get('script.slow_query_log_ms'));
  32 +
  33 +const {performance} = require('perf_hooks');
31 34
32 35 function JsInvokeMessageProcessor(producer) {
33 36 console.log("Producer:", producer);
... ... @@ -39,13 +42,16 @@ function JsInvokeMessageProcessor(producer) {
39 42 }
40 43
41 44 JsInvokeMessageProcessor.prototype.onJsInvokeMessage = function(message) {
42   -
  45 + var tStart = performance.now();
43 46 let requestId;
44 47 let responseTopic;
  48 + let headers;
  49 + let request;
  50 + let buf;
45 51 try {
46   - let request = JSON.parse(Buffer.from(message.data).toString('utf8'));
47   - let headers = message.headers;
48   - let buf = Buffer.from(headers.data['requestId']);
  52 + request = JSON.parse(Buffer.from(message.data).toString('utf8'));
  53 + headers = message.headers;
  54 + buf = Buffer.from(headers.data['requestId']);
49 55 requestId = Utils.UUIDFromBuffer(buf);
50 56 buf = Buffer.from(headers.data['responseTopic']);
51 57 responseTopic = buf.toString('utf8');
... ... @@ -66,6 +72,25 @@ JsInvokeMessageProcessor.prototype.onJsInvokeMessage = function(message) {
66 72 logger.error('[%s] Failed to process request: %s', requestId, err.message);
67 73 logger.error(err.stack);
68 74 }
  75 +
  76 + var tFinish = performance.now();
  77 + var tTook = tFinish - tStart;
  78 +
  79 + if ( tTook > slowQueryLogMs ) {
  80 + let functionName;
  81 + if (request.invokeRequest) {
  82 + try {
  83 + buf = Buffer.from(request.invokeRequest['functionName']);
  84 + functionName = buf.toString('utf8');
  85 + } catch (err){
  86 + logger.error('[%s] Failed to read functionName from message header: %s', requestId, err.message);
  87 + logger.error(err.stack);
  88 + }
  89 + }
  90 + logger.warn('[%s] SLOW PROCESSING [%s]ms, functionName [%s], request: ', requestId, tTook, functionName);
  91 + logger.warn('request: %s', JSON.stringify(request, null, 4))
  92 + }
  93 +
69 94 }
70 95
71 96 JsInvokeMessageProcessor.prototype.processCompileRequest = function(requestId, responseTopic, headers, compileRequest) {
... ...
... ... @@ -68,3 +68,4 @@ script:
68 68 use_sandbox: "SCRIPT_USE_SANDBOX"
69 69 script_body_trace_frequency: "SCRIPT_BODY_TRACE_FREQUENCY"
70 70 max_active_scripts: "MAX_ACTIVE_SCRIPTS"
  71 + slow_query_log_ms: "SLOW_QUERY_LOG_MS"
... ...
... ... @@ -55,5 +55,6 @@ logger:
55 55
56 56 script:
57 57 use_sandbox: "true"
58   - script_body_trace_frequency: "1000"
  58 + script_body_trace_frequency: "1000000"
59 59 max_active_scripts: "1000"
  60 + slow_query_log_ms: "0.5000" #millis
... ...
... ... @@ -15,6 +15,10 @@
15 15 */
16 16 const config = require('config'), logger = require('./config/logger')._logger('main');
17 17
  18 +logger.info('===CONFIG BEGIN===');
  19 +logger.info(JSON.stringify(config, null, 4));
  20 +logger.info('===CONFIG END===');
  21 +
18 22 const serviceType = config.get('queue_type');
19 23 switch (serviceType) {
20 24 case 'kafka':
... ...