13 Декабря 2007 в 12:13

На вершине дышать тяжелее

0 1988

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

0 комментариев
Подписаться 
Подписаться на дискуссию:
E-mail:
ОК
Вы подписаны на комментарии
Ошибка. Пожалуйста, попробуйте ещё раз.
Поделиться 
Поделиться дискуссией:

Отправьте отзыв!
X | Закрыть