Оптимизируем сервак. eAccelerator
![]()
Уже рассмотрели приёмы освобождения оперативки и установку memcache. Теперь самое сладкое — ускоритель php-скриптов — eAccelerator. При правильной настройке он уменьшит время загрузки страниц до трёх раз!
Хотя с ним возможны и некоторые проблемы, если не расчитать свободной памяти, поэтому, если вы ещё не почитали первую статью и ваш сервер обладает меньше, чем 32 мб свободной оперативки, советую перейти к первой части сначала.
Установка eAccelerator
Узнать о последней версии акселератора можно на http://eaccelerator.net/. На момент публикации, ей является версия 0.9.6.1. Скачиваем и ставим командами из терминала (как обычно, для входа в шелл можно скачать программку PuTTy):
cd /usr/local/src
wget
bzip2 -d eaccelerator-0.9.6.1.tar.bz2
tar xvf eaccelerator-0.9.6.1.tar
cd eaccelerator-0.9.6.1Далее нам потребуется phpize. Если при вводе данной команды терминал выдаёт ошибку, то тогда ставим пакет php-devel:
yum install php-develУбедитесь, что он установился в /usr/bin/phpize, иначе поправьте следующие директории, если необходимо:
phpize
./configure --enable-eaccelerator=shared --with-php-config=usr/bin/php-config
make
make installЕсли возникают проблемы при конфигурировании, попробуйте использовать команду без параметров.
Теперь нужно создать папку, в которой будет храниться кэш акселератора:
mkdir -p /var/cache/eaccelerator
chmod 0777 /var/cache/eacceleratorНастройка eAccelerator
Далее достаточно тонкий и индивидуальный процесс. Откройте файл php.ini (в /etc/) и в секции [extensions] добавьте следующее:
extension="eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.shm_max="0"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"Перезагрузите httpd:
/etc/init.d/httpd restart или service httpd restartВведите в шелл команду php -v, чтобы убедиться, что eAccelerator установлен и работает. В сообщении должно быть о нём упоминание.
Возможные ошибки
Если после перезагрузки httpd вам выдаётся ошибка 500 или 502, измените настройки и полностью перезагрузите сервер (частный рестарт httpd не всегда помогает в этом случае).
При ошибках вам нужно исправлять значения shm_size и shm_max. 0 — по умолчанию. Рекомендуемое — 16.
Если в логах ошибок вы обнаружите строки «Cannot allocate shared memory…», необходимо произвести следующие манипуляции:
/proc/sys/kernel/shmmaxВыведенное значение в байтах — максимальный предел выделяемой памяти. Рекомендуется в настройках указывать лишь половину от данного значения. К примеру, если выдаётся 33554432 (32 Мб), уменьшите значение shm_max в php.ini на 16777216 (16 Мб).
Есть и второй путь — увеличить допустимый предел памяти и, соответственно, увеличить его в настройках акселератора.
echo значение_в_байтах > /proc/sys/kernel/shmmaxИ прописать это же значение в файле /etc/sysctl.conf в параметре «kernel.shmmax», не забыв его раскомментировать, если нужно (убрать перед строкой #), чтобы значение автоматически присваивалось при перезагрузке сервера.
Правда, в этом случае есть шанс периодически получать ошибки 500 из-за того, что не хватает оперативной памяти на ускоритель (либо если само ядро не может физически выделять больше).
