Мне нужно найти ● Общее количество запросов, сделанных с момента запуска сервера, и среднее время ответа, классифицированное по методу 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()*/});
});