Еще немного о производительности WordPress
Сегодня ночью долго не мог уснуть, задался вопросом исследования производительности сайта.
В основном меня интересовал вопрос, насколько эффективно использование Varnish и стоит ли его использовать на всех своих проектах? Есть ли альтернатива данному решению?
Провел небольшой ряд тестов, которые позволили мне немного оптимизировать работу своего сайта и сделать определенные выводы.
В качестве основной оценки производительности сайта выступал тест ab со следующими параметрами:
ab -n 1000 -c 50 http://domain.ru/
Получились примерно следующие результаты (запросов в секунду):
- Чистый wordpress - 5-12
- Установлен W3 Total Cache - ~1 300
- С использованием Varnish - ~3 500
- С использованием Nginx Cache - ~4 200
- Статика, без WP - ~6 000
Как видно, максимум, что можно выжать на данном сервере от сайта - это 6 тыс запросов в секунду. И только при использовании статических страниц.
Про использование Nginx Cache я уже писал в статье Тест производительности VPS сервера, в которой допустил ошибку при тестировании. И соответственно получил искаженные результаты в случае использования W3 Total Cache. Однако результат использования кеша Nginx был вполне реален. Более подробно про использование данного типа кеширования можно прочитать в статьях Rocket boost your Wordpress и WordPress nginx proxy cache. Причем во втором случае рассматривается вариант решения проблемы с очисткой кеша за счет использования патчей к Nginx.
Nginx Cache показывает очень впечатляющие результаты, но имеет целый ряд проблем. Основная проблема заключается в невозможности регулировать очистку кеша, нет возможности очистить кеш по запросу. И во время публикации новой записи или во время создания комментария страницы остаются без изменения на протяжении времени, указанного в параметрах кеширования. Динамика практически полностью уничтожается. Поэтому данный способ, как бы он не был эффективен, использовать на практике пока не представляется возможным.
Про Varnish я уже неоднократно писал. Наибольшую эффективность показывает конфигурация, описанная в статье Varnish for WordPress, она же практически не имеет каких-либо проблем.
Как я уже говорил выше, в предыдущих тестах W3 Total Cache я допустил ошибку, и результаты оказались очень занижены и соответственно не реалистичны. После повторных тестов, оказалось, что производительность сайта на уровне 1300-1500 запросов в секунду. Что по своей сути не так далеко отстоит от результата Varnish. Разница только в два раза, против сотен, без использования данного расширения. Но, есть одно но! Расширение W3 Total Cache можно использовать и на обычном shared hosting, в то время как Varnish можно использовать только на VPS и Dedicated Server.
После проведения данного тестирования, я оценил посещаемость своего сайта, и принял решение отказаться от использования Varnish. Мне еще очень долго не придется увидеть посещаемость сайта на уровне нескольких тысяч в минуту, а потому держать дополнительный сервер оказывается просто бесполезно (имхо).