Назад | Перейти на главную страницу

Анализ времени запроса на поиск медленных страниц

Я ищу медленные страницы на большом настраиваемом веб-сайте PHP CMS.

Я не хочу копаться в существующем, плохо документированном коде и обнаружил, что журналы доступа apache могут отображать время, затраченное на обслуживание запроса, в секундах и миллисекундах.

Конф:

CustomLog /var/log/httpd/timed_access_log timed
LogFormat "%h %l %u %t \"%r\" %>s %b - %T/%D" timed

Вывод:

86.132.***.*** - - [22/Jun/2010:13:25:31 +0100] "GET /menu/topscript/ HTTP/1.1" 200 183 - 0/12418
86.132.***.*** - - [22/Jun/2010:13:25:31 +0100] "GET /search/script/ HTTP/1.1" 200 266 - 0/13173
86.132.***.*** - - [22/Jun/2010:13:25:31 +0100] "GET /subscribe/script/ HTTP/1.1" 200 279 - 0/12882

Есть ли простой способ найти максимальное среднее количество медленных запросов?

Интересуюсь программами анализа, такими как awstats или awk-скриптами (которые мне никогда не удавалось осмыслить).

Связанный: AWStats и время, затраченное на обслуживание запроса

Мое окончательное решение, основанное на ответе радиуса:

awk '{cnt[$7]+=substr($12,1+match($12,"/")); i[$7]+=1}END{for (x in cnt){if (i[x] > 5) print x,i[x],cnt[x]/i[x]}}' timed_access_log | sort -k3nr | head -20

Учитываются только те, у которых есть не менее 5 запросов, сортируются по убыванию среднего времени и возвращаются 20 лучших.

Вы можете попробовать это, я надеюсь, что это сработает, если вы дадите нам образец файла журнала, я могу проверить, работает ли он

awk '{cnt[$7]+=substr($12,1+match($12,"/")); i[$7]+=1}END{for (x in cnt){print x,cnt[x]/i[x]}}' access_log