Большую часть времени, когда я перезагружаю свой сервер Ubunutu, я снова и снова получаю сообщение «Ожидание завершения работы Redis…», и это никогда не прекращается, пока я не перезагрузлюсь принудительно. Что могло вызвать это?
у меня есть http://godrb.com/ мониторинг того, что восстановление продолжает работать, так что это может быть связано с этим.
У вас есть Redis для прослушивания интерфейса, отличного от localhost
или 127.0.0.1
? Если это так, то команда остановки никогда не отправляется на правильный интерфейс, поскольку официальный шаблон инициализации Redis не включает адрес хоста.
в /etc/init.d/redis
файлы, с которыми я работал, мне нужно было определить REDISHOST=10.150.0.18
а затем в строке 30 (ищите «выключение») добавьте аргумент хоста:
$CLIEXEC -h $REDISHOST -p $REDISPORT shutdown
Если бы вы были похожи на меня, вам требовался пароль (requirepass) в вашем redis.conf. команда redis-cli теперь не будет отвечать без пароля.
В первых нескольких строках вашего файла /etc/init.d/redis найдите CLIEXEC и измените значение по умолчанию
CLIEXEC=/usr/local/bin/redis-cli
к
CLIEXEC="/usr/local/bin/redis-cli -a <password>"
Обратите внимание на цитаты.
Когда я это сделал, мне не пришлось включать параметры -h $ REDISHOST.
См. Здесь источник идеи: https://groups.google.com/forum/#!topic/redis-db/ITtbA1S-GGg
Разговор в этот список может решить вашу проблему:
Измените свой сценарий инициализации, чтобы использовать '-a' (auth) в вызове redis-cli.
CLIEXEC = "/ usr / local / bin / redis-cli -a пароль"
Другими словами, проблема заключается в том, что вам нужно ввести пароль Redis, чтобы остановить службу. Изменение /etc/init.d/redis_port
сценарий (или любой другой сценарий инициализации, который может быть у вас) с -a password
решит это.
вы можете убить процесс Redis:
$ ps -ef|grep "redis"
# kill $(cat /var/run/redis.pid)