Redis не выключится
В большинстве случаев, когда я перезагружаю свой сервер Ubunutu, я снова и снова получаю сообщение "Ожидание завершения работы Redis…", и оно никогда не останавливается, пока я не перезапущу принудительно. Что может вызвать это?
У меня есть http://godrb.com/ мониторинг, который продолжает работать, так что это может быть связано с этим.
4 ответа
У вас есть Redis прослушивания на интерфейс, кроме localhost
или же 127.0.0.1
? Если это так, команда stop никогда не отправляется на правильный интерфейс, так как официальный шаблон инициализации 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/.
Разговор в этом списке может решить вашу проблему:
Измените ваш скрипт инициализации, чтобы использовать '-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)