APC — ускоритель PHP

Когда-то давно, когда я ещё только-только установил себе персональную вики для хранения домашней информации, я столкнулся с подвисанием всей системы. Собственно, нельзя сказать, что сильней всех нагружал систему 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 или Unity
sudo 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 кубометров дров. А у нас на стройке ни у кого, как ни стараяца, больше двух не полущается!
Пожав плечами, продавец для проверки включает пилу в электросеть. Гастарбайтер вздрагивает и шёпотом спрашивает:
— А щего эть она зажужжала?

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

8 + 1 =