Когда-то давно, когда я ещё только-только установил себе персональную вики для хранения домашней информации, я столкнулся с подвисанием всей системы. Собственно, нельзя сказать, что сильней всех нагружал систему WEB-сервер, однако я не оставил его оптимизацию в стороне. APC — отличный акселератор, на мой субъективный взгляд.
Та давняя причина притормаживания была результатом суммы нескольких факторов:
- веб-сервер находился на старом десктопе с 512 Мб ОП и 2,6 ГГц (Pentium 4) который по определению уже не удовлетворяет всем потребностям среднестатистического человечка
- я принципиально не занимаюсь разгоном системы в виду того, что надёжность у меня стоит на первом месте
- в тот момент был ещё установлен старый IDE-винчестер, у которого скорость чтения/записи ниже, чем у SATA
- система (Ubuntu не помню уже какой версии) была перегружена лишними демонами
Однако после интенсивной оптимизации система работала не только стабильно, но и быстро (на сколько это возможно). Самое первое, что я сделал — это отключил те службы, которые не использую (тот же блютуз, к примеру). Далее решил ускорить обработку PHP-скриптов, ведь PHP — язык интерпретируемый, а не компилируемый. Значит он однозначно должен работать медленней, чем компилируемые собратья. Для снижения нагрузки на сервер есть два пути, минимум:
- залить на сервер оптимизированные версии php-скриптов
- установить акселератор
С первым пунктом всё достаточно сложно — не ставьте тяжеловесные и архаичные CMS типа 1С-Битрикс, по возможности минимизируйте использование циклов, ленивые вычисления в php тоже имеются (если их явным образом использовать в коде). Но это тема отдельного разговора, об этом можно говорить неделями.
Со вторым пунктом всё гораздо проще. Акселератор (если я правильно его понял и ничего не перепутал) просто компилирует наиболее интенсивно используемые скрипты на сервере и когда к ним обращаются в следующий раз подсовывает клиенту не сам php-скрипт, а его скомпилированную версию, которая работает значительно быстрее. Итак, установка в ubuntu (lubuntu в моём случае) как всегда проста:
sudo apt-get install apache2-threaded-dev php5-dev php-pear make gcc g++ #у меня не все эти пакетики были ранее установлены :(sudo ln -s /usr/bin/apxs2 /usr/bin/apxs #это чтобы новая версия была доступна по старому имениsudo pecl install apc #а это собственно и есть установка APC
Вот и всё. Акселератор установлен и готов к использованию… Но не используется 🙂 Для этого сначала нужно зайти в php.ini и добавить в него это расширение (можно в самом конце файла написать). Поэтому открываем файл с правами суперпользователя в любимом редакторе:
sudo vi /etc/php5/apache2/php.ini
Или любителям удобного графического редактора:
sudo gedit /etc/php5/apache2/php.ini #если вы - пользователь Gnome или Unitysudo leafpad /etc/php5/apache2/php.ini #если вы, как и я, используете LXDE
Добавляем эту волшебную фразу: extension=apc.so Теперь неплохо было бы перезагрузить сервер и оценить результат работы. Сразу отмечу, что результат будет заметен не сразу (акселератор не сразу определит, какие из ваших скриптов наиболее используемые и какие из них, соответственно, нужно компилировать). Но долго ждать всё равно не придётся.
Кстати, есть ещё и другие популярные решения (вероятно и более популярные, чем APC) — eAccelerator очень много людей хвалят. Однако, я его ещё не использовал и пока особого желания нет. Просто когда я впервые стал нуждаться в таком решении я просто зашёл в википедию и посмотрел список популярных решений, который был отсортирован в алфавитном порядке. Выбрал самое первое (естественно им оказался APC) и поискал, как его установить. Ввиду того, что достиг желаемого результата дальнейшие поиски прекратил.
P. S. Так уж случилось, что Linux не стоит на месте и теперь установка происходит ещё проще:
sudo apt-get install php-apc
После перезапуска апача даже не требуется править php.ini. Почему? Я даже не знаю. При этом я сам удивился, что установленный у меня MediaWiki сам обнаружил, что на сервере появился акселератор. Впрочем, править конфигурационный файл PHP всё же рекомендуют. Попробуйте обратиться к этому руководству, тем более, что там описана установка и других акселераторов.
P. P. S. Надеюсь, что никому в голову не придёт установить сразу два или три акселератора одновременно, в надежде на то, что все вместе они будут выполнять работу быстрей… И, как обычно, анекдот:
Гастарбайтер возвращает в магазин электротоваров электропилу.
— В инструкция сказаль, щто с иё помащью можно распилить за день 5 кубометров дров. А у нас на стройке ни у кого, как ни стараяца, больше двух не полущается!
Пожав плечами, продавец для проверки включает пилу в электросеть. Гастарбайтер вздрагивает и шёпотом спрашивает:
— А щего эть она зажужжала?