Найкращі налаштування 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.