Профилирование и оптимизация сайтов PHP / MySQL - PullRequest
1 голос
/ 09 декабря 2011

У меня есть сервер (VPS), на котором размещены многочисленные сайты PHP / MySQL.Большинство из них очень похожи в том, что все они представляют собой веб-сайты с ручным кодированием, на которых размещаются текст и изображения из баз данных MySQL.

В последнее время серверный трафик увеличился на значительную сумму, и сервер испытывает некоторое замедление.Поэтому я хочу попытаться определить узкие места на сервере, чтобы повысить скорость работы сервера.

У кого-нибудь есть советы, как это сделать?У меня есть сценарии настройки времени на некоторых из моих крупных сайтов, чтобы увидеть, сколько времени требуется для создания веб-страниц, но это всегда очень низкая цифра.Согласно статистике сервера, основной проблемой является использование CPU / MySQL.Есть ли способ идентифицировать запросы, которые занимают много времени?

Спасибо, Крис

Ответы [ 4 ]

7 голосов
/ 09 декабря 2011

Если вы используете mysql> = 5.1, вы можете использовать mysql_query("set profiling=1"); в своем скрипте, например:

mysql_query("set profiling_history_size=100");
mysql_query("set profiling=1");

....
....
any mysql query
....
....

$rs = mysql_query("show profiles");
while($rd = mysql_fetch_object($rs))
{
    echo $rd->Query_ID.' - '.round($rd->Duration,4) * 1000 .' ms - '.$rd->Query.'<br />';
}

Пример вывода:

enter image description here

4 голосов
/ 09 декабря 2011

Начните с вкладки Net у firebug и посмотрите, какие ресурсы имеют самый медленный ответ.

Но я могу сказать вам даже без какого-либо профилирования, что

обслуживание ... изображений из баз данных MySQL

являясь хотя бы одной из причин.

2 голосов
/ 09 декабря 2011

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

Конечно, другим общим советом будет использование EXPLAIN для общих запросов и проверка правильности индексирования.

1 голос
/ 09 декабря 2011

XDebug имеет инструмент профилирования, который дает вам много информации о узких местах в вашем коде.Проверить http://xdebug.org/docs/profiler.

...