Учет процессорного времениИменно процессорное время - тот ресурс, который может закончиться на сервере. Необходим его учет. При этом, как видно из примеров, не важно, сколько именно работал ваш скрипт - важно, какую именно работу он при этом делал, т. е. процессорное время, необходимое для работы скрипта. Нормальным количеством времени на одну страницу является 10 - 100 мс (т. е. в 10 - 100 раз меньше, чем одна секунда) . Поскольку сервер одновременно обрабатывает десятки запросов, время генерации страницы составляет обычно в пределах одной секунды. Это нормально. Как производится учетВеб-сервер ведет лог-файл процессорного времени, которое было затрачено на каждый запрос. Его сообщает операционная система. Затем данные суммируется для каждого сайта в пределах одного часа. Если суммарное процессорное время для вашего сайта составило 1 минуту в 1 час, это обозначает, что в этот час вы потратили 1/60 = 1.7% ресурсов одного процессора сервера. Работаем с php. Информация о процессоре в php можно получить используя метод getrusage(). (В Windows эта функция не работает) print_r(getrusage());
/* prints
Array
(
[ru_oublock] => 0
[ru_inblock] => 0
[ru_msgsnd] => 2
[ru_msgrcv] => 3
[ru_maxrss] => 13732
[ru_ixrss] => 456
[ru_idrss] => 3894
[ru_minflt] => 64
[ru_majflt] => 0
[ru_nsignals] => 1
[ru_nvcsw] => 54
[ru_nivcsw] => 4
[ru_nswap] => 0
[ru_utime.tv_usec] => 0
[ru_utime.tv_sec] => 0
[ru_stime.tv_usec] => 3549
[ru_stime.tv_sec] => 0
)
*/Расшифровкаru_oublock: количество операций блочной записиru_inblock: количество операций блочного чтенияru_msgsnd: количество отправленных сообщенийru_msgrcv: количество принятых сообщенийru_maxrss: максимальный размер невыгружаемого набораru_ixrss: общий объем разделяемой памятиru_idrss: общий объем неразделяемых данныхru_minflt: количество используемых страниц памятиru_majflt: количество ошибок отсутствия страницru_nsignals: количество принятых сигналовru_nvcsw: количество переключений контекста процессомru_nivcsw: количество принудительных переключений контекстаru_nswap: количество обращений к диску при подкачке страницru_utime.tv_usec: время работы в пользовательском режиме (микросекунды) ru_utime.tv_sec: время работы в пользовательском режиме (секунды) ru_stime.tv_usec: время работы в привилегированном режиме (микросекунды) ru_stime.tv_sec: время работы в привилегированном режиме (секунды) Для того чтобы узнать какие ресурсы вашего процессора используются скриптом, вам необходимо значение ‘user time’ (время работы в пользовательском режиме) и ’system time’ (время работы в привилегированном режиме) . Получим результат в секундах добавив следйющий код в конце скрипта: $data = getrusage();
echo "User time: ".
($data['ru_utime.tv_sec'] +
$data['ru_utime.tv_usec'] / 1000000);
echo "System time: ".
($data['ru_stime.tv_sec'] +
$data['ru_stime.tv_usec'] / 1000000);
/* выводит
User time: 0.015631
System time: 0
*/
Процессорное время - 2 секунды. На сервере выполняется одновременно 10 таких скриптов. …Затем данные суммируется для каждого сайта в пределах одного часа.
P.S. Лучше всего пояснить этот термин примерами. На вашей домашней машине вы архивировали большой файл. Это заняло 40 секунд. Общее время - 40 секунд, процессорное время - 40 секунд. Аналогично, но два файла одновременно. Общее время завершения процессов - 80 секунд, процессорное время каждого - 40 секунд. На пустом сервере выполняется скрипт, время генерации страницы - 2 секунды. Процессорное время - 2 секунды. На сервере выполняется одновременно 10 таких скриптов. Время генерации страницы будет 20 секунд, однако, процессорное время по прежнему 2 секунды. На соседнем сервере произошла перегрузка mySQL сервера, в результате чего ваш скрипт работал не 2 секунды, а 45 секунд. Время генерации страницы - 45 секунд, процессорное время по прежнему 2 секунды.
Простите, ЧТО Вы хотите узнать? Для чего Вам этот показатель? В чем он измеряется? Где вы ЭТО услышали?
А еще можно посмотреть Load Overage.
например пользовательское время будет 0.8 секунды а системное 0.1 секунды. и LO(1,5,15) = 0.1 0.2 0.6
Т. е. мы видим что процессор не забит особо. Скорее всего задержки на уровне коннектов с БД или еще какие-то сетевые задержки. Но если LO/КОЛЛИЧЕСТВО ПРОЦЕССОРОВ будет близко или больше к 1. Это значит сервак висит. И вы увидите увеличение пользовательского времени...