Apache: подробная статистика

bigton
На сайте с 17.08.2009
Offline
43
1114

Всем привет.

Есть высоконагруженный проект. Есть желание определить "узкие" места. Решение должно быть на уровне Apache. Я это вижу так:

1. Пользователь обращается к странице, допустим http://site.ru/script.php?action=up

2. Apache создает процесс, где то в памяти фиксируется адрес скрипта (/script.php?action=up) и время в миллисекундах.

3. Apache выполняет сценарий, отдает все пользователю и перед завершение процесса записывает в какой ни будь лог-файл строку вида: 'время запуска скрипта' 'ulr скрипта' 'время выполнения'

Не знаю насколько это возможно, я считаю что узкое место не в работе скриптов, а в отдаче результатов пользователям. Потому так же хотел бы узнать можно ли отдельно зафиксировать время потраченное на выполнение скрипта и время на отдачу пользователю контента? Чтобы лог имел вид:

'время запуска скрипта' 'ulr скрипта' 'время на выполнения скрипта' 'время на отдачу контента'

Прошу сказать возможно ли в принципе решить мою задачу и может быть помочь в решение.

Всем спасибо!

N
На сайте с 06.05.2007
Offline
419
#1

bigton, в точности это делает mod_log_slow.

Оценить время потраченное на отдачу можно только косвенно. И если apache работает в паре nginx это обычно вообще не нужно, так как nginx сводит эти затраты почти к нулю.

Кнопка вызова админа ()
bigton
На сайте с 17.08.2009
Offline
43
#2

netwind, спасибо, нашел (http://code.google.com/p/modlogslow/)! Это то что нужно!

Раз вы разбираетесь, воспользуюсь ситуацией и задам вопрос: я ни чем не рискую, если сейчас поставлю на 80 порт nginx, а на 81 apache?

Просто как то было что фриланс исходники выдавал когда их сервер не справлялся с нагрузкой)

N
На сайте с 06.05.2007
Offline
419
#3

bigton, ничем. для доступа к исходникам нужно чтобы обработчик php не сработал. Обычно это следствие неправильной настройки, а не нагрузки. То есть правильная настройка такая, что запрос к файлу никак не выдает ответа и заканчивается обрывом или вызывается обработчик php.

обычно Apache вешают на специальный локальный ip-адрес 127.0.0.1 и nginx обращается к нему. При этом никто из интернета не может соединиться с apache напрямую. Можно и файрволом закрыть apache, если по каким-то причинам нельзя повесить на 127.0.0.1.

bigton
На сайте с 17.08.2009
Offline
43
#4

Спасибо, буду пробовать!

bigton добавил 07.02.2011 в 14:40

netwind, снова хочу обратиться к вашу совету. Возникли проблемы при установке modlogslow: не знаю где искать файл special.mk?

PS OS Debian

WS
На сайте с 17.11.2010
Offline
25
#5
bigton:
Не знаю насколько это возможно, я считаю что узкое место не в работе скриптов, а в отдаче результатов пользователям

Я бы посоветовал использовать внешний скрипт (на другом хостинге) который в часы пик соединялся с вашим сервером каждые сколько-то минут и считал когда сервер вернет заполненную страницу.

Что-то вроде

$time = getTime();

file_get_contents("страница вашего сайта");

$time1 = getTime() - $time;

N
На сайте с 06.05.2007
Offline
419
#6

bigton, да там у них как-то не очень все удобно - собери вручную

apxs2 -c mod_log_slow.c

получится файл .libs/mod_log_slow.so. Останется его скопировать и прописать в конфиг апача.

bigton
На сайте с 17.08.2009
Offline
43
#7

netwind, все заработало, логи собирает, спасибо!

Возможно как то настроить логи чтобы они больше информации показывали, например содержимое сессии пользователя?

N
На сайте с 06.05.2007
Offline
419
#8

bigton, там есть документация.

сессии обычно существуют внутри php, а на уровне apache можно разве что cookies запроса записать.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий