Как ускорить веб-сервер? или установка XCache
Как правило, наибольшую нагрузку на веб-сервер создают процессы 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.
спасибо, помогло!
Есть ли статистика по применению XCache ? Насколько уменьшилось время доступа ? Используется ли сейчас XCache ?
Статистики нет, но еакселлераторе на похожей системе время теста уменьшалось в 5-10 раз, визуально сайты с хкешем работают быстрее и это уже хорошо.
У меня плохой хостинг, большие ограничения! Поможет ли включение этой функции снизить нагрузку?
Должно помочь
На стабильность не влияет? Не проверяли?
Проблем замечено не было, под нагрузкой тоже держалось.
Установил, ставил на дебиан, все прошло без запинок единственное не нашел админку, в указанной папке пусто , где еще её искать ?
/usr/local/share/examples/xcache/admin
вы тут смотрели?
возможно в линуксе файлы админки расположены в другом месте,
попробуйте поискать
locate xcache
(конечно база locate должна быть обновлена)
Я правильно понимаю что PHP должен выполняться как CGI? Или можно и как модуль апача?
У меня работает через модуль Apache