Xcache настройка
Як відомо, PHP - інтерпретована мова, тобто кожен раз при зверненні до скрипту, цей скрипт компілюється. Якщо у вас 1 скрипт, то нічого страшного немає, так як час компіляції невелике. Але в сучасних CMS і фреймворках при відображенні сторінки використовується 10-300 окремих php-файлів (простіше кажучи, інклуд). Чим більше інклуд і чим вони важче, тим найдовше виконується процес компіляції.
Для вирішення цієї проблеми придумали зберігати компілює вид скрипта в пам'яті. Існують спеціальні модулі для зберігання откомпіленного коду в пам'яті. Називаються вони акселератори.
Найвідоміші: eAccelerator, APC, XCache. У кожного є свої плюси і мінуси. Я використовую XCache як найбільш швидкий і надійний. Хоча в кожного є своя думка з приводу надійності.
Деякі акселератори дозволяють зберігати в пам'яті не тільки скрипти, але і результати обчислень. Наприклад, вибірки з бази даних. На практиці це виглядає приблизно як зберігання кешу в Memcache. Але я використовую Memcache - так історично склалося.
Адаменко XCache
У XCache є невелика админка для виведення статистики і скидання кешу. Лежить вона зазвичай тут / usr / local / share / examples / xcache / admin /. Тому потрібно винести цю папку куди-небудь в корінь сайту або в свою адмінку, щоб можна було дивитися з браузера. Можете скачати адмінку тут.
Ось так це виглядає у мене

Перша таблиця показує загальну статистику. У ній 2 рядки, так як процесор у мене 2-х ядерний і XCache розподіляє кеш по обом ядрам. Усього у мене виділено 512M.
Статистика xCache
повернемося до адмінки (див. картинку вище).
Slots - кількість слотів під кеш. Це я так розумію на скільки частин б'ється виділяється пам'ять. У моєму випадку це 8000. Чим більше це значення, тим швидше йде пошук, але потрібно більше пам'яті.
Size - розмір пам'яті під XCache
Avail - скільки пам'яті залишилося. Як видно у мене її не залишилося. Забиті всі 512 Mb
Clear - кнопка скидання кешу
Hits - скільки звернень до файлів було зроблено
Misses - скільки звернень до файлів було зроблено, але цих файлів в пам'яті не виявилося. Це нормальний процес. Файли міняються - з кешу вони вилітають. Але в моєму випадку все файли просто не влазять в пам'ять, тому їх там немає, і відповідно йдуть промахи.
Clogs - це я так розумію скільки разів ми звернулися за якимись файлами в кеш, але в цей час ці файли ще компілювалися, тобто була блокування.
OOMs - скільки разів файли не потрапили в кеш через брак пам'яті.
Cached - кількість файлів в кеші. Всього у мене 6400 файлів.
налаштування xCache
Що ще не потрібно забувати. Припустимо, ви поміняли якийсь код на крупній проект. Місце в пам'яті звільнилося і на це порожнє місце можуть бути записані файли нізкопосещаемих проектів. Відповідно файли великого проекту не потраплять в кеш. Простіше кажучи, XCache НЕ вміє відслідковувати які файли можна викинути з кешу і помістити на їх місце більш часто запитувані файли (це так званий «гарячий» кеш). Тому потрібно скидати кеш вручну через адмінку.
Нижня таблиця показує які файли кешуються і наскільки ефективно.
Hits - кількість звернень до цього скрипту в пам'яті. Чим більше тим краще. Якщо для деяких файлів довгий час це значення менше 10, то значить цей файл рідко використовується, і лише займає місце в пам'яті.
Size - розмір цього файлу в пам'яті. Ось тут найцікавіше. Виходить, що відкомпільований файл займає в пам'яті в 10 разів більше місця, ніж на диску. OMG!
SrcSize - розмір файлу на диску
Access - як давно зверталися до цього файлу
Create - скільки часу цей файл лежить в кеші
Мій конфиг
xcache.size = 512M
xcache.count = 2
xcache.slots = 8K
xcache.ttl = 0
xcache.gc_interval = 0
xcache.var_size = 0M
xcache.var_count = 2
xcache.var_slots = 8K
xcache.var_ttl = 0
xcache.var_maxttl = 0
xcache.test = Off
xcache.cacher = On
xcache.stat = On
Як видно, я відключив використання XCache як кешування результатів обчислень (xcache.var_size = 0M). Для цього у мене є Memcache.
Ну і власне результати: прискорення в 2-3 рази. Якщо раніше сторінка генерировалась за 0.3 секунди (з урахуванням Memcache), то тепер 0.1 секунди. Це приклад з одного проекту CMS LiveStreet.