Когда сайт начинает тормозит, то причин тому может быть множество. Если же откинуть варианты не хватки ресурсов, не оптимально настроенный сервер, то круг причин сужается до выявления медленных запросов к БД и не оптимального кода сайта. Как выявить и исправить медленные запросы в БД mysql читайте в нашей предыдущей статье.nnКак же тогда определить какой из скриптов сайта работает не корректно и требует оптимизации для быстрого выполнения. Есть готовые решения например pinba, она покажет в графическом виде нужную нам информацию. Минусом данного решения является необходимость иметь сервер для сбора данных, а также установку клиентской части, что потребует перезагрузки веб сервера. В результате, что бы определить не оптимальный код нам нужно найти скрипты, которые выполняются очень долго на сервере.nnДля этих целей проще всего использовать скрипт, который должен отслеживать количество процессорного времени, которое использовал конкретный скрипт.nnСкрипты по отслеживанию могут быть различными, зависит от конкретных условий системы.nnТак например скрипт с использованием getrusage — функция которая содержит информацию об использовании текущего ресурса.nn
n
// Script startn$rustart = getrusage();nn// Code ...nn// Script endnfunction rutime($ru, $rus, $index) {n return ($ru["ru_$index.tv_sec"]*1000 + intval($ru["ru_$index.tv_usec"]/1000))n - ($rus["ru_$index.tv_sec"]*1000 + intval($rus["ru_$index.tv_usec"]/1000));n}nn$ru = getrusage();necho "This process used " . rutime($ru, $rustart, "utime") .n " ms for its computations\n";necho "It spent " . rutime($ru, $rustart, "stime") .n " ms in system calls\n";
n
<!-- put this at the top of the page --> n<?php n $mtime = microtime(); n $mtime = explode(" ",$mtime); n $mtime = $mtime[1] + $mtime[0]; n $starttime = $mtime; n;?> nn<!-- put other code and html in here -->nnn<!-- put this code at the bottom of the page -->n<?php n $mtime = microtime(); n $mtime = explode(" ",$mtime); n $mtime = $mtime[1] + $mtime[0]; n $endtime = $mtime; n $totaltime = ($endtime - $starttime); n echo "This page was created in ".$totaltime." seconds"; n;?>
Нужна помощь в решении проблем с производительностью работы сервера, обращайтесь [email protected]