Стоит ли овчинка выделки?

Вчера я наконец-то поднял munin и новый monit на сервере, а сегодня посмотрел на результаты мониторинга. Самое первое, что бросилось в глаза: iostat показывает очень большое количество записей (превышавшее количество чтений почти в тысячу раз).

На сервере живут четыре сайта на WordPress, два из которых (littlefox.ru и cat-tv.ru) находятся в Alexa Top 100,000 (они создают основную нагрузку на сервер).

Особенность обоих сайтов — они используют небезызвестный плагин WP SuperCache. Мне с этим плагином приходилось неоднократно сталкиваться, и не всегда с хорошей стороны (так получилось), так что я имею представление о том, как он работает.

С целью поэкспериментировать мы отключили SuperCache. В результате получилась такая картина.

Так сложилось, что WP SuperCache мы отключили практически при пиковой посещаемости (хорошо видно на графике «eth0 traffic»), и тем интереснее смотрятся результаты. Практически сразу упало количество записей на диск (дисковая подсистема вздохнула с облегчением): при количестве записей, тысячекратно превышающих количество чтений, эффективность дискового кэша, очевидно, падает. В случае с виртуальным сервером такая нагрузка могла бы его положить: дело в том, что виртуализаторы не очень хорошо справляются с операциями ввода/вывода (это их слабое место); как результат, от этого начинает увеличиваться нагрузка на процессор (все больше времени проводится в iowait).

Также, как это ни странно, упала нагрузка на процессор! Причём заметнее всего это отразилось на user time (а не на system, как можно было бы ожидать) — если внимательно посмотреть на графики «CPU Usage» и «Load Average», то можно заметить, что при примерно одинаковом количестве посетителей (я сужу по объемам отдаваемого трафика) нагрузка при отключенном WP SuperCache оказывается меньшей (причем это заметно даже при низкой нагрузке — впрочем, при низкой нагрузке, наверное, любой кэш не особо эффективен из-за затрат на реализацию кэширования)! Так же уменьшилось количество переключений контекста (что, видимо, и объясняет уменьшение system time) и уменьшилось количество прерываний от контроллера жесткого диска.

А вот статистика MySQL далеко не однозначна:

С одной стороны, вроде бы и среднее количество запросов в секунду резко упало, но с другой стороны, это произошло до отключения WP SuperCache. Также заметно, что при выключенном WP SuperCache кэш запросов стал медленно таять (хотя это можно объяснить падением нагрузки и чисткой кэша). Хотя процентное отношение количества запросов, результат для которых был взят из кэша, весьма впечатляет. Что значит грамотная настройка MySQL. Тем не менее, данных для однозначных выводов недостаточно.

Перейдём к ответу на вопрос, стоит ли овчинка выделки. Как обычно, однозначного ответа нет. Нужно смотреть в каждом конкретном случае. Тем не менее, если сайт стоит на виртуальном сервере, то высокая нагрузка при включенном SuperCache может его убить. Если есть достаточно памяти (что на виртуалках большая редкость), то имеет смысл помещать каталоги с кэшем на RAM-диск и разгрузить дисковую подсистему. При высокой нагрузке на выделенном сервере нужно очень внимательно смотреть на конфигурацию MySQL, а также типы запросов. Если же сайт стоит на shared-сервере, то выбор здесь небольшой: либо отказаться от плагинов, которые грузят MySQL, либо сменить WordPress на что-то более легкое. Кэширование на shared-сервере, как правило, не оправдывает себя (во многом зависит от жадности хостеров, которые на одном сервере стремятся разместить как можно большее количество сайтов). Тем же, кто имеет административный доступ на сервер, я бы очень рекомендовал мониторинг сервера (munin, nagios/nagvis и т.п.) со включенным и выключенным кэшем. Возможно, что результат очень сильно удивит :-)

Добавить в закладки

Связанные записи

29
Июль
2009

Комментарии к статье «WP SuperCache и высокая нагрузка: часть 2» (6)  »

  1. Sasha says:

    А чего свой WP File Cache не ставите на эти сайты? Интересно было бы посмотреть результаты.

    • Vladimir says:

      Если бы это были мои сайты, я бы попробовал. Но, скажем так, я просто предоставляю хостинг. У FileCache будет та же болезнь, но в меньшей степени (хотя все зависит от установленных плагинов).

  2. Rety says:

    С удовольствием читаю вас,интересно и познавательно

  3. wUUb says:

    А не подскажете, существуеи ли такой плагин, который позволял бы производить полное кэширование всего сайта на вордпресс, допустим, раз в сутки? То есть, проходил бы по сайтмэпу, генерировал бы статику, и отдавал бы её всем весь день, и ничего больше не делал бы. Такое бывает?

    Спасибо за ответ заранее

  4. Blog Business » Архив блога » Кэширование: Разгоняем Wordpress, тест плагинов кэширования. says:

    [...] данного плагина, читайте в следующей статье - WP SuperCache и высокая нагрузка, часть 2, Стоит ли овчинка [...]

Подписаться на RSS-ленту комментариев к статье «WP SuperCache и высокая нагрузка: часть 2» Trackback URL: http://blog.sjinks.org.ua/wordpress/601-wp-supercache-under-high-load-part-2/trackback/

Оставить комментарий к записи «WP SuperCache и высокая нагрузка: часть 2»

Вы можете использовать данные тэги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Оставляя комментарий, Вы выражаете своё согласие с Правилами комментирования.

Подписаться, не комментируя