Wordpress кеширование

12 3
HM
На сайте с 14.01.2012
Online
253
2083

Прошу совета у опытных администраторов (вопрос больше относится к администрированию, чем к wordpress, поэтому решил спросить тут).

Есть вдс (1gb ram, xen) с дебианом, apache на бекенде + mod_php + xcache (с включенным xcache.var), nginx на фронтенде (отдает статику и проксирует апач).

На нем стоит мультидоменный wordpress на несколько десятков доменов, у которых в сумме несколько сотен тысяч-миллионов записей, посещаемость пока 20-30к уников в сутки, хитов в два-три раза больше.

Хочется максимально оптимизировать этот конфиг, чтобы потом просто масштабировать его, увеличивая производительность железа.

Что уже сделал:

- относительно оптимизировал шаблон wordpress, убрав лишние запросы

- установил и настроил xcache для кеширования опкода и переменных

- установил плагин SJ Object Cache для уменьшения количества запросов к базе (он использует xcache.var).

Примерные цифры загрузки страниц среднего блога:

- при первом обращении к главной странице: 28 запросов в БД, / 2,386 секунды.

- при рефреше ее: 8 запросов к БД / 0,303 секунды.

- при обращении/рефреше внутренней страницы: 24 запроса / 0,293 секунды.

Все не так уж и плохо, на мой взгляд, но память не резиновая, и весь контент из бд в xcache.var не положишь.

К тому же, периодически апач начинает отжирать всю память и грузит cpu на 100%.

Пробовал использовать дисковый кеш (WP Super Cache), но при таком количестве записей (к тому же на блогах встречается отложенный постинг) он создает больше проблем (например при удалении-обновлении файлов кеша).

Потребление памяти:

free -m
total used free shared buffers cached
Mem: 998 871 127 0 3 705
-/+ buffers/cache: 162 836
Swap: 1023 34 989

Конфиг xcache.var:

xcache.var_count 1 1
xcache.var_gc_interval 600 600
xcache.var_maxttl 7200 7200
xcache.var_size 192M 192M
xcache.var_slots 2K 2K
xcache.var_ttl 3600 3600

Статистика xcache (свежая, апач недавно ребутил поэтому в кеше переменных пока почти пусто):

http://f4.s.qip.ru/j1zuY868.png

Что можно попробовать еще?

Andreyka
На сайте с 19.02.2005
Offline
822
#1

Кешировать через nginx например

Я сюда писал статью как это делать

Ищите

Не стоит плодить сущности без необходимости
HM
На сайте с 14.01.2012
Online
253
#2

Andreyka, что именно кешировать, все страницы? их больше миллиона, никакой памяти не хватит.

Evas EvaSystems
На сайте с 31.05.2012
Offline
116
#3

Есть такой замечательный плагин как DB Cache Reloaded.

Рекомендую его использовать вместе с SJ Object Cache и не забудьте накатить ещё и его Fix иначе будут ошибки...

Также уделите внимание грамотной настройке и оптимизации вашего ПО, а именно nginx, apache, mysql.

Увеличьте буферные пулы, размеры временных табличек и прочее, но не переборщите, иначе не хватит памяти,

всё необходимо делать исходя из существующих ресурсов. На этом я как раз и специализируюсь, так что могу

помочь. Имею множество отзывов, ссылка и контакты в подписи. Обращайтесь.

Системный администратор Linux. Настройка, сопровождение и оптимизация серверов. Отзывы - searchengines.guru/ru/forum/1017473
Den73
На сайте с 26.06.2010
Offline
523
#4
hakuna matata:
Andreyka, что именно кешировать, все страницы? их больше миллиона, никакой памяти не хватит.

пофигу сколько страниц, в кэше только "горячие"

HM
На сайте с 14.01.2012
Online
253
#5

Evas,

Есть такой замечательный плагин как DB Cache Reloaded.
Рекомендую его использовать вместе с SJ Object Cache и не забудьте накатить ещё и его Fix иначе будут ошибки...

не понимаю, зачем использовать их совместно, если они выполняют одну и ту же функцию?

Den73,

пофигу сколько страниц, в кэше только "горячие"

проблема в том, что нагрузка размазана по всем страницам, каких то особо популярных нет.

---------- Post added 02-06-2013 at 13:30 ----------

посмотрел сейчас, размер всей базы mysql - около гигабайта.

может, есть смысл увеличить количество оперативной памяти и держать всю базу там?

если да, как это лучше реализовать?

Den73
На сайте с 26.06.2010
Offline
523
#6

а графики есть. во что уперается все?

HM
На сайте с 14.01.2012
Online
253
#7

Den73,

и в чем вообще проблема

не нравится скорость загрузки страниц и нужно масштабировать все это дело (в десятки раз увеличить).

еще хочется увеличить время жизни у xcache.var (для SJ Object Cache), тогда скорость загрузки страниц будет оптимальной, но непонятно сколько памяти потребуется.

подумываю взять сервер с большим количеством памяти и выделить ее под mysql, вроде должно помочь?

Andreyka
На сайте с 19.02.2005
Offline
822
#8

И что на все миллионы страниц заходят в день несколько человек?

HM
На сайте с 14.01.2012
Online
253
#9

Andreyka, сегодня на одни, завтра на другие.

Den73
На сайте с 26.06.2010
Offline
523
#10
hakuna matata:
Andreyka, сегодня на одни, завтра на другие.

ну и что, ротация кэша для этого есть.

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий