Redis - очень медленно

mad
Posts: 318
Joined: Fri Nov 30, 2012 4:01 pm

Redis - очень медленно

Post by mad »

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

Установил 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?
Я обожаю SmartCJ :shock: :oops: :twisted:
admin
Site Admin
Posts: 38004
Joined: Wed Sep 10, 2008 11:43 am

Re: Redis - очень медленно

Post by admin »

Не сталкивался.
Просто добавить кей через пхп в редис быстро работает ?
Don't forget to run script update
mad
Posts: 318
Joined: Fri Nov 30, 2012 4:01 pm

Re: Redis - очень медленно

Post by mad »

В 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 :shock: :oops: :twisted:
mad
Posts: 318
Joined: Fri Nov 30, 2012 4:01 pm

Re: Redis - очень медленно

Post by mad »

admin wrote: Просто добавить кей через пхп в редис быстро работает ?
К сожалению в php не силён, можете подсказать код?, если не затруднит =)
Я обожаю SmartCJ :shock: :oops: :twisted:
admin
Site Admin
Posts: 38004
Joined: Wed Sep 10, 2008 11:43 am

Re: Redis - очень медленно

Post by admin »

$redis = new Redis();
$redis->connect($host, $port);
$redis->select((int) $database);
$redis->set($valueID, $value, (int) $lifetime);

Самый короткий вариант, только вывод ошибок включите.
Don't forget to run script update
mad
Posts: 318
Joined: Fri Nov 30, 2012 4:01 pm

Re: Redis - очень медленно

Post by mad »

ну и как мне этим куском кода проверить скорость redis?
где и как определять переменные $host, $port, $database?

Если бы я умел писать код на пхп, я бы здесь не писал такие вопросы, Вам не кажется?
Я обожаю SmartCJ :shock: :oops: :twisted:
admin
Site Admin
Posts: 38004
Joined: Wed Sep 10, 2008 11:43 am

Re: Redis - очень медленно

Post by admin »

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

Если не знаете где у вас стоит это - спросите админа, покажите ему код - он сможет проверить..
Don't forget to run script update
mad
Posts: 318
Joined: Fri Nov 30, 2012 4:01 pm

Re: Redis - очень медленно

Post by mad »

Что значит где стоит редис? Я приводил выше кусок смартовского 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 или в смарте.
Я обожаю SmartCJ :shock: :oops: :twisted:
admin
Site Admin
Posts: 38004
Joined: Wed Sep 10, 2008 11:43 am

Re: Redis - очень медленно

Post by admin »

Ok скидывайте фтп, я в понедльник разберусь.
Don't forget to run script update
mad
Posts: 318
Joined: Fri Nov 30, 2012 4:01 pm

Re: Redis - очень медленно

Post by mad »

Может кому-то будет интересно, проблема решилась после исследования поддержкой смарта и обновления скрипта.
Я обожаю SmartCJ :shock: :oops: :twisted:
Post Reply