MySQL содержит встроенный механизм кэширования запросов, который, однако не включен по умолчанию. Вот такие параметры выставленны по умолчанию в MySQL 5.0:
mysql> show variables like ‘query_cache%’;
mysql> show variables like 'query_cache%';
+------------------------------+---------+
| Variable_name | Value |
+------------------------------+---------+
| query_cache_limit | 1048576 |
| query_cache_min_res_unit | 4096 |
| query_cache_size | 0 |
| query_cache_type | ON |
| query_cache_wlock_invalidate | OFF |
+------------------------------+---------+
Чтобы включить кэш запросов и выделить под него 32 мегабайта памяти можно выполнить запрос set @@global.query_cache_size=32*1024*1024; с правами суперпользователя, а чтобы сделать эту настройку постоянной, следует добавить в my.cnf в подраздел [mysqld] строчку query_cache_size=32M. Второй полезный параметр – query_cache_limit задает максимальный объем результата выполнения запроса, который может быть помещен в кэш
Текущее состояние кэша
Посмотреть состояние кэша можно с помощью запроса:
mysql> SHOW GLOBAL STATUS LIKE ‘Qcache%’;
+-------------------------+----------+
| Variable_name | Value |
+-------------------------+----------+
| Qcache_free_blocks | 973 |
| Qcache_free_memory | 14282000 |
| Qcache_hits | 3293750 |
| Qcache_inserts | 252819 |
| Qcache_lowmem_prunes | 0 |
| Qcache_not_cached | 66645 |
| Qcache_queries_in_cache | 1342 |
| Qcache_total_blocks | 3709 |
+-------------------------+----------+
8 rows in set (0.00 sec)
Здесь:
Qcache_free_memory – объем свободной памяти, отведенной под кэш.
Qcache_hits – количество запросов, отработанных из кэша.
Qcache_inserts – количество вставок запросов в кэш.
Qcache_lowmem_prunes – количество высвобождений памяти из-за наполненности кэша.
Qcache_not_cached – количество запросов, не подлежащих кэшированию.
Qcache_queries_in_cache – количество запросов, находящихся в кэше в настоящее время.
Мерой эффективности кэша может служить отношение Qcache_hits / (Qcache_inserts + Qcache_not_cached).
25 069 / (11 196 + 916) = 2.06976552 (каждый второй запрос выполняется из базы)
3 293 750 / (252 819 + 66 645) = 10.3102384 (каждый 10 запрос выполняется из базы)
В .htaccess написать:
php_value display_errors 1
php_value error_reporting 2047
Работает, если PHP подключен как модуль апача.
Акселератор требует autoconf, automake, libtool, m4. Также весьма желателен пакет php-devel, а именно утилита phpize, дабы не пересобирать пхп руками.
Исходная ОС – CentOS 5.3(Final)
Качаем сам акселератор (актуальную ссылку можно взять на http://www.eaccelerator.net/):
wget http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.tar.bz2
untar eaccelerator-0.9.5.3.zip
cd eaccelerator-0.9.5.3
Доставляем необходимые пакеты
yum install autoconf automake libtool php-devel make gcc
Далее:
phpize
./configure –enable-eaccelerator=shared –with-php-config=/usr/bin/php-config
make
make install
vi /etc/php.ini
extension=”eaccelerator.so”
eaccelerator.shm_size = “64”
eaccelerator.cache_dir = “/var/cache/eaccelerator”
eaccelerator.enable = “1”
eaccelerator.optimizer = “1”
eaccelerator.debug = 0
eaccelerator.log_file = “/var/log/httpd/eaccelerator_log”
eaccelerator.name_space = “”
eaccelerator.check_mtime = “1”
eaccelerator.filter = “”
eaccelerator.shm_max = “0”
eaccelerator.shm_ttl = “3600”
eaccelerator.shm_prune_period = “0”
eaccelerator.shm_only = “0”
eaccelerator.compress = “1”
eaccelerator.compress_level = “5”
eaccelerator.keys = “shm_and_disk”
eaccelerator.sessions = “shm_and_disk”
eaccelerator.content = “shm_and_disk”
eaccelerator.allowed_admin_path = “”
Создаются папки для временных файлов:
mkdir /var/cache/eaccelerator
chmod 777 /var/cache/eaccelerator
Все. Осталось перезагрузить apache.
service httpd restart
ps
с некоторыми версиями eAccelerator есть проблема с open_basedir
решается патчем http://eaccelerator.net/ticket/396
Есть такой сайт http://www.atomicrocketturtle.com, где собрано много обновлений к Плеску.
Скорее всего, из этого репозитория обновляться будет безопаснее, поскольку он создавался специально для Плеска.
Таким образом, обновляться будем с репозитария http://www.atomicorp.com/channels/plesk/
Все действия совершаются в SSH
Ставим PGP-ключ:
wget http://www.atomicrocketturtle.com/RPM-GPG-KEY.art.txt
rpm –import RPM-GPG-KEY.art.txt
Добавляем репозиторий для yum:
wget -q -O – http://www.atomicorp.com/installers/atomic.sh | sh
Установка php:
yum install php
Обновление php:
yum update php
После обновления может быть, что mcrypt не обновился.
Делаем следующее:
yum remove php-mcrypt
yum –enablerepo=remi –exclude=php*5.3* install php-mcrypt
Дополнительно можно обновить MySQL:
yum update mysql-server
Или вообще всё подряд )
yum update