Автор: Санёк
января 31, 2011
4 комментария
Разгоняем WordPress
Все жалуются, что WordPress жрет много оперативки. Я расскажу как добиться такого результата:
MySQL: 10 запросов за 0.041 секунд. Потребление памяти: 3.85 MB NULL
Я уже давно занимаюсь созданием сайтов и чем больше я этим занимаюсь, тем больше дополнительных навыков мне требуется. И вот сейчас я окончательно созрел начать изучать администрирование серверов. Нет, я и раньше мог зайти в ISPManager и вырубить лишнее, подкрутить конфиги в php.ini и еще по мелочи. Но этого мало. Начнем с выбора сервера. Большинству подойдет VPS. Операционку каждый выбирает сам, но я отдаю предпочтение Debian и все что будет сказано ниже, будет относится именно к нему. Все эксперименты проводились на облачном хостинге . Мой сервер имеет диапазон размера оперативки от 256Mb до 1Gb.
Как известно, оптимизация делится на две части - клиентская и серверная. Про первое уже сказано достаточно. Отрубите лишние плагины, уменьшите количество запросов ... бла-бла-бла. 8mb - максимум, что мне удавалось отбить, а скорость почти не менялась. Тут нужно рыть глубже и настраивать сам сервер, на котором все крутится.
Первым делом я решил избавиться от ISPManager. Это печально, так как довольно удобно пользоваться им, но он потребляет лишние ресурсы и криво настраивает сервак. Я нашел отличный блог Debian.pro, в котором подробно расписывается . Я не буду рассказывать про установку сервера, так как по ссылке выше вы и сами все узнаете. На установленный сервер я повешал сайт на WP 3.0.4. В подвал был добавлен следующий код:
< ?php $user = wp_get_current_user(); if ( $user->id == 1 ) {
echo ” MySQL: ” . get_num_queries() . ” запросов за “; timer_stop(1);
echo ” секунд. Потребление памяти: “. round(memory_get_usage()/1024/1024, 2) . ” MB “;
var_dump($GLOBALS['wpdb']->queries);
}
?>
Он нужен для вывода количества запросов к БД, скорости генерации страницы и сколько было потрачено оперативной памяти. До оптимизации результаты были такими:
MySQL: 10 запросов за 0.197 секунд. Потребление памяти: 22.18 MB NULL
Напомню, что на сервере в этот момент был голый LAMP и больше ничего. Посещаемость на сайте была нулевая и нужно было его как-то погонять. Для этой цели отлично подошел сервис . В бесплатном режиме можно выбрать 50 клиентов максимум, но этого вполне достаточно. Подробней о Loadimpact.com можно почитать на хабре. Полученный результат можно посмотреть . При 20 клиентах потребление оперативной памяти сервера достигло 100% (то есть 1Gb) и я решил, что продолжать тест не имеет смысла.
После этого на сервер был установлен APC – alternative PHP cacher. Устанавливается он быстро, двумя командами в консоли, ничего сложного:
root@Debian:~$ aptitude install php-apc
и перезапускаем апач:
root@Debian:~$ /etc/init.d/apache2 restart
Результат меня приятно удивил:
MySQL: 10 запросов за 0.041 секунд. Потребление памяти: 3.85 MB NULL
Обратите внимание на скорость генерации страницы! Сайт после этого просто летал. Естественно я повторил тест в и вот . При 50 клиентах потребление оперативной памяти также составило 1Gb, но на этот раз тест был пройден полностью. Также видно, что 50 клиентов сайту далось нелегко, но мне еще есть куда расти - в планах полный отказ от тяжеловесного апача и переход на nginx. В панели Clodo это выглядело так:
1. Начало установки сервера. Можно заметить как по мере установки компонентов немного росла нагрузка)
2. Тест Loadimpact.com с уже установленным php-apc
У меня есть также и второй сервер на другом хостинге с установленным ISPManager Lite. У него всего 300Mb оперативки и их не хватает. Как-то раз начала отваливаться БД и я обратился в техподдержку. Мне установили nginx и вроде как ситуация нормализовалась. Правда свободной оперативки стало еще меньше (было 50 метров, а стало 30), но я подумал, что так и надо. Сейчас же решил посмотреть, что там и как. Залез в конфиги nginx и увидел, что он абсолютно не настроен и по сути лежит балластом. Немного поковырявшись удалось высвободить около 130 Mb оперативки. Также установил php-apc и на одном из блогов (посещаемость такая же как и у блога, что вы сейчас читаете
) получил такой результат:
MySQL: 48 запросов за 0.084 секунд. Потребление памяти: 5.42 MB NULL
Если честно не замерял сколько было, но что-то около 25Mb и загрузка около секунды.
Результаты для моего блога (другой хостинг, конфиги смотреть было лень):
После переезда на оптимизированный VPS:
Правда должен заметить, что пришлось еще отключить плагин WP-Syntax, так как он увеличивал время генерации страницы почти на секунду и делал 6 запросов к БД.
З.Ы. Кстати я решил сказать "Прощай!" shared хостингам раз и навсегда. Эта экономия того не стоит.
З.Ы.Ы. Да, заголовок желтый чуть менее чем полностью, но если бы я озаглавил статью "Оптимизация сервера" многие прошли бы мимо.
Рекомендую:
Тэги: debian, WordPress, настройка сервера
Категория: Хостинги | Комментировать (RSS) | Отклик
Еще по теме:









А по деньгам сколько выходит в месяц?
Шаред/VPS чем хороши – что всегда точно знаешь чего и сколько.
Сегодня: 3,81 руб
Вчера: 6,68 руб
Текущая неделя: 10,49 руб
Текущий месяц: 64,17 руб
30 дней: 234,33 руб
Спасибище!!!!
Реально разгрузил 50% рамы
Тоже на клодо