Как правило, наибольшую нагрузку на веб-сервер создают процессы php и
mysqld, конечно нужно оптимизировать код веб-сайтов и оптимизировать
структуру и запросы к базе данных.
Но.. не всем дано, да и железо сейчас настолько мощное, что без труда переваривает кучу информации.
Одна из возможностей ускорить выполнение php-кода и в следствии чего
разгрузить сервер и получить прирост генерации страниц сайта - это
установка системы кеширования результатов выполнения скриптов PHP.
Такая система не одна, сейчас пользуются популярностью eAccelerator, XCache, APC..
Первой системой что я начал использовать была eAccelerator.
Но на последней связке FreeBSD 8 + apache-2.2.14 + php 5.3.2,
eAccelerator пошел в отказ и не хотел работать, ругаясь при этом
примерно так
eAccelerator: shmmax should be at least 2MBPHP Warning: [eAccelerator] Can not create shared memory area in Unknown on line 0
PHP Fatal error: Unable to start eAccelerator module in Unknown on line 0
failed
Попробовав различные танцы с бубном и уменьшал память для кеша и увеличивал kern.ipc.shmmax, вот только не пробовал ulimit -SHn 65535, я решил что это знак и нужно попробовать другую систему кеширования.
Выбор пал на XCache, и так начнем..
cd /usr/ports/www/xcache ; make install clean
Из опций, ничего не отмечаю
Enable code coverage dumper
по умолчанию она не включена и служит для определения предотвращения переполнения памяти
после установки копируем конфиг
cp /usr/local/share/examples/xcache/xcache.ini /usr/local/etc/php/
создаем пароль для доступа в админку
md5 -s FWFWGd232fgfd4334 (пароль и хэши я изменил )
Правим конфиг под себя
ee /usr/local/etc/php/xcache.ini
в строку xcache.admin.pass вставляем хэш пароля который получился после выполнения md5 -s ..
параметр xcache.size устанавливайте в зависимости от количества оперативной памяти сервера
[xcache-common]
extension = xcache.so
[xcache.admin]
xcache.admin.enable_auth = On
xcache.admin.user = "admin"
xcache.admin.pass = "8fa3ad1043ac3280f2c3cf90273c718a"
[xcache]
xcache.shm_scheme = "mmap"
xcache.size = 256M
xcache.count = 4
xcache.slots = 8K
xcache.ttl = 0
xcache.gc_interval = 0
xcache.var_size = 4M
xcache.var_count = 1
xcache.var_slots = 8K
xcache.var_ttl = 0
xcache.var_maxttl = 0
xcache.var_gc_interval = 300
xcache.test = Off
xcache.readonly_protection = Off
xcache.mmap_path = "/dev/zero"
xcache.coredump_directory = ""
xcache.cacher = On
xcache.stat = On
xcache.optimizer = On
[xcache.coverager]
xcache.coverager = Off
xcache.coveragedump_directory = ""
Перезапускаем apache
apachectl -k graceful
и проверяем подключился ли XCache
php-cgi -v
должна быть примерно такая строка with XCache v1.3.0, Copyright (c) 2005-2009, by mOo
Последний шаг - подключаем админку XCache
для этого копируем содержимое каталога
/usr/local/share/examples/xcache/admin в нужный нам каталог веб-сервера,
далее проверяем заходим по адресу, вводим логин и пароль (см. конфиг) и
вуаля! Мы можем видеть чем живет наш XCache.
|