IIS Log Parser - нужен запрос, чтобы найти "общее количество запросов, занимающих> x секунд" / "общее количество запросов", сгруппированные по URL
Я поддерживаю приложение, в котором иногда возникают проблемы с производительностью. Клиент хочет знать, как часто страница работает медленно.
т.е. Общее количество раз, когда страница заняла больше, чем х секунд / Общее количество запросов на страницу
Я хотел бы написать один запрос для получения желаемых данных.
Нечто подобное в SQL, вероятно, будет работать, но не работает в парсере IIS Log.
select URL, count(case when time > 100 then 1 else null end), count(*)
from table1
group by URL
1 ответ
Проблема здесь в том, что вам нужно два запроса.
Один для подсчета общего количества запросов на страницу независимо от времени
SELECT cs-uri-stem, COUNT(*) AS all-requests FROM ex*.log GROUP BY cs-uri-stem
Один для подсчета количества страниц, на которые уходит время> X секунд
SELECT cs-uri-stem, COUNT(*) as total-requests FROM ex*.log WHERE time-taken > 1000 <- time_taken is milliseconds GROUP BY cs-uri-stem
Результат, который вам нужен, потребует JOIN:
SELECT a.cs-uri-stem, COUNT(*) as total-requests, b.all-requests
FROM ex*.log AS a
JOIN (
SELECT cs-uri-stem, COUNT(*) AS all-requests
FROM ex*.log
GROUP BY cs-uri-stem
) AS b ON b.cs-uri-stem = a.cs-uri-stem
WHERE a.time-taken >1000
GROUP BY a.cs-uri-stem
К сожалению, нет поддержки JOIN в LogParser.
Что вы можете сделать, это импортировать результаты обоих запросов в базу данных SQL и выполнить запрос там:
SELECT a.cs-uri-stem, COUNT(*) as total-requests, b.all-requests
FROM long_running_pages AS a
JOIN all_pages_grouped b ON ( a.cs-uri-stem = b.cs-uri-stem)
GROUP BY a.cs-uri-stem