Содержание
Инструкция по поиску узких мест и ускорению
Проверка производительности сервера
Для постоянного «живого» мониторинга скорости ответа страницы можно использовать следующий скрипт:
- live-resp.sh
while true; do; curl -s -w %{time_total}\\n -o /dev/null http://site.ru/ ; done
Включение кеширования PHP
Обычно PHP идет с ускорителем типа XCache
, eAccelerator
, APC
, или OPcache
. Актуально - OPcache
, он стал частью PHP с версии 5.5, другие похоже, что «загнулись».
Какой именно стоит можно из вывода phpinfo()
или php -v
:
PHP 5.3.3 (cli) (built: Jul 12 2013 20:35:47) Copyright (c) 1997-2010 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies with XCache v3.0.2, Copyright (c) 2005-2013, by mOo with Zend Guard Loader v3.3, Copyright (c) 1998-2010, by Zend Technologies with XCache Optimizer v3.0.2, Copyright (c) 2005-2013, by mOo with XCache Cacher v3.0.2, Copyright (c) 2005-2013, by mOo with XCache Coverager v3.0.2, Copyright (c) 2005-2013, by mOo
OPcache
Настройки - в php.ini
, а также доступны через opcache_get_configuration()
:
- php.ini
[opcache] ; 1 - включен opcache.enable=1 ; размер в Мб opcache.memory_consumption=256 ; максимальное количество файлов в кеше opcache.max_accelerated_files=20000 ; проверять изменения по временной метке, 1 - проверять, 0 - быстро, не проверять, но в случае "ошибок" требуется перезапустить кеш `opcache_reset()` или веб-сервер opcache.validate_timestamps=1 ; как часто (в секундах) делать перепроверку временной метки, 0 - постоянно, 1 - 1 раз в секунду, но не более 1 раза за запрос opcache.revalidate_freq=2 opcache.force_restart_timeout=180 ; в конфиге еще много интересных настроек
Статистика OPcache доступна через phpinfo()
, opcache_get_status()
:
XCache
Надо убедиться что XCache включен и настроен в файле xcache.ini
: xcache.size
должен быть > 0, размер подбирается опытным путем.
Для просмотра состояния кеша следует:
Включить админку:
- xcache.ini
[xcache.admin] xcache.admin.enable_auth = On xcache.admin.auth = On xcache.admin.user = "admin" ; set xcache.admin.pass = md5($your_password) ; login use $your_password xcache.admin.pass = "5f4dcc3b5aa765d61d8327deb882cf99"
Сделать симлинк в дереве веб-документов xcache_html -> /usr/share/xcache
.
Разрешить каталоги:
- httpd.conf
php_admin_value open_basedir "/usr/share/pear:/etc/xcache/:/usr/share/xcache:/var/www/site.ru/:."
APC
Поиск узких мест в PHP
Включение кеша запросов MySQL
Иногда он выключен, быстро это можно проверить так:
mysql -e "SHOW VARIABLES LIKE 'query_cache_%'"
Здесь кеш запросов выключен, хотя память зарезервирована. Состояние кеша запросов:
mysql -e "SHOW GLOBAL STATUS LIKE 'Qcache%'"
Здесь нет ни одного запроса в кеше. Включил таким способом:
query_cache_type = ON query_cache_limit = 2M query_cache_size = 256M
Также не забудьте перезагрузить сервер: service mysqld restart
. Подробнее о кеше запросов
Поиск тормозных запросов
Оперативно это делается с помощью Percona Toolkit