Результаты эксперимента превзошли все ожидания. Думаю, вы без труда найдете на графиках загруженности процессора и памяти период, когда кеш был выключен.


Через полчаса экспериментов система вылезла в жестокий своп и я еле смог вернуть кеширование на место:

Этот эксперимент, к сожалению, не был чистым, так как я настраивал Apache именно под имеющуюся конфигурацию, и выключение кеша привело к своппингу. Xcache (как и другие PHP-акселераторы) позволяет экономить сразу и процессорное время, и память, и обращения к диску, сохраняя промежуточный код скриптов PHP в оперативной памяти. Несмотря на то, что кеш занимал у меня целых 64МБайт, его отсутствие привело к разрастанию каждого из рабочих процессов настолько, что они вылезли за пределы физической памяти.
Вынесем три урока оптимизации — по одному на компонент AMP:
1. Всегда настраивайте Apache так, чтобы выполнение команды ab -n1000 -c100 yoursite/bigscript.php не приводило к свопу. Для этого прочитайте эту статью. «Коробочный» Apache плюс скрипты средней тяжести — верная дорога в пропасть при увеличении нагрузки. Особенно для ограниченных по памяти VDS.
2. Всегда устанавливайте акселератор PHP. На обычных проектах и CMS (Drupal/Joomla/WP) это принесет ускорение отдачи и снижение нагрузки на процессор в 2-4 раза, а также экономию оперативной памяти. Настраивайте количество кеша, достаточное для хранения активных скриптов (занятость кеша можно мониторить).
Третий урок — включайте Query Cache в MySQL. Он наглядно иллюстрируется следующим графиком:

Для более подробных советов по MySQL обратитесь к скрипту tuning-primer.sh, запустив его на живой БД.
Остальные меры (кроме оптимизации самих приложений) дают эффект послабее, но могут сэкономить ещё много ресурсов. Если интересуетесь — рекомендую прочитать вот эти статьи.

