Мне нужно найти общее количество запросов, сделанных с момента запуска сервера, и среднее время ответа, классифицированное по методу HTTP.в экспресс JS - PullRequest
0 голосов
/ 22 ноября 2018

Мне нужно найти ● Общее количество запросов, сделанных с момента запуска сервера, и среднее время ответа, классифицированное по методу HTTP.● Активное количество запросов, классифицированных по методу HTTP (например: 3 запроса GET, 4 запроса POST, 5 запросов PUT) ● Количество запросов и среднее время ответа за прошедший час, классифицированных по методу HTTP ● Количество запросов и средний ответраз, в последнюю минуту, классифицированные по методу HTTP

Вот мой код:

    var requests = [];
    var requestTrimThreshold = 5000;
    var requestTrimSize = 4000;

    app.all("/stats", function(req, res, next) {
        requests.push(Date.now());

        // now keep requests array from growing forever
        if (requests.length > requestTrimThreshold) {
            requests = requests.slice(0, requests.length - requestTrimSize);
        }
        next();

        req.start = Date.now();
        next();

        var time = Date.now() - req.start;
        var now = Date.now();
        var aSecAgo = now - 1000;
        var secCnt = 0;
        // since recent requests are at the end of the array, search the array
        // from back to front
        for (var i = requests.length - 1; i >= 0; i--) {
            if (requests[i] >= aSecAgo) {
                ++secCnt;
            } else {
                break;
            }
        }

        var aMinuteAgo = now - (1000 * 60);
        var minCnt = 0;
        // since recent requests are at the end of the array, search the array
        // from back to front
        for (var i = requests.length - 1; i >= 0; i--) {
            if (requests[i] >= aMinuteAgo) {
                ++minCnt;
            } else {
                break;
            }
        }

        var aHourAgo = now - (1000 * 60 *60);
        var hrCnt = 0;
        // since recent requests are at the end of the array, search the array
        // from back to front
        for (var i = requests.length - 1; i >= 0; i--) {
            if (requests[i] >= aHourAgo) {
                ++hrCnt;
            } else {
                break;
            }
        }
        res.json({requestsLastSec: secCnt , requestsLastMinute: minCnt , requestsLastHour: hrCnt , /*avgResTime: express.responseTime()*/});
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...