Найкращі налаштування APC, щоб скоротити час виконання сторінки


15

У мене Drupal 7, apc з php-fpm та apache за лаком та 512 Мб оперативної пам’яті.

Я вимірюю час виконання сторінки за допомогою модуля devel.

Час запиту бази даних низький (62 мс) порівняно із часом виконання сторінки, який становить 854 мс. Це означає, що є проблеми з налаштуваннями PHP та APC.

Мої поточні налаштування просто

apc.shm_size = 64
apc.stat=1 

Як я можу вдосконалитись?

Які найкращі налаштування для Drupal з огляду на вищевказану конфігурацію?

Спасибі

Відповіді:


12

Ми запускаємось у середовищі push SVN, тому очищаємо кеш файлу apc лише зі скриптом.

Налаштування APC:

apc.ttl=604800
apc.user_ttl=3600
apc.shm_size=192M
apc.include_once_override=1
auto_globals_jit=Off
apc.num_files_hint = 2048

apc.stat_ctime = 0
apc.file_update_protection = 2
apc.stat = 0

PHP скрипт:

<?php
$return = apc_clear_cache('opcode');
echo var_export($return);

604800 = 1 тиждень.

Після цього, запуск і запуск xdebug / xhprof та проведення подрібнення кешу сайту повинні повідомити про те, що сповільнює роботу сайту. Якщо коротко проаналізувати вихід шліфування кешу, це найкращий спосіб пришвидшити Drupal. Нижче я перелічу, які патчі та модулі ми використовуємо для його прискорення; у вашому випадку це буде інакше, швидше за все.

Друпал 6 Конкретний відповідь нижче

Як тільки ви пройдете цю точку і зрозумієте, що APC не збирається дати вам те, що ви шукаєте, перейдіть на потік і надайте цим патчам вир:

Спробуйте також деякі з цих модулів, оскільки вони значно покращили швидкість роботи наших сайтів:


Дякую за вашу відповідь, але я маю Drupal 7.
— John

Тому візьміть частини APC та частини xdebug / xhprof і подивіться на патчі D6 як на приклад того, що шукати у черзі випуску. Усі вищезазначені виправлення, де результат перегляду кешу перемелюється, знаходить больову точку та знаходить відповідну проблему. Швидкий старт: drupal.org/project/issues/search / ...
— mikeytown2

Зараз є вікі-
— файли

1
Просто FYI, я повинен був прокоментувати рядок apc.include_once_override = 1, тому що зламав сайт puregin.org/node/2550/3928
— corbacho

php.net/apc.configuration#ini.apc.include-once-override Дякую, що вказав на це. Залежно від версії PHP та версії APC, це може спричинити проблеми
— mikeytown2

3

Це одне з тих, «скільки триває шматок рядкових питань».

Що є корисним для веб-сайту з великим обсягом, може бути не однаковим для сайту з низьким обсягом, що має багато модулів, а також не може бути однаковим для сайту середнього обсягу з увімкненими лише декількома модулями. Інші веб-сайти, що працюють на сервері, також можуть потрапляти в пам'ять, що є в APC.

Моя відправна точка

apc.enabled=1
apc.shm_segments=1
apc.shm_size=64
apc.ttl=7200
apc.user_ttl=7200
apc.num_files_hint=1024
apc.mmap_file_mask=/tmp/apc.XXXXXX
apc.enable_cli=1
apc.rfc1867=1

Потім я коригую налаштування для сервера, але знову ж таки, немає жодного розміру, який підходить для всього набору налаштувань.

Знайдіть apc.php (можливо, розміщений за адресою /usr/share/pear/apc.php) та встановіть його у DOCROOT для встановлення Drupal. Зафіксуйте його на вашу IP-адресу через конфігурацію Apache. Відредагуйте ім’я користувача / пароль всередині, а потім перейдіть до нього. Потім ви побачите статистику APC.

Переконфігуруйте параметр shm_size, щоб мінімізувати пропуски кешу. В ідеалі ви хочете дати йому достатньо пам'яті, щоб ніколи не пропустити кеш файлу, а також додаткову пам'ять для кешу користувачів APC.

Оптимізуйте TTL, щоб запобігти розгортанню кешу. Якщо ви не редагуєте файли, ви можете збільшити цю кількість.

enable_cli є зручним, коли ви багато використовуєте drush, так що drush використовує кешовані файли з APC.

rfc1867 зручний для завантаження файлів.

Я також помітив php-fpm у назві. Це ускладнює питання і насправді виходить за рамки Друпальських відповідей. Ви можете отримати кращі реакції на сервер Fault , оскільки багато параметрів конфігурації системи не стосуються Drupal безпосередньо.


де є хороший підручник, який на легкій мові пояснює, що роблять усі налаштування, наприклад ttl, сегменти тощо? як cli допомагає при натисканні?
— Джон

Поясніть, будь ласка, як "я отримую трафік, що ще працює на сервері, які модулі я встановив тощо" впливати на налаштування? спасибі
— Джон

ці налаштування вище не дуже допомогли. Чи варто спробувати xhprof, щоб побачити, що відбувається з php?
— Джон

Усі налаштування APC описані на сторінці php.net/manual/en/apc.configuration.php
— mpdonadio

1
@MPD> enable_cli зручно, коли ви багато використовуєте барабан, так що drush використовує> кешовані файли з APC. Насправді, кліп є окремим процесом і не ділиться кеш-пам'яттю apche або навіть між дзвінками на друк.
— Робін Міллетт

2

APC просто покращує завантаження та розбір файлів PHP. Значна частина - це і сам час виконання. Є багато факторів, які можуть збільшити час виконання, включаючи помилки (особливо помилки, пов’язані з кешем), внутрішні накладні витрати (наприклад, drupal_alter (), module_implements ()) тощо.

Як ви просили, і mikeytown2 вже запропонував, я б скористався xhprof (я віддаю перевагу цьому через xdebug в наші дні, оскільки він забезпечує прямий, швидкий доступ до результату і не потребує додаткових інструментів), щоб дізнатися, де ваші вузькі місця.

Нещодавно я написав дві публікації в блозі про використання xhprof в Drupal та типових вузьких місцях , які можуть вам бути цікавими.


groups.drupal.org/node/82889 Профілювання PHP за допомогою XHprof
— John
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.