На вершині дихати важче

WordPress — один з найпоширеніших движків для блогу. Простий в налаштуванні і інсталяції, зручний у використанні, легко розширюємо за рахунок плагінів. Саме тому більшість standalone-блогів працюють на ньому.
Проте найголовніший недолік WordPress — це очевидні проблеми з продуктивністю навіть при не самих солідних навантаженнях, таких як висока відвідуваність на блозі (понад декілька тисяч унікальних відвідувачів на добу) і, особливо, його функціонування при раптовому напливі великого числа користувачів на блог в один час.
Такий приріст користувачів може статися, наприклад, при цитуванні деякого поста на блозі іншими сайтами з великою аудиторією відвідувачів, але особливо часто це відбувається, коли один з постів на блозі виходить на головну сторінку (досягає топа) соціальних новинних сервісів типу DIGG.
Хотілося б зауважити, що в разі досягнення топа дігга WordPress не просто випробовує проблеми з продуктивністю, а абсолютно намертво "встає" через 3-4 хвилини топа.

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

Для початку заглянемо, що говорять про це на офіційному сайті WordPress. Як виявилося, там є спеціальний розділ WordPress Optimization з вельми корисними посиланнями на рекомендації щодо оптимізації WordPress. Але він далеко не повний. Грунтуючись на отриманій з цього та інших джерел інформації, а також використовуючи власний досвід, перерахую основні моменти щодо оптимізації WordPress під топи соціальних мереж:

1) Хостинг — виділений сервер або VPS (Virtual Private Server). Виділений сервер має на увазі більшу свободу дій.

2) Інтернет-канал до хостингу — 100 мегабіт. У деяких випадках можливе використання 10-мегабітного каналу (при мінімальному використанні графіки на сервері).

3) Подумайте про перенесення картинок в наповненому графікою популярному пості на окремий сервер або хостинг. Можна використовувати потужності безкоштовних сервісів — blogspot або flickr і розмістити зображення там.

4) Оптимізація роботи плагінів під WordPress. Для початку не варто занадто зловживати різноманітність плагінами. Скрізь, де можна, намагатися використати рішення, перекладене на статику (прописування статичних блоків HTML).
Приклад: використання плагіна similar posts (відображає посилання на схожі пости). Якщо ви знаєте, що якийсь певний пост на блозі може роздобути топ в соціальній мережі, то краще не використовувати цей плагін, а частково емулювати: прописати посилання на similar posts (схожі пости) статично в HTML.

5) Установка кеш-плагінів, прискорюючих завантаження сторінок і обробку php-файлів. Один з найпопулярніших — кеш-плагін WP-Cache 2. Нещодавно з'явився ще один багатообіцяючий кеш-плагін WP Super Cache. Останній має деякі характерні відмінності. У той час як WP-Cache 2 використовує PHP для обслуговування закеширувати файлів, WP Super Cache обходиться без допомоги PHP — створюючи статичні файли html, які в свою чергу завантажуються без єдиної строчки php-коду.

6) Має сенс включити gzip компресію (вимога — не жорстке). Однак, при наявності працюючого плагіна WP-Cache 2 вбудована компресія працювати не буде. Рішення — використання Apache модуля mod_deflate. Даний модуль дозволяє стискати дані, що відправляються сервером клієнтові.

7) Оптимізація роботи з MySQL — один з найважливіших пунктів. При стандартній установці MySQL використовує мінімальну з точки зору завантаження конфігурацію. Необхідно змінити деякі значення в конфігураційному файлі MySQL. для виділення більшої кількості пам'яті, буфера, кеша і пр. Основні рекомендовані настройки для файлу my.cnf:

key_buffer = 256M
max_allowed_packet = 1M
table_cache = 256
sort_buffer_size = 1M
read_buffer_size = 1M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 16M

Особливу увагу приділіть параметру max_connections у файлі my.cnf. Збільште його значення, інакше проблема "too many connections" наздожене вас дуже швидко. Менш важливі настройки можна знайти за посиланнями у кінці статті.

8) Можна використовувати APC — тюнинг PHP. Збільшує швидкість роботи PHP завдяки кешування скомпільованих php-файлів WordPress. Альтернативним рішенням може виступити використання eAccelerator з PHP Zend Optimizer, що дозволяє зменшити завантаження на процесор і поліпшити продуктивність (Особливо актуально для VPS-хостингу). В цілому, цей пункт не виступає обов'язковою.

9) Невелика оптимізація Apache. Вона також необхідна, оскільки конфігурація Apache за замовчуванням не розрахована на великі навантаження (підняти значення MaxClients в конфігураційному файлі та інші). Також нестрога рекомендація, але виброчно застосовувати деякі пункти цілком припустимо.

10) Має сенс відмовитися від капчі в коментарях на момент очікування великого потоку відвідувачів. Тут рішення можна разнообазіть, наприклад, — використання спрощеної капчі (не графічної).

11) І наостанок — непогано мати під рукою "священну кнопок" "перезавантажити сервер", якщо не один з пунктів не допомагає або ви десь допустили помилку. Пам'ятаєте, під час топа в соціальних мережах у вас є в середньому лише близько 5-10 хвилин, щоб вирішити раптову проблему з завантаженням сайту; по закінченні цього часу модератори соціальних новинних сайтів зазвичай "знімають новина" з головної сторінки.

Матеріали по темі:

5 Golden Tips For WordPress Performance Optimization / Slashdot-Digg Protection
How To Increase Your WordPress Site Performance (Without Losing Functionality) by 10 Times
DiggProof your WordPress Guide To Optimizing WordPress Servers
Compressing php output with wp-cache2 WordPress Plugin

Похожие посты:

Оставить комментарий

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.

Июль 2018
Пн Вт Ср Чт Пт Сб Вс
« Фев    
 1
2345678
9101112131415
16171819202122
23242526272829
3031  
Статистика