Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Настройка REDIS

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Как избежать потерь данных?
Kot137
Отправлено: 26 Февраля, 2017 - 12:22:05
Post Id



Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Окт. 2016  


Помог: 0 раз(а)




Здравствуйте!
Есть ubuntu 16.04 х64, на виртуальном сервере, установлен REDIS, использую его в PHP 7. REDIS использую как КЭШ оболочку MySQL – в нем хранятся характеристики 7-10тыс объектов, в том числе географические координаты. При заполнении множества координат с помощью GEOADD, после нескольких тысяч записей начинают пропадать объекты занесенные вначале. Т.е.
PHP:
скопировать код в буфер обмена
  1. $m->GEORADIUS($redis_index.'all_obj',$coordy, $coordx, $radius, "m", []);
выдает, например не 4тыс точек, а 2тыс.
В redis.conf установил: maxmemory 734003200 однако, процесс сервера использует всего 35Mb. (На сервере общий объем RAM - 1Gb, занято всего 40%).
Поставил maxmemory-policy noeviction – чтобы поймать его на нехватке памяти, но он не ругается, что памяти нет. Просто по-тихому удаляет, даже не ключи, а записи из множества ключа.
При перезапуске REDIS имею:
CODE (htmlphp):
скопировать код в буфер обмена
  1. root@127262-10001:~# redis-server /etc/redis/redis.conf                                                     4902:C 26 Feb 13:03:54.517 # systemd supervision requested, but NOTIFY_SOCKET not found
  2. 4902:M 26 Feb 13:03:54.518 * Increased maximum number of open files to 10032 (it was originally set to 1024).
  3. 4902:M 26 Feb 13:03:54.519 # Creating Server TCP listening socket 127.0.0.1:6379: bind: Address already in use
  4.  
(Не знаю, что это значит и не уверен, что это связанно с проблемой)

Может в REDIS ограничение по максимальному объему одного Key?
Подскажите, как грамотно настроить REDIS чтобы избежать потерь данных?
 
 Top
Kot137
Отправлено: 26 Февраля, 2017 - 16:22:10
Post Id



Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Окт. 2016  


Помог: 0 раз(а)




Разобрался. Ошибка была совсем в другом месте: я сам херил часть точек в множестве. В процедуре обновления удалял точку затем создавал новую и переаутал долготу с широтой:
PHP:
скопировать код в буфер обмена
  1. $m->ZREM($redis_index . 'all_obj', $row['id']);
  2. $m->GEOADD($redis_index . 'all_obj', $row['coordy'], $row['coordx'], $row['id']);

В итоге часть объектов просто не добавлялось, т.к. координаты выходили за диапазон.

2) Написал тест, который показал, что значительное увеличение объема данных хранимых в REDIS не приводит к потерям и сбоям.

3) systemd supervision requested, but NOTIFY_SOCKET not found - вылечил, поменяв в конфиге на supervised auto

4) с Increased maximum number of open files to 10032 (it was originally set to 1024). я так и не разобрался, если кто знает напишите, что это?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Администрирование БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB