Боремся с нагрузкой WordPress на сервер + MaxCache

В октябре я уже писал, что хостинги совершенно не тянут нагрузку, которую “обеспечивают” хорошо посещаемые сайты.

Например, на FastVPS сейчас крутится всего 3 сайта с общей посещалкой в сутки 10000 хостов в сутки, в пиковые моменты онлайн бывает до 300 человек одновременно. И в эти самые моменты сервак “глохнет” – перезагрузка не помогает, как и танцы с бубном… Все 1200 Мб оперативки заняты!

Та же история и с обычными хостингами – стоит “онлайн” на сайтах собраться 150-200 человек – тушите свет, на сайт не зайдешь.

Конечно, если бы сайты были на чистом HTML, то никто бы и не жаловался – серваки шустренько бегали бы и с большей посещалкой. Но кто сейчас такие сайты-то делает, в 2012 году? :) Все наши сайты бегают на WordPress и ни для кого не секрет, что этот монстр при большой посещаемости нещадно жрет системные ресурсы.

Сайты не работают = мы теряем деньги. Как обезопасить себя от ущерба?

1. Арендовать дорогой сервер. Я изучал эту тему летом и понял, что дешевле 3500 в месяц нормальный выделенный сервер не найти. А 3500 – это слишком дорого, ведь сайтов в общей сумме не так много. Тем более, размещать все сайты в одном месте – большой риск. Сейчас сайты раскиданы по трем хостингам и не бывает такого, чтобы все были недоступны разом.

2. nginx. По запросу в службу поддержки. На FastVPS этот вопрос решается легко, а на shared хостингах (например, SWEB) его не включат даже по требованию.

3. MAXCACHE. Это главное средство по борьбе с нагрузкой, которую создает WP. Данный скрипт стоит 900 рублей, лицензия дается на 3 сайта. За подключение каждого последующего сайта – 60 рублей. Подробное описание здесь

Данный скрипт кэширует WordPress и создает html версии страничек сайта. После инсталляции скрипта (достаточно закачать файлы на сервер и создать 1 папку), сразу визуально можно будет заметить, как быстро загружается главная после ее повторного открытия. Задержку при загрузке могут вызывать только блоки контекстной рекламы, тизерки и т.п. (да, со всем этим он совместим).

Лично у меня при использовании MaxCache возникли 2 проблемы, которые удалось решить.

Не исключено, что эти проблемы могут появиться у Вас, так что мотайте на ус.

Проблема 1. При использовании плагина Platinum SEO не переписываются TITLE страниц так, как указано в настройках.

Из-за этой проблемы мне пришлось на пару месяцев отказаться от использования MaxCache, что сразу вылилось в письма хостера о превышении нагрузки. Но зато тайтлы были нормальные :)

Решение проблемы именно с Platinum SEO приведено здесь. Я же не стал заморачиваться с правками кода и просто начал использовать другой плагин – Ultimate SEO. По функционалу он не уступает, а даже превосходит Платинум, не глючит и отлично работает в связке с MaxCache.

Проблема 2. После установки скрипта на страницах сайта выводятся ошибки PHP.

Проблема была на сайте, который висит на FastVPS. У других сайтов эта проблема не возникала, значит дело в теме или движке. После интенсивного гуглинга, были перепробованы несколько вариантов, но ошибка не исчезала

Warning: fread() [function.fread]: Length parameter must be greater than 0 in /var/www/XXX/data/www/XXX/maxsite-cache.php(1) : eval()’d code on line 1

По сути, это не ошибка, а предупреждение. После переписки с автором скрипта и службой поддержки FastVPS, единственным вариантом оказалось убрать вывод ошибок и предупреждений на уровне сервера. Это делается в htaccess с помощью директивы

php_flag display_errors off

Плагин отлично работает, а ошибки не выводятся на страницах – что и требовалось. К сожалению, локализовать и устранить источник ошибки не удалось.

Сейчас все сайты шустро бегают, открываются за секунды и не перегружают сервак.

fastvps-acc

Комментарии (18) на запись «Боремся с нагрузкой WordPress на сервер + MaxCache»

  1. Денис

    Мой хостинг-провайдер пару раз в неделю выдает ошибку 502 и 503. Это связано как-нибудь с WP?

  2. Добрый Дядя

    На хетзере мона арендовать дедик от 80 евросов с 8 гигами на борту- сам по себе хостинг убер- единственно что берет бобло за сетуп, в размере 150, но учитывая что они теньге не списывают полтора месяца от начала общения с ними, то терпибельно. Хотя эта немецкая нерасторопность так и подмывает русского человека натянуть их на кукан и соскочить по прошествии 2 месяцев.

  3. Презренный Манимейкер

    Денис, каждый раз может быть разная причина.

    Добрый Дядя, а что там за ПО? ISP или тупой DirectAdmin? NS дают или свои делать? IP-шек сколько дают?

  4. Ольга

    nginx+php-fpm+eaccelerator+wp-super-cache вот что вам поможет. 10000 это ничего для данной схемы, даже на слабом хостинге.

    вот попробуйте: http://wordpress.org/support/topic/nginx-php-fpm-php-apc-wordpress-multisite-subdirectory-wp-super-cache

  5. aktuba

    >php_flag display_errors off

    Жесть. А ничего, что теперь не увидите ошибок в других скриптах (плагинах, например)? Судя по сообщению, ошибка в fread, т.е. в коде MAXCACHE.

  6. Презренный Манимейкер

    aktuba, а другого выбора нет. Чтобы сайт работал и не грузил хостинг, нужен MaxCache. Автор скрипта говорит, что дело не в скрипте, а в шаблоне. Верстальщик говорил, что в теме нечему вызывать такую ошибку. Замкнутый круг

  7. Владимир Лапшин

    Ну не знаю. 1000 пользователей в сутки вполне себе живут на приличных хостингах даже без кеширования.
    При 5.000 в сутки с кешированием на свебе у меня тоже вполне себе фурычит. Да, номинально я превышаю допустимую нагрузку раза в полтора. Но от саппорта никаких сообщений по этому поводу не получал. :)

  8. Андрей

    Рекомендую hostgator.ru – это настоящее американское качество. Все анлим, причем реальный анлим. Держу там несколько сайтов, у одного посещаемость больше 40000 хостов. Если региться по купону infinitycoupon то первый месяц обойдется всего в 1 цент, вполне достаточно что бы потестить.

  9. WebSurfer

    У меня sweb лежал при 5 К посетителей… по запросу тоже не расширили возможности… сезонный трафик пролетел как фанера. Стоял суперкеш, гиперкеш, не помогло. Автор, советуете покупать МаксКеш или хостинг менять? Не хотелось бы, чтобы подобное повторилось при дальнейших всплесках!

  10. Презренный Манимейкер

    WebSurfer, у меня точно также пролетел новогодний трафик без MaxCache. По своему опыту – FastVPS с MaxCache на OVZ-6 потянет сайты на WP на 15K в сутки

  11. Алексей

    Мне конечно пока рано парится насчет перегрузки сервака, но я уже сразу думаю, что придется рано или поздно покупать MAXCACHE.

    Поэтому не ставил Platinum SEO, порылся в плагинах и нашел Yoast WordPress SEO, мне кажется – достойная замена

  12. wlad2

    а причем здесь заголовок?
    ябы назвал вот так: Нагрузка wordpress — MAXCACHE, Platinum SEO, Ultimate SEO

  13. b

    Linode.com 1024мб рам + nginx+ php-fpm + opc + wordpress + totalcache = 40k держит спокойно.

  14. IAD

    кеширую целиком страницы, в файловый кеш, до передачи запроса в ядро вордпресса. Можете затестить, нагнув блоговый VDS ab тестом =)
    имхо оптимально – т.к. если запрос ушёл в ядро, то превед =)
    ну и xcache, без него никак, родного.

  15. Renar

    Доброго вечера). Почитай блог Владимира http://blog.sjinks.pro/ Он сравнивал эффективность работы различных плагинов кеширования (в том числе и своего).
    В комментариях произошла интересная дискуссия с Максом по поводу работы MaxCache.

  16. Alex

    nginx+ php-fpm

    +1

    loadimpact.com для теста.

  17. JonNiBravo

    Вопрос к использующим связку nginx+ php-fpm. Как нормально настроить rewrite и ЧПУ ? У меня так и не получилось настроить nginx Compatibility plugin

  18. Китнисс

    Не знаю, обычный Simple Cache вполне справляется со своими задачами и не конфликтует с остальными плагинами.
    Так что не вижу особого смысла покупать плагин MaxCache