????JFIF??x?x????'
Server IP : 79.136.114.73 / Your IP : 18.218.108.184 Web Server : Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.29 OpenSSL/1.0.1f System : Linux b8009 3.13.0-170-generic #220-Ubuntu SMP Thu May 9 12:40:49 UTC 2019 x86_64 User : www-data ( 33) PHP Version : 5.5.9-1ubuntu4.29 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/lib/nodejs/connect/middleware/ |
Upload File : |
/*! * Connect - profiler * Copyright(c) 2011 TJ Holowaychuk * MIT Licensed */ /** * Profile the duration of a request. * * Typically this middleware should be utilized * _above_ all others, as it proxies the `res.end()` * method, being first allows it to encapsulate all * other middleware. * * Example Output: * * GET / * response time 2ms * memory rss 52.00kb * memory vsize 2.07mb * heap before 3.76mb / 8.15mb * heap after 3.80mb / 8.15mb * * @api public */ module.exports = function profiler(){ return function(req, res, next){ var end = res.end , start = snapshot(); // state snapshot function snapshot() { return { mem: process.memoryUsage() , time: new Date }; } // proxy res.end() res.end = function(data, encoding){ res.end = end; res.end(data, encoding); compare(req, start, snapshot()) }; next(); } }; /** * Compare `start` / `end` snapshots. * * @param {IncomingRequest} req * @param {Object} start * @param {Object} end * @api private */ function compare(req, start, end) { console.log(); row(req.method, req.url); row('response time:', (end.time - start.time) + 'ms'); row('memory rss:', formatBytes(end.mem.rss - start.mem.rss)); row('memory vsize:', formatBytes(end.mem.vsize - start.mem.vsize)); row('heap before:', formatBytes(start.mem.heapUsed) + ' / ' + formatBytes(start.mem.heapTotal)); row('heap after:', formatBytes(end.mem.heapUsed) + ' / ' + formatBytes(end.mem.heapTotal)); console.log(); } /** * Row helper * * @param {String} key * @param {String} val * @api private */ function row(key, val) { console.log(' \033[90m%s\033[0m \033[36m%s\033[0m', key, val); } /** * Format byte-size. * * @param {Number} bytes * @return {String} * @api private */ function formatBytes(bytes) { var kb = 1024 , mb = 1024 * kb , gb = 1024 * mb; if (bytes < kb) return bytes + 'b'; if (bytes < mb) return (bytes / kb).toFixed(2) + 'kb'; if (bytes < gb) return (bytes / mb).toFixed(2) + 'mb'; return (bytes / gb).toFixed(2) + 'gb'; };