WordPress – один из самых распространенных движков для блога. Прост в настройке и инсталляции, удобен в использовании, легко расширяем за счет плагинов. Именно поэтому большинство standalone-блогов работают на нем.
Однако самый главный недостаток WordPress – это очевидные проблемы с производительностью даже при не самых солидных нагрузках, таких как высокая посещаемость на блоге (свыше нескольких тысяч уникальных посетителей в сутки) и, в особенности, его функционирование при внезапном наплыве большого числа пользователей на блог в одно время.
Такой прирост пользователей может случиться, например, при цитировании некоторого поста на блоге другими сайтами с большой аудиторией посетителей, но особенно часто это происходит, когда один из постов на блоге выходит на главную страницу (достигает топа) социальных новостных сервисов типа DIGG.
Хотелось бы заметить, что в случае достижении топа дигга WordPress не просто испытывает проблемы с производительностью, а совершенно намертво “встает” через 3-4 минуты топа.
Постараемся кратко познакомить с рекомендациями, чтобы предотвратить такие нежданные выходы из строя.
Для начала заглянем, что говорят об этом на официальном сайте WordPress. Как оказалось, там есть специальный раздел
1) Хостинг – выделенный сервер или VPS (Virtual Private Server). Выделенный сервер подразумевает бОльшую свободу действий.
2) Интернет-канал к хостингу – 100 мегабит. В некоторых случаях возможно использование 10-мегабитного канала (при минимальном использовании графики на сервере).
3) Подумайте о переносе картинок в наполненном графикой популярном посте на отдельный сервер или хостинг. Можно использовать мощности бесплатных сервисов –
4) Оптимизация работы плагинов под WordPress. Для начала не стоит слишком злоупотреблять разнообразыми плагинами. Везде, где можно, пытаться использовать решение, переведенное на статику (прописывание статических блоков HTML).
Пример: использования плагина similar posts (отображает ссылки на схожие посты). Если вы знаете, что некий определенный пост на блоге может заполучить топ в социальной сети, то лучше не использовать этот плагин, а частично эмулировать: прописать ссылки на similar posts (похожие посты) статически в HTML.
5) Установка кеш-плагинов, ускоряющих загрузку страниц и обработку php-файлов. Один из самых популярных — кеш-плагин
6) Имеет смысл включить gzip компрессию (требование – не жесткое). Однако, при наличии работающего плагина WP-Cache 2 встроенная компрессия работать не будет. Решение – использование Apache модуля
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) Можно использовать
9) Небольшая
10) Имеет смысл отказаться от капчи в комментариях на момент ожидания большого потока посетителей. Здесь решение можно разнообазить, например, — использование упрощенной капчи (не графической).
11) И напоследок – неплохо иметь под рукой “священную кнопоку” “перезагрузить сервер”, если не один из пунктов не помогает или вы где-то допустили ошибку. Помните, во время топа в социальных сетях у вас есть в среднем лишь около 5-10 минут, чтобы решить внезапную проблему с загрузкой сайта; по прошествии этого времени модераторы социальных новостных сайтов обычно “снимают новость” с главной страницы.
Материалы по теме: