Jump to content

Система кеширования


Recommended Posts

День добрый.

 

Уже поднимал данный вопрос, но ответа так и не нашел.

Имеем Prestashop 1.5.6.1, система freebsd 8.4 Stable, mysql 5,5  и php 5,4

 

При включении любого кеширования xCache или memcache сайт начинает постепенно тупить и это приводит к тому что Apache22 перестает отвечать.

 

Для memcache устанвлен сервер memcached и расширение pecl-memcache.

В теории все должно работать, но не работает - виснет.

 

Подскажите что я делаю не так ?

Все же хочется включить кеширование.

Если нужны логи или конфиги - выложу.

 

Без включенных кешей, все относительно летает ...

Link to comment
Share on other sites

ты и правда хочешь ответ на такой вопрос или это шутка? до апреля вроде еще есть время.

 

я тоже спрошу, раз такая тема, купил короче двигатель, колеса, корпус нашел, собрал машину, вроде все ок, но не едет по дороге. Пробовал толкать с горки - едет замечательно. Какие будут советы?

;)

 

по мемкешу все-на-одном-сервере как-то так http://stackoverflow.com/a/195833/3168644

Link to comment
Share on other sites

ты и правда хочешь ответ на такой вопрос или это шутка? до апреля вроде еще есть время.

 

я тоже спрошу, раз такая тема, купил короче двигатель, колеса, корпус нашел, собрал машину, вроде все ок, но не едет по дороге. Пробовал толкать с горки - едет замечательно. Какие будут советы?

;)

 

по мемкешу все-на-одном-сервере как-то так http://stackoverflow.com/a/195833/3168644

 

Не понимаю Вашего сарказма.

 

К самому memcache у меня вопросов нет, он работает.

С ним как минимум работает другой сайт НЕ Prestashop !!!

 

А преста уверенно уходит спать ...

 

Вот отсюда и вопрос ...

 

Собственно повторюсь, если нужны конфиги, apache или php я покажу ...

Link to comment
Share on other sites

Не понимаю Вашего сарказма.

 

К самому memcache у меня вопросов нет, он работает.

С ним как минимум работает другой сайт НЕ Prestashop !!!

 

А преста уверенно уходит спать ...

 

Вот отсюда и вопрос ...

 

Собственно повторюсь, если нужны конфиги, apache или php я покажу ...

 

давайте я поясню, если вы не понимаете, судя по соседнему вашему топику (AllowOverride), проблемы ваши в том что граната не в тех руках и к престе имеют отношение такое же как мой пример к балету (если вдруг балерина за рулем будет).

 

Если у вас "зависает Апач" то первым делом смотрят в логи того зоопарка что установлен и определяют причину.

Мемкеш сервер у престы в бэкофисе прописан? Памяти под все это хватает? Не проще админа нанять?

Link to comment
Share on other sites

Не хочется с Вами спорить, Вы же наверное гуру и никогда не лажаете ...

В предыдущем посте мной была допущена явная и грубая ошибка, что было самостоятельно найдено и исправлено.

На счет Вашего намека на уровень развития, найдите мои предыдущие посты и сделайте свои собственные выводы ...

На мега знания я не претендую, но считаю что не совсем дурак ...

 

То что возможно что то не донастроено, это факт.

 

По существу

1. Мемкеш в бекофисе включен и прописан

2. Памяти пока хватает, т.к. из выделенных 256 Мб выедается до 50Мб, не успевает в него налится, apache начинает тупить

3. В зоопарке обычных логов(access), не дебаг логов, апач делает отлуп клиенту и начинает страницы отдавать через раз.

Link to comment
Share on other sites

Не хочется с Вами спорить, Вы же наверное гуру и никогда не лажаете ...

В предыдущем посте мной была допущена явная и грубая ошибка, что было самостоятельно найдено и исправлено.

На счет Вашего намека на уровень развития, найдите мои предыдущие посты и сделайте свои собственные выводы ...

На мега знания я не претендую, но считаю что не совсем дурак ...

 

То что возможно что то не донастроено, это факт.

 

По существу

1. Мемкеш в бекофисе включен и прописан

2. Памяти пока хватает, т.к. из выделенных 256 Мб выедается до 50Мб, не успевает в него налится, apache начинает тупить

3. В зоопарке обычных логов(access), не дебаг логов, апач делает отлуп клиенту и начинает страницы отдавать через раз.

 

 

ну так а в логах ошибок что?  

я далеко не мега гуру, просто блин, судя по всему там на серваке наворочено (насколько я помню) - апач проксирует апач? В таких случаях говорят "месье знает толк...", если ты сам все это собирал, то спасение утопающего, сам знаешь.

 

Отвлеченно: нафига там вообще апач? если ты с барского плеча можешь 256 отдать под мемкэш, значит железо развитое, nginx + php и все будет летать и так.

 

Короче тему не развиваю, может и правда кто-то сподобится разобраться 

Link to comment
Share on other sites

При включении в магазине memcahe в error логах Apache

[Sat Feb 15 12:15:18 2014] [error] [client IP] client denied by server configuration: /usr/local/www/apache22/data/shop/index.php

А в error логах php

preg_replace(): Compilation failed: invalid range in character class at offset 24 in /usr/local/www/apache22/data/shop/classes/Tools.php on line 1079

Есть подозрение  что php начинает глючить.

 

Еще одна поправка, за обратным прокси висит несколько ПК на которые он ссылается.

Так вот когда магазин начинает лагать (при включении кеширования), так же начинают лагают и остальные виртуалхосты на других ПК. При этом видно что в мемкеш что то пишется, и у него еще есть куда писать.

 

Так же паралельно с memcache работает xcache (поключен к php через *.ini).

Предполагалось что xcache кеширует только php, а memcache запросы в БД. (возможно я заблуждаюсь) ...

 

Пробовал в магазине включать только xcache, без memcache, что бы один модуль обрабатывал все кеширование, но ситуация аналогичная, отключение xcache (т.е. остается только memcache) результата не дает.

 

Я не исключаю того варианта что как то плохо влияет проброс, но другой сайт (не prestashop) с пробросом и включенными xcache и memcache чудесно летает и кеши работают.

Link to comment
Share on other sites

)) теперь?

т.е. мы только теперь заглянули в логи, но продолжаем взывать к Великому Макаронному Монстру, ну жди ответа, чо, я бы заглянул в этот самый "server configuration", но у тебя видимо радикально иной подход к решению задач

Link to comment
Share on other sites

Вот даже не знаю что вам на это сказать ...

Ответить хочется только матом.

 

Для тех кто в танке ...

 

1. Мемкеш, работает т.к. к нему подключен другой сайт

2. С выключенным мемкешом магазин и хост работает нормально.

3. С включеным мемкешом, начинает тупить (большая нагрузка на CPU httpd) и в итоге web сервер отваливается, в логах сообщения показанные выше.

 

Как возможно проверить, посмотреть почему подобное происходит?

 

Уважаемый SergeyH если у вас нет конструктивных предложений, то не стоит спамить в эту тему и напрягать свой мозг...

  • Like 1
Link to comment
Share on other sites

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

 

Но можно конечно и  дальше играть в игру "у меня есть барабан, лошадка и синий флаг. Будет ли завтра дождь?", это весело, но быстро надоедает. 

Link to comment
Share on other sites

Верите или нет, но я престу, что 1.4, что 1.5 устанавливал на десятки разных серверов, но всегда при включенном APC или memcached сайт начинал жутко тупить и сжирать всю оперативку...апача причем не на одном сервере не было вообще..

 

Однако при настройке сайта на шаред хостинге типа jino и ему подобных, все работало замечательно, руки растут откуда надо у меня...но причину я так и не понял из-за чего у меня все глючит, а на шаред хостинге нет...конфиги мемкеша и apc кеша были стандартными...

 

В своем случае я думаю что для нормальной работы мемкеша и apc кеша стандартных настроек не достаточно и плюс к тому должен еще как то специфически быть настроенным конфиг php и nginx'а...

Edited by Kerm (see edit history)
  • Like 1
Link to comment
Share on other sites

Из опыта скажу что 90% людей кто ставит престу, это небольшие интернет-магазины куда товар заносится ручками и для таких людей не нужен memcached или apc кеш, достаточно настроить на сервере связку php-fpm+nginx, и арендовать VPS сервер стоимостью 1200-1700р в месяц, не меньше двух гигов оперативки и SSD диск и все будет классно, для особых энтузиастов можно поставить модуль cache manager и настроить cloudflare...

 

P.S.: Ну и не забываем отключать в престе не нужные модули, модули сбора статистики и выводить модули только на тех страницах которых они действительно нужны.

  • Like 1
Link to comment
Share on other sites

Kerm 

Собственно что и хотелось изначально услышать.

Есть у других проблемы подобные моей или нет?

А оказаыватся что есть и я такой не один.

 

 

приведу пример как делают адекватные представители человечества - берут за яйца того кто все это настраивал или если настраивал ты, прячешь их подальше

 

Придется за яйца брать себя.

Вопрос за какое яйцо начинать себя брать, за левое (php5.4) или за правое (Apache22).

Из стандартных логов не понятно почему наступает тупняк web сервера.

 

 

Может кто знает или подскажет каков должен быть/рекомендован php.ini и конфиг virtualhost ?

Link to comment
Share on other sites

Я боюсь Вы не совсем понимаете логигу работы memcached и апача, тогда бы понимали что апач с мемкешем вообще не как не связан...тем более запись в virtualhost...

Edited by Kerm (see edit history)
Link to comment
Share on other sites

 

memcached — связующее программное обеспечение, реализующее сервис кэширования данных в оперативной памяти на основе парадигмы хеш-таблицы.

С помощью клиентской библиотеки (для C/C++RubyPerlPHPPythonJavaCSharp/.Net и др.) позволяет кэшировать данные в оперативной памяти множества доступных серверов. Распределение реализуется путем сегментирования данных по значению хэша ключа по аналогии с сокетами хэш-таблицы. Клиентская библиотека, используя ключ данных, вычисляет хэш и использует его для выбора соответствующего сервера. Ситуация сбоя сервера трактуется как промах кэша, что позволяет повышать отказоустойчивость комплекса за счет наращивания количества memcached серверов и возможности производить их горячую замену.

В API memcached есть только базовые функции: выбор сервера, установка и разрыв соединения, добавление, удаление, обновление и получение объекта, а также Compare-and-swap. Для каждого объекта устанавливается время жизни, от 1 секунды до бесконечности. При исчерпании памяти более старые объекты автоматически удаляются. Для PHP также есть уже готовые библиотеки PECL для работы с memcached, которые дают дополнительную функциональность.

  • Like 1
Link to comment
Share on other sites

Я боюсь Вы не совсем понимаете логигу работы memcached и апача, тогда бы понимали что апач с мемкешем вообще не как не связан...тем более запись в virtualhost...

 

Я с Вами абсолютно согласен, что мемкеш не имеет отношения к apache.

 

Тут даже вопрос не про мемкеш, а про любой кеш магазина, APC, xcache ведет себя аналогично.

Т.е. при выборе xcache либо APC сайт начинает тупить аналогично как при использовании memcache.

 

Собственно если Apache не при чем, тогда остается php.

Каких то рекомендаций по настройке php для магазина я тоже не встречал.

 

Но есть проблема, и хотелось бы ее решить ...

 

Повторюсь что установлено:

1. ОС Freebsd8.4 Stable

2. Последние версии apache22, mysql и php5.4

3. демон (сервер) memcacheD висит на другом IP НЕ локально

4. pecl-memcache и pecl-mamcacheD

 

Собственно php.ini дефолтный, особых изменений я в нем не делал, для freebsd брал php.ini.minimal

Link to comment
Share on other sites

Я тебе выше писал что наличие memcached не ускоряет сайт, а повышает его отказоустойчивость, вполне возможно что сайт будет работать медление, но стабильнее при высоких нагрузках. Для memcached нужно дофига оперативки...так же погугли переделку хранения сессий при установленном memcached в php.ini

 

Может там в настройках чего то...например часто такое бывает что указывают кол-во процессов, а после указывают объем занимаемой памяти в оперативке и указывают типа 300мб, а на самом деле этот параметр означает кол-во выделяемой оперативки для каждого процесса...и того если процессов 512 умножаем на 300..и получается не хило..(это я к примеру, не помню уже конфиг мемкеша)

Edited by Kerm (see edit history)
Link to comment
Share on other sites

В шапке сайта появилась ошибка Warning: preg_replace(): Compilation failed: invalid range in character class at offset 24 in /virt/homes/buty/htdocs/classes/Tools.php on line 1081

Кеширование отключено. Нашел эту строку $str = preg_replace('/[^a-zA-Z0-9\s\'\:\/\[\]-\pL]/u', '', $str); что означает эта ошибка? Кто-нибудь может помочь в этом вопросе?

Link to comment
Share on other sites

Могу ошибаться, но возможно это связано с тем что сервер не настроен под кодировку UTF-8...

 

в терминале команда locale что выдает?

 

 

PS.: Наличие \pL говорит о том что это preg_replace для юникод кодировки...у меня просто то же прописано в этом файле и все прекрасно пашет..

Edited by Kerm (see edit history)
Link to comment
Share on other sites

  • 4 months later...

К вопросу.... APC prestashop 1.6 настройка тормоза и лаги

Сам недавно только разобрался...

НЕ используйте memcached если у вас один сервер физически.

Использование APC эффективно НО APC нуждается в настройке, иначе из за недостаточно выделенной памяти и начинаются все эти чудеса с лагами.

Конфиг APC на Debian /etc/php5/conf.d/20-apc.ini в нём у меня такие строки:

 

extension=apc.so
apc.enabled=1
apc.shm_segments=1
apc.shm_size=128
apc.cache_by_default=0
apc.filters="+site"

 

APC в данном случае работает только для "site" (apc.filters="+site")  где site это сайт virtualhost он же в

/etc/apache2/sites-enabled/

 

где documentroot структура такова:

 

#       /var/sites/

#       |
#       |-- site/www/index.php
#       |
#       |-- site2/www/index.php
#       |
#       |-- site3/www/index.php
#       |          

Данные настройки являются ОБЯЗАТЕЛЬНЫМИ для нормальной работы APC остальные настройки по вкусу и потребностям.

128Мб кэша для prestashop 1.6 пока вполне достаточно (apc.shm_size=128). Не советую увеличивать просто на всякий случай.

В аттаче файл для мониторинга и отладки, кидайте в диру с магазином
предварительно изменив:

defaults('ADMIN_USERNAME','admin');
defaults('ADMIN_PASSWORD','yourpass');

и по адресу http://your-shop.com/apc.php смотрим на APC

тут подробнее: http://site-made.ru/drupal/nastroyka-apc-keshirovanie-v-php

УДАЧИ !

apc.php

Edited by metacreo (see edit history)
Link to comment
Share on other sites

  • 2 weeks later...

С грамотно настроенным nginx+php-fpm всякие apc, memcached, xcache и т.д. полная не нужная хрень..

согласен ! только предпочитаю apache и php без fpm , так как эта хрень тоже не нужна

  • Like 1
Link to comment
Share on other sites

С грамотно настроенным nginx+php-fpm всякие apc, memcached, xcache и т.д. полная не нужная хрень..

 

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

 

Не совсем с Вами согласен ...

 

Думаю что на высоких нагрузках, кеш достаточно достойно позволит разгрузить сервер, дисковую систему  и т.д.

На мелких магазинах с низкой посещаемость наверное за глаза будет достаточно и верно настроенного web сервера и php.

Link to comment
Share on other sites

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

 

Не совсем с Вами согласен ...

 

Думаю что на высоких нагрузках, кеш достаточно достойно позволит разгрузить сервер, дисковую систему  и т.д.

На мелких магазинах с низкой посещаемость наверное за глаза будет достаточно и верно настроенного web сервера и php.

Всё дело в железе сервера. Например на слабых машинах и на средненьком хостинге кэш будет эфективен. На вполне современных -- бесполезен и даже будет замедлять работу движка особенно при плохой настройке php-рашрений для кэширования.

Edited by metacreo (see edit history)
  • Like 1
Link to comment
Share on other sites

Если надо просто лучше, проще, привычнее и удобнее то nginx-front и apache-back+mod_php, если надо быстрее то nginx + php-fpm, php-fpm довольно быстр, потребляет достаточно мало памяти. Apc для локального кэша, memcached для сетевого...Единственно какой то прям мощной прибавки от APC практически не как не заметишь, там от силы на 2-3% производительность повыситься, а на определенных конфигурациях и со стандартными его настройками может наоборот производительность понизиться.

 

Разработчики же в свою очередь могли встроить разные системы кэширования для ускорения работы сайта на медленных шаред хостингах. Нередко именно большинство людей сидящих именно на шаред хостингах или слабых vps начинают заморачиватся устанавливая и настраивая разные системы кеширования, пробуя разные конфигурации программ чтобы выжить из их слабого сервера еще капли производительности и не понимая что для чего используют. Например memcached используют на очень посещаемых ресурсах и соответственно хороших серверах с тучей оперативки для повышения стабильности и отказоустойчивости сервера, но выйгрыш от него ты почувствовать при большой посищалке и нагрузке на сервер, а в холостую работающий сайт на шаред хостинге или слабом vps только медленние работать от этого начнет..можешь проверить с memcached и без быстроту работы сайта. Даже включение KKK в престе ухудшает работу сайта, медление начинает сайт открываться, уменьшается количество запросов которые сервер может обработать за определенное взятое время..

 

Да и большую производительность престе дадут модули кэширующие запросы к базе, т.к. у престы могут быть весьма длинные и сложные запросы к ней..так же замена модуля фильтра стандартного на более производительный, т.к. стандартный очень грузит систему, уже при 10к + товарах с 100к комбинациями даже на быстром сервере все тормозить будет..

Edited by Kerm (see edit history)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...