Создам всё таки тему с вопросом здесь, вместо другого форума, т.к. там тяжело отслеживать последовательность событий по моему вопросу.
Установил redis сервер, модуль redis для php, ну всё как положено.
Конфиг redis дефолтовый, но там всё вроде более менее нормально.
Пробую подключать смарт к редису, вставляю в config.php
$config["redis_host"] = "127.0.0.1";
$config["redis_port"] = "6379";
$config["redis_database"] = 0;
$config["redis_password"] = "";
Сервер запущен и слушает tcp порт.
В админке эта надоедливая надпись "You do not use any modern cache engine..." пропадает
А теперь главное, после подключения redis морда сайта и все страницы сайта, галлеры etc... грузятся адски медленно, доходит до 10-15 секунд затыка перед открытием галлеры или любой страницы.
Вырубаю redis (убираю строчки из config.php) всё работает быстро, т.е. вообще без запинок, включаю redis, все страницы жутко тормозят, именно страницы контента (индекс, категории, галлеры), ссылки на аут при этом работают быстро.
ОС GNU/Linux
Redis server v=2.6.16
phpredis 2.2.4
SmartCJ Pro V 1.50 Build 201309111005
При этом в логах redis вроде всё ок
Сервер в общем загружен не сильно, файловый кэш работает очень быстро.
Для теста убил весь файловый кеш в scj/cache, хожу по сайту открывается все моментально, без единой запинки. При этом, видно в папке scj/cache появляется кеш.
Проделываю тоже самое в redis
Иду в redis-cli делаю FLUSHALL
переключаю смарт на использование redis
Хожу по этому же сайту, страницы открываются 10-15 секунд после клика, это пипец как медленно...
Куда копать? В какую сторону двигаться? Быть может есть какойто пхп скриптик проверить скорость работы redis?
Redis - очень медленно
Re: Redis - очень медленно
Не сталкивался.
Просто добавить кей через пхп в редис быстро работает ?
Просто добавить кей через пхп в редис быстро работает ?
Don't forget to run script update
Re: Redis - очень медленно
В redis есть какой то встроенный бенчмарк, вот запустил из консоли, вроде везде миллисекунды, т.е. сам redis работает быстро, насколько я понимаю.
Code: Select all
[user@server ~]$ redis-benchmark
====== PING_INLINE ======
10000 requests completed in 0.14 seconds
50 parallel clients
3 bytes payload
keep alive: 1
99.51% <= 1 milliseconds
99.76% <= 8 milliseconds
100.00% <= 8 milliseconds
71942.45 requests per second
====== PING_BULK ======
10000 requests completed in 0.15 seconds
50 parallel clients
3 bytes payload
keep alive: 1
99.97% <= 1 milliseconds
100.00% <= 1 milliseconds
68027.21 requests per second
====== SET ======
10000 requests completed in 0.14 seconds
50 parallel clients
3 bytes payload
keep alive: 1
99.52% <= 1 milliseconds
100.00% <= 1 milliseconds
72463.77 requests per second
====== GET ======
10000 requests completed in 0.15 seconds
50 parallel clients
3 bytes payload
keep alive: 1
100.00% <= 0 milliseconds
68027.21 requests per second
====== INCR ======
10000 requests completed in 0.15 seconds
50 parallel clients
3 bytes payload
keep alive: 1
100.00% <= 0 milliseconds
67114.09 requests per second
====== LPUSH ======
10000 requests completed in 0.15 seconds
50 parallel clients
3 bytes payload
keep alive: 1
100.00% <= 0 milliseconds
66666.66 requests per second
====== LPOP ======
10000 requests completed in 0.15 seconds
50 parallel clients
3 bytes payload
keep alive: 1
100.00% <= 0 milliseconds
67567.57 requests per second
====== SADD ======
10000 requests completed in 0.15 seconds
50 parallel clients
3 bytes payload
keep alive: 1
100.00% <= 0 milliseconds
67114.09 requests per second
====== SPOP ======
10000 requests completed in 0.15 seconds
50 parallel clients
3 bytes payload
keep alive: 1
100.00% <= 0 milliseconds
66666.66 requests per second
====== LPUSH (needed to benchmark LRANGE) ======
10000 requests completed in 0.15 seconds
50 parallel clients
3 bytes payload
keep alive: 1
100.00% <= 0 milliseconds
65789.48 requests per second
====== LRANGE_100 (first 100 elements) ======
10000 requests completed in 0.27 seconds
50 parallel clients
3 bytes payload
keep alive: 1
96.35% <= 1 milliseconds
99.83% <= 2 milliseconds
100.00% <= 2 milliseconds
37313.43 requests per second
====== LRANGE_300 (first 300 elements) ======
10000 requests completed in 0.54 seconds
50 parallel clients
3 bytes payload
keep alive: 1
0.13% <= 1 milliseconds
99.21% <= 2 milliseconds
99.95% <= 3 milliseconds
100.00% <= 3 milliseconds
18621.97 requests per second
====== LRANGE_500 (first 450 elements) ======
10000 requests completed in 0.75 seconds
50 parallel clients
3 bytes payload
keep alive: 1
0.07% <= 1 milliseconds
88.48% <= 2 milliseconds
99.18% <= 3 milliseconds
99.83% <= 4 milliseconds
99.97% <= 5 milliseconds
100.00% <= 5 milliseconds
13262.60 requests per second
====== LRANGE_600 (first 600 elements) ======
10000 requests completed in 0.99 seconds
50 parallel clients
3 bytes payload
keep alive: 1
0.06% <= 1 milliseconds
0.11% <= 2 milliseconds
98.94% <= 3 milliseconds
99.69% <= 4 milliseconds
99.82% <= 5 milliseconds
99.89% <= 6 milliseconds
100.00% <= 7 milliseconds
10131.71 requests per second
====== MSET (10 keys) ======
10000 requests completed in 0.22 seconds
50 parallel clients
3 bytes payload
keep alive: 1
37.89% <= 1 milliseconds
100.00% <= 1 milliseconds
46511.63 requests per secondЯ обожаю SmartCJ

Re: Redis - очень медленно
К сожалению в php не силён, можете подсказать код?, если не затруднит =)admin wrote: Просто добавить кей через пхп в редис быстро работает ?
Я обожаю SmartCJ

Re: Redis - очень медленно
$redis = new Redis();
$redis->connect($host, $port);
$redis->select((int) $database);
$redis->set($valueID, $value, (int) $lifetime);
Самый короткий вариант, только вывод ошибок включите.
$redis->connect($host, $port);
$redis->select((int) $database);
$redis->set($valueID, $value, (int) $lifetime);
Самый короткий вариант, только вывод ошибок включите.
Don't forget to run script update
Re: Redis - очень медленно
ну и как мне этим куском кода проверить скорость redis?
где и как определять переменные $host, $port, $database?
Если бы я умел писать код на пхп, я бы здесь не писал такие вопросы, Вам не кажется?
где и как определять переменные $host, $port, $database?
Если бы я умел писать код на пхп, я бы здесь не писал такие вопросы, Вам не кажется?
Я обожаю SmartCJ

Re: Redis - очень медленно
хм... где у вас стоит редис я тоже не знаю, вам не кажется что если б я был кашпировским я б просто проясновидел сразу все ?
Если не знаете где у вас стоит это - спросите админа, покажите ему код - он сможет проверить..
Если не знаете где у вас стоит это - спросите админа, покажите ему код - он сможет проверить..
Don't forget to run script update
Re: Redis - очень медленно
Что значит где стоит редис? Я приводил выше кусок смартовского config.php из которого понятно что редис стоит на локалхосте, и работает через tcp на порту 6379, совсем не обязательно быть Анатолием Кашпировским чтоб понять это.
И что я могу проверить куском кода что Вы дали? Складывается впечатление что Вы его дали лижбы от Вас отстали...
$redis = new Redis();
$redis->connect($host, $port);
$redis->select((int) $database);
$redis->set($valueID, $value, (int) $lifetime);
Ну понятно:
Коннектимся к редису
Выбираем базу
Добавляем в кэш чтото
Что этим проверяется? Работает редис вообще или нет? Я же говорил, он работает, но работает очень медленно.
При настройке смарта на работу с редис, если зайти в redis-cli и выполнить monitor то видно там адские строки работы, SET GET и прочее..
Можно проверить время добавления в кеш и время вынимания из кеша данных, средствами php? Вот что я просил у вас.
Сам редис работает быстро, это видно из redis-benchmark который я приводил вам выше, 10000 запросов выполняется меньше чем за секунду, тут как мне кажется проблема в phpredis или в смарте.
И что я могу проверить куском кода что Вы дали? Складывается впечатление что Вы его дали лижбы от Вас отстали...
$redis = new Redis();
$redis->connect($host, $port);
$redis->select((int) $database);
$redis->set($valueID, $value, (int) $lifetime);
Ну понятно:
Коннектимся к редису
Выбираем базу
Добавляем в кэш чтото
Что этим проверяется? Работает редис вообще или нет? Я же говорил, он работает, но работает очень медленно.
При настройке смарта на работу с редис, если зайти в redis-cli и выполнить monitor то видно там адские строки работы, SET GET и прочее..
Можно проверить время добавления в кеш и время вынимания из кеша данных, средствами php? Вот что я просил у вас.
Сам редис работает быстро, это видно из redis-benchmark который я приводил вам выше, 10000 запросов выполняется меньше чем за секунду, тут как мне кажется проблема в phpredis или в смарте.
Я обожаю SmartCJ

Re: Redis - очень медленно
Ok скидывайте фтп, я в понедльник разберусь.
Don't forget to run script update
Re: Redis - очень медленно
Может кому-то будет интересно, проблема решилась после исследования поддержкой смарта и обновления скрипта.
Я обожаю SmartCJ








