LINUX.ORG.RU

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

 


0

1

Есть сеть на мультидоменном wordpress 3.x в общей сложности например на миллион страниц, фронтенд nginx, за ним апач с php-cgi, хочу довести до ума кеширование.
Использовать собираюсь WP Super Cache, но сразу возник ряд вопросов:
1. Как лучше кешировать: все страницы (заранее), или по мере обращения к ним?
2. Как часто создавать-обновлять кеш? Если для всех страниц сразу, то нагрузка ведь будет огромная.
3. Есть ли смысл использовать в данном случае php акселераторы типа apc? С xcache уже были проблемы, описывал здесь - php акселераторы

Кеш-статику планирую отдавать напрямую через nginx без участия apache, но тут вроде бы все понятно.

★★☆☆

Сколько обращений в минуту к самой популярной странице?
Смысл кэшировать миллион страниц, учитывая, что к некоторым будет идти 1 обращение в сутки?

pi11 ★★★★★
()
Ответ на: комментарий от pi11

Хотя, я смотрю WP Super Cache генерит статичные файлы, тогда если контент редко обновляется профит очевиден.

2. Как часто создавать-обновлять кеш? Если для всех страниц сразу, то нагрузка ведь будет огромная.

Ну так только для измененных, когда новый контент появляется.

pi11 ★★★★★
()
Ответ на: комментарий от pi11

Смысл кэшировать миллион страниц, учитывая, что к некоторым будет идти 1 обращение в сутки?

склоняюсь к тому, что смысла нет. хотя запутался уже.

Сколько обращений в минуту к самой популярной странице?

пока данных нет, но кеш нужен обязательно, чтобы не дергать базу зря.

xtraeft ★★☆☆
() автор топика

за ним апач с php-cgi

А зачем Апач, если php-cgi?

1. Как лучше кешировать: все страницы (заранее), или по мере обращения к ним?

WPSC использует второй вариант.

Есть ли смысл использовать в данном случае php акселераторы типа apc?

Есть, если есть лишняя память. PHP не будет тратить время на перекомпиляцию скриптов.

sjinks ★★★
()
Ответ на: комментарий от sjinks

А зачем Апач, если php-cgi?

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

WPSC использует второй вариант.

он использует оба варианта (на выбор).

Есть, если есть лишняя память. PHP не будет тратить время на перекомпиляцию скриптов.

брать apc? как у него со стабильностью, на твой взгляд?

xtraeft ★★☆☆
() автор топика
Ответ на: комментарий от wxw

в дебиане php 5.3, обновляться до 5.5 не очень хочу. зря?
а, оно еще даже из беты не вышло, так что не вариант :)

xtraeft ★★☆☆
() автор топика
Последнее исправление: xtraeft (всего исправлений: 1)
Ответ на: комментарий от xtraeft

это урезанный опенсорснутый zend optimizer, который тыщу лет ставили. beta наверное потому, что основная ветка beta.
почему его не собирают в дебиане с 5.3 я не знаю. "Zend OPcache is compatible with PHP 5.2.*, 5.3.*, 5.4.*
and PHP-5.5 development branch"

обновляться до 5.5 не очень хочу

5.5 сырое. а 5.4 на 5-15% производительнее, я бы задумался

wxw ★★★★★
()
Ответ на: комментарий от xtraeft

брать apc? как у него со стабильностью, на твой взгляд?

Вот лично мне с APC никогда не везло — постоянно ловлю сегфолты под большой нагрузкой.

У себя использую xCache 3.0.1, полёт нормальный.

sjinks ★★★
()
Ответ на: комментарий от wxw

почему не opcache

С PHP 5.3 на WP под нагрузкой только и успеваешь ловить сегфолты (ставил opcache из pecl) :-(

sjinks ★★★
()
Ответ на: комментарий от xtraeft

Тут нужно на конфиги смотреть.

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

# ps fu -C php-cgi
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root     10485  0.0  0.0 681608 11856 ?        Ss   May01   0:00 /usr/bin/php-cgi -q -b /dev/shm/php-fcgi.sock -c /etc/php5/cgi/php.ini
1035     13960  5.5  1.2 718976 201412 ?       S    07:11   2:25  \_ /usr/bin/php-cgi -q -b /dev/shm/php-fcgi.sock -c /etc/php5/cgi/php.ini
root     14179  5.2  1.3 723336 220952 ?       S    07:11   2:16  \_ /usr/bin/php-cgi -q -b /dev/shm/php-fcgi.sock -c /etc/php5/cgi/php.ini
root     14249  5.0  1.2 716620 206332 ?       S    07:11   2:10  \_ /usr/bin/php-cgi -q -b /dev/shm/php-fcgi.sock -c /etc/php5/cgi/php.ini
root     14467  5.0  1.3 728100 213776 ?       S    07:12   2:09  \_ /usr/bin/php-cgi -q -b /dev/shm/php-fcgi.sock -c /etc/php5/cgi/php.ini
elc      14607  5.3  1.2 729716 210632 ?       R    07:13   2:15  \_ /usr/bin/php-cgi -q -b /dev/shm/php-fcgi.sock -c /etc/php5/cgi/php.ini
elc      14687  5.3  1.5 770432 245296 ?       R    07:14   2:11  \_ /usr/bin/php-cgi -q -b /dev/shm/php-fcgi.sock -c /etc/php5/cgi/php.ini
root     14722  4.8  1.2 717620 204936 ?       S    07:14   1:57  \_ /usr/bin/php-cgi -q -b /dev/shm/php-fcgi.sock -c /etc/php5/cgi/php.ini
ewgms    14775  5.4  1.3 727444 212204 ?       R    07:14   2:12  \_ /usr/bin/php-cgi -q -b /dev/shm/php-fcgi.sock -c /etc/php5/cgi/php.ini
root     14813  5.5  1.1 717632 192176 ?       S    07:15   2:12  \_ /usr/bin/php-cgi -q -b /dev/shm/php-fcgi.sock -c /etc/php5/cgi/php.ini
elc      15115  4.9  1.4 725992 229936 ?       S    07:15   1:58  \_ /usr/bin/php-cgi -q -b /dev/shm/php-fcgi.sock -c /etc/php5/cgi/php.ini
root     15525  5.7  1.5 771736 249552 ?       S    07:15   2:16  \_ /usr/bin/php-cgi -q -b /dev/shm/php-fcgi.sock -c /etc/php5/cgi/php.ini
elc      15560  5.3  1.5 770244 246880 ?       S    07:15   2:05  \_ /usr/bin/php-cgi -q -b /dev/shm/php-fcgi.sock -c /etc/php5/cgi/php.ini
root     15939  5.3  1.2 719148 206724 ?       S    07:16   2:04  \_ /usr/bin/php-cgi -q -b /dev/shm/php-fcgi.sock -c /etc/php5/cgi/php.ini
root     16006  5.7  1.5 770584 254920 ?       S    07:16   2:10  \_ /usr/bin/php-cgi -q -b /dev/shm/php-fcgi.sock -c /etc/php5/cgi/php.ini
root     16011  5.0  1.6 769680 260840 ?       S    07:16   1:55  \_ /usr/bin/php-cgi -q -b /dev/shm/php-fcgi.sock -c /etc/php5/cgi/php.ini
elc      16170  5.0  1.2 719360 199956 ?       R    07:18   1:52  \_ /usr/bin/php-cgi -q -b /dev/shm/php-fcgi.sock -c /etc/php5/cgi/php.ini
root     16189  5.1  1.5 771180 245068 ?       S    07:18   1:55  \_ /usr/bin/php-cgi -q -b /dev/shm/php-fcgi.sock -c /etc/php5/cgi/php.ini
root     16194  5.0  1.1 718728 193368 ?       S    07:18   1:51  \_ /usr/bin/php-cgi -q -b /dev/shm/php-fcgi.sock -c /etc/php5/cgi/php.ini
root     16281  4.6  1.1 716632 187000 ?       S    07:18   1:42  \_ /usr/bin/php-cgi -q -b /dev/shm/php-fcgi.sock -c /etc/php5/cgi/php.ini
root     16346  5.0  1.3 727128 216724 ?       S    07:19   1:49  \_ /usr/bin/php-cgi -q -b /dev/shm/php-fcgi.sock -c /etc/php5/cgi/php.ini
ewgms    16371  4.8  1.1 717052 190924 ?       R    07:19   1:43  \_ /usr/bin/php-cgi -q -b /dev/shm/php-fcgi.sock -c /etc/php5/cgi/php.ini
root     16372  4.5  1.1 717052 188116 ?       S    07:19   1:37  \_ /usr/bin/php-cgi -q -b /dev/shm/php-fcgi.sock -c /etc/php5/cgi/php.ini
elc      17217  5.3  1.2 719488 211248 ?       R    07:21   1:49  \_ /usr/bin/php-cgi -q -b /dev/shm/php-fcgi.sock -c /etc/php5/cgi/php.ini
root     17231  5.3  1.4 767900 229148 ?       S    07:21   1:49  \_ /usr/bin/php-cgi -q -b /dev/shm/php-fcgi.sock -c /etc/php5/cgi/php.ini
natalia  17292  5.1  1.1 719592 193520 ?       R    07:21   1:42  \_ /usr/bin/php-cgi -q -b /dev/shm/php-fcgi.sock -c /etc/php5/cgi/php.ini

Если же таких «деревьев» несколько, то у каждой группы процнссов php будет свой собственный кэш. аналогично в ситуации, если php выполняется и в mod-php, и в php-cgi — у них тоже будут разные кэши.

То же самое относится ко всяким suPHP.

sjinks ★★★
()
Ответ на: комментарий от sjinks

размещал админку xcache и свои php скрипты/cms на одном vhost с mod_php, размещал на другом vhost с php-cgi - результат был один и тот же.

xtraeft ★★☆☆
() автор топика
Ответ на: комментарий от xtraeft

Тогда нужно смотреть выхлоп php -m

В секции [Zend Modules] самым первым должен идти XCache Cacher.

php -v должен показать что-то типа

Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
    with XCache v3.0.1, Copyright (c) 2005-2013, by mOo
    with XCache Optimizer v3.0.1, Copyright (c) 2005-2013, by mOo
    with XCache Cacher v3.0.1, Copyright (c) 2005-2013, by mOo
sjinks ★★★
()
Ответ на: комментарий от sjinks

У меня такой конфиг:

[xcache-common]
extension = xcache.so

[xcache.admin]
xcache.admin.enable_auth = On
xcache.admin.user = "..."
xcache.admin.pass = "..."

[xcache]

xcache.shm_scheme =        "mmap"
xcache.size  =              384M
xcache.count =                 1
xcache.slots =                8K
xcache.ttl   =              3600
xcache.gc_interval =         600

xcache.var_size  =            1M
xcache.var_count =             1
xcache.var_slots =            1K
xcache.var_ttl   =           120
xcache.var_maxttl   =       3600
xcache.var_gc_interval =     300

xcache.var_namespace_mode =    0
xcache.var_namespace =        ""

xcache.readonly_protection = Off
xcache.mmap_path =    "/dev/zero"


xcache.coredump_directory =   ""
xcache.coredump_type =         0

xcache.disable_on_crash =    Off

xcache.experimental =        On

xcache.cacher =               On
xcache.stat   =               On
xcache.optimizer =           On

[xcache.coverager]

xcache.coverager =           Off
xcache.coverager_autostart =  On

xcache.coveragedump_directory = ""

xCache 3.0.1

sjinks ★★★
()
Ответ на: комментарий от sjinks

Ставил из реп дебиана, оно само прописалось так.
Попозже попробую и отпишусь.
Спасибо за помощь.

xtraeft ★★☆☆
() автор топика
Ответ на: комментарий от sjinks
PHP 5.3.3-7+squeeze15 with Suhosin-Patch (cli) (built: Mar  4 2013 13:11:17)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
    with XCache v1.3.0, Copyright (c) 2005-2009, by mOo
    with the ionCube PHP Loader v4.0.11, Copyright (c) 2002-2011, by ionCube Ltd., and
    with Zend Guard Loader v3.3, Copyright (c) 1998-2010, by Zend Technologies
    with Suhosin v0.9.32.1, Copyright (c) 2007-2010, by SektionEins GmbH

должно быть cacher еще?

xtraeft ★★☆☆
() автор топика
Ответ на: комментарий от xtraeft

сейчас в админке php Cached только она сама:

/var/www/user/data/www/domain.com/x/admin/xcache.php
/var/www/user/data/www/domain.com/x/admin/index.php
/var/www/user/data/www/domain.com/x/admin/common.php
/var/www/user/data/www/domain.com/x/admin/common-en.lang.php

xtraeft ★★☆☆
() автор топика
Ответ на: комментарий от xtraeft

охохо, la 60.
php жрет весь процессор, как удачно совпало с установкой xcache :)
а может это гарбадж коллектор wp-supercache включился

xtraeft ★★☆☆
() автор топика
Последнее исправление: xtraeft (всего исправлений: 1)
Ответ на: комментарий от xtraeft

а может это гарбадж коллектор wp-supercache включился

Если iowait высокий, то да.

sjinks ★★★
()
Ответ на: комментарий от xtraeft

Например, такие:

server {
    server test.domain.com;
    root /some/path;

    location /xcache/ {
        root /usr/share;
        index index.php;
    }

    location ~ /xcache/.*\.php$ {
        include /etc/nginx/fastcgi_params;
        fastcgi_pass unix:/dev/shm/php-fcgi.sock;
        fastcgi_param SCRIPT_FILENAME /usr/share$fastcgi_script_name;
    }

    location ~ \.php$ {
        include /etc/nginx/fastcgi_params;
        fastcgi_pass unix:/dev/shm/php-fcgi.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

Путь в fastcgi_pass замени на свой.

Проверь сначала работоспособность админки xcache (пути я ставил по памяти). Если работает, сделай в $document_root какой-нибудь php-файл типа phpinfo(), открой его в браузере и проверь админку xCache.

sjinks ★★★
()
Ответ на: комментарий от xtraeft

А если для теста запустить

export PHP_FCGI_CHILDREN=5
export PHP_FCGI_MAX_REQUESTS=1000
php-cgi -q -b /dev/shm/php-fcgi.sock -c /etc/php5/cgi/php.ini

Просто если пых работает как CGI-скрипт (не как FastCGI), то акселераторы здесь бессильны: cgi стартует при выполнении запроса и завершается сразу после. По завершении php гробится и весь кэш.

sjinks ★★★
()
Последнее исправление: sjinks (всего исправлений: 1)
Ответ на: комментарий от sjinks

ага, видимо так и есть.
ну ладно, «не очень то и хотелось (c)».
спасибо за помощь, теперь буду разбираться с wp super cache.

xtraeft ★★☆☆
() автор топика

Попробовал тут http://wordpress.org/extend/plugins/db-cache-reloaded-fix/

Без db fix:
index - 30.42 Mb / 0,78232 сек / 19 запросов
page - 30.27 Mb / 0,83318 сек / 34 запросов
С db fix:
index - 30.59 Mb / 0,73777 сек / 7 запросов
page - 30.44 Mb / 0,83804 сек / 21 запросов
index до 61.23 Mb / 3,80476 сек / 29 запросов
index после 61.23 Mb / 4,56192 сек / 9 запросов
page до 59.33 Mb / 4,40868 сек / 45 запросов
page после 59.33 Mb / 5,02101 сек / 24 запросов
запросов стало меньше, а время выполнения выросло

xtraeft ★★☆☆
() автор топика
Ответ на: комментарий от sjinks

думаю поставить вопрос по другому и поменять принцип работы php, посоветуешь что-нибудь? или просто брать FastCGI?

xtraeft ★★☆☆
() автор топика
Ответ на: комментарий от xtraeft

переехал с mpm-itk + cgi на mpm-prefork + fastcgi + xcache, нагрузка и скорость генерации страниц выросла в пару раз.
все интереснее и интереснее. вернулся обратно

xtraeft ★★☆☆
() автор топика
Последнее исправление: xtraeft (всего исправлений: 1)
Ответ на: комментарий от xtraeft

думаю поставить вопрос по другому и поменять принцип работы php, посоветуешь что-нибудь? или просто брать FastCGI?

Я использую nginx + php-cgi в режиме FastCGI + xCache, всё устраивает.

sjinks ★★★
()
Ответ на: комментарий от sjinks

вообщем перешел на mpm_itk + mod_php + xcache, стало сильно лучше.
добавил wp super cache, посмотрю на результат.

спасибо за советы!

xtraeft ★★☆☆
() автор топика
Ответ на: комментарий от xtraeft

Вполне. Например, из-за фрагментации кеша может не получиться закешировать объект. Место вроде как есть, но блок достаточного размера выделить не получается.

Обрати внимание на неравномерное использование кеша: 1 и 4 линия практически полностью забиты.

Можно попробовать изменить xcache.var_count с 4 на 1 — в моих тестах пролизводительность оказалась лучше с одной линией.

Можно попробовать увеличить xcache.var_maxttl (в этом случае увеличь значение max TTL в EM Object Cache > General Settings)

sjinks ★★★
()
Ответ на: комментарий от sjinks

конфиг такой:

xcache.var_size  =            128M
xcache.var_count =             1
xcache.var_slots =            2K
xcache.var_ttl   =             3600
xcache.var_maxttl   =          86400
xcache.var_gc_interval =     3600
только сейчас обратил внимание на твой ник :) спасибо за плагин

xtraeft ★★☆☆
() автор топика
Последнее исправление: xtraeft (всего исправлений: 1)
Ответ на: комментарий от sjinks

sjinks, тебя интересует разовая работа по настройке мультидоменного wp + nginx + администрирование и консультации?
один нюанс - контент на этом wp - для взрослых.

xtraeft ★★☆☆
() автор топика
26 января 2014 г.
Ответ на: комментарий от sjinks

не знаю ребята:)еще 2 года назад тестировал APC XCACHE ( на последнем долго сидел) но после тестов нескольких сайтов по файрбагу на время загрузки перешел на APC Zend opCache как считается на 5-20% шустрее чем APC, однако...у меня APC шустрее работает чем opCache потому для всего сервера отрабатывает Zend opCache раз уж он идет в пакете с пхп) а для отдельных CMS доступен APC))

eclipseg
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.