Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Проблема с Redis
цитата
11/12/15 в 21:07
 Wskeal
Всем привет.

Проблема такая. На сервере стоит Free BSD, nginx, php-fpm.
Сервер для сиджетубов на смартах.

Поставили Redis и php5-redis.

При старте redis сначала всё работает норм:
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 3.0.5 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 32201
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'

32201:M 11 Dec 15:07:13.558 # Server started, Redis version 3.0.5
32201:M 11 Dec 15:07:13.558 * The server is now ready to accept connections on port 6379
32201:M 11 Dec 15:12:14.075 * 1000 changes in 300 seconds. Saving...
32201:M 11 Dec 15:12:14.077 * Background saving started by pid 35032
35032:C 11 Dec 15:12:15.142 * DB saved on disk
32201:M 11 Dec 15:12:15.192 * Background saving terminated with success
32201:M 11 Dec 15:17:16.019 * 1000 changes in 300 seconds. Saving...
32201:M 11 Dec 15:17:16.020 * Background saving started by pid 37936
37936:C 11 Dec 15:17:17.638 * DB saved on disk
32201:M 11 Dec 15:17:17.731 * Background saving terminated with success
32201:M 11 Dec 15:22:18.062 * 1000 changes in 300 seconds. Saving...
32201:M 11 Dec 15:22:18.063 * Background saving started by pid 40828
40828:C 11 Dec 15:22:20.630 * DB saved on disk
32201:M 11 Dec 15:22:20.677 * Background saving terminated with success
32201:M 11 Dec 15:27:21.028 * 1000 changes in 300 seconds. Saving...
32201:M 11 Dec 15:27:21.029 * Background saving started by pid 43693
43693:C 11 Dec 15:27:23.837 * DB saved on disk
32201:M 11 Dec 15:27:23.844 * Background saving terminated with success
32201:M 11 Dec 15:32:24.099 * 1000 changes in 300 seconds. Saving...
32201:M 11 Dec 15:32:24.100 * Background saving started by pid 46592
46592:C 11 Dec 15:32:27.313 * DB saved on disk
32201:M 11 Dec 15:32:27.316 * Background saving terminated with success
32201:M 11 Dec 15:37:28.038 * 1000 changes in 300 seconds. Saving...

Файла дампа редиса растет, всё работает шустро.

Затем вылазит такое, через несколько часов, может и через 3 часа, а может и через 10, от чего зависит не знаю.

2201:M 11 Dec 17:29:57.013 * 1000 changes in 300 seconds. Saving...
32201:M 11 Dec 17:29:57.018 * Background saving started by pid 13562
13562:C 11 Dec 17:30:21.193 * DB saved on disk
32201:M 11 Dec 17:30:21.303 * Background saving terminated with success
32201:M 11 Dec 17:31:09.325 * DB saved on disk
32201:M 11 Dec 17:31:09.705 # Failed opening .rdb for saving: Permission denied
32201:M 11 Dec 17:32:10.071 * 50000 changes in 60 seconds. Saving...
32201:M 11 Dec 17:32:10.075 * Background saving started by pid 15064
15064:C 11 Dec 17:32:10.075 # Failed opening .rdb for saving: Permission denied
32201:M 11 Dec 17:32:10.175 # Background saving error
32201:M 11 Dec 17:32:16.011 * 50000 changes in 60 seconds. Saving...
32201:M 11 Dec 17:32:16.014 * Background saving started by pid 15162
15162:C 11 Dec 17:32:16.014 # Failed opening .rdb for saving: Permission denied
32201:M 11 Dec 17:32:16.114 # Background saving error
32201:M 11 Dec 17:32:22.052 * 50000 changes in 60 seconds. Saving...
32201:M 11 Dec 17:32:22.055 * Background saving started by pid 15178
15178:C 11 Dec 17:32:22.056 # Failed opening .rdb for saving: Permission denied
32201:M 11 Dec 17:32:22.156 # Background saving error
32201:M 11 Dec 17:32:28.089 * 50000 changes in 60 seconds. Saving...
32201:M 11 Dec 17:32:28.092 * Background saving started by pid 15197
15197:C 11 Dec 17:32:28.092 # Failed opening .rdb for saving: Permission denied

При этом файл дампа весит 18байт и туда ничего не пишется, время изменения не меняется.

Redis работает с владельцем Redis, у директории дампа и самого файла дампа тоже владелец Redis.


Пробовали с админами менять владельцев на root, никаких ошибок не возникает, но через несколько часов размер файла дампа тоже становится 18байт, а редис продолжает писать куда-то.
И админ написал вот такое: "хм, что то странное с файловой системой - в файле ключей на сервере были остатки редиса %)"
Админ вычистил, если снова запустить от рута, то через какое-то время снова пишет туда же.

В общем ощущение такое, что через какое-то время redis забывает что ему нужно писать сюда /var/db/redis
и начинает пробовать писать в другое место, но так как прав рута нет, то не может писать, а если запустить редис от рута, то пишет дамп в другое место.

Проверили в дц файловую систему, всё ок, переустановили редис, снова та же беда. С админами уже неделю решаем эту проблему, перезапуская редис постоянно.

Сейчас сменили в конфиге папку дампа с /var/db/redis на /home/redis/
Уже сомневаюсь что поможет конечно.


Подскажите что это может быть и куда копать.
цитата
11/12/15 в 22:41
 johndoe2
Сюда писать пробовал https://github.com/antirez/redis/issues https://www.reddit.com/r/redis/ https://groups.google.com/forum/#!forum/redis-db ?

Версию ниже текущей пробовал?

В debug mode собирать пробовал?

strace-ом смотреть, куда он пытается писать, пробовал?

Код ведь открытый. Допиши в нужных местах логирование, пересобери и жди пока клюнет.
цитата
11/12/15 в 23:32
 Stek
Попробуйте через docker поставить. Может там заработает нормально.
У меня редис для celery используется, сейчас его размер базы посмотрел - 145 байт smail101.gif Но в общем то все задания выполнены , поэтому база и пустая.

Цитата:
И админ написал вот такое: "хм, что то странное с файловой системой - в файле ключей на сервере были остатки редиса %)"

Вообще это и странно. Или очень кривая сборка редиса или что то с файловой системой.
цитата
11/12/15 в 23:41
 Wskeal
johndoe2 писал:
Сюда писать пробовал https://github.com/antirez/redis/issues https://www.reddit.com/r/redis/ https://groups.google.com/forum/#!forum/redis-db ?

Версию ниже текущей пробовал?

В debug mode собирать пробовал?

strace-ом смотреть, куда он пытается писать, пробовал?

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


в гуглгруппы отписал сегодня, пока тихо.

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

Если со сменой директории не прокатит, буду пробовать, спасибо.
цитата
12/12/15 в 11:40
 rickdeckard
а зачем вы пишете в файл?

> 35032:C 11 Dec 15:12:15.142 * DB saved on disk

отключите запись в файл нафиг. редис хорош только как инмемори хранилище
цитата
12/12/15 в 14:13
 Wskeal


всмысле? он по дефолту пишет дамп в файл, который указывается в конфиге. Он по-другому по-моему и не работает.
цитата
12/12/15 в 14:31
 S_Flash
дамп в файл он пишет по времени указанному в конфиге. Можно напрячь его постоянно строчить на диск, а можно и послабить..
цитата
12/12/15 в 15:23
 Wskeal


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

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

Проблема в том, что когда возникают эти ошибки, то смарты вообще не кэшируются, нужно либо выключать redis из конфигов смарта(тогда будет использоваться обычный файловый кэщ), либо рестартить redis, чтобы снова всё работало норм.
цитата
12/12/15 в 19:23
 Evial
Запись на диск можно отключить закомментировав в конфиге строки которые начинаются на save.

Но как писали выше лучше посмотреть с помощью strace чем процесс занимается когда глючить начинает.
цитата
12/12/15 в 19:43
 Wskeal



спасибо, админ не ищет сложных путей и закомментировал icon_smile.gif

по времени ответа сервера на внутренних страниц на смаровских сиджетубах вроде отличий не вижу, время ответа то же, что из дампом.

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

Размер дампа доходил максимум наверное до 250мб, не видел чтоб он больше был когда-то вообще.
цитата
12/12/15 в 20:12
 Stek
Wskeal писал:
то эта нагрузка переносится с диска в память?

Редис вообще держит по возможности все в памяти. Диск только для хранения данных.
цитата
13/12/15 в 01:23
 Evial
Запись на диск нужна только для того чтобы при ребуте редиса/сервака он загрузил кеш с диска, а не генерил заново.
цитата
15/12/15 в 08:36
 taj
А внешние коннекты закрыты? может хулиганы smail101.gif


Эта страница в полной версии