2013-02-26 16 views
24

Ich möchte den Redis-Server stoppen und es geht einfach weiter und weiter. Ich verwende redis-2.6.7Beenden Sie den Redis-Server. Weder Abschaltung noch Stop funktioniert

Überprüfen Sie, ob es ausgeführt wird:

redis-server 

Er sagt: "... binden: Adresse bereits in Gebrauch", so dass es bereits ausgeführt wird.

Ich habe

versucht
redis-cli 
redis 127.0.0.1:6379> shutdown 

Es hängt nur und nichts passiert. Ich breche aus und überprüfe, ja, es läuft noch.

ich versucht habe

redis-server stop 

ich "kann nicht geöffnet Konfigurationsdatei 'stop'"

Ich habe versucht:

killall redis-server 

noch läuft.

Der Grund, dass ich es stoppen möchte ist, dass es nur hängt, wenn ich versuche, einen Wert über Python zu setzen oder zu erhalten. Also dachte ich, dass ich es neu starten würde.

EDIT:

keine Befehle scheinen von redis-cli zu arbeiten. Ich habe auch INFO ausprobiert und es hängt einfach.

+0

Neugierig, warum jemand diese schließen abstimmt? – user984003

+0

Weil es keine SO-Programmierfrage ist, sondern SuperUser. –

+3

Ich sehe viele Fragen, die sich mit redis auf stackoverflow beschäftigen, einschließlich einer anderen, die speziell nach dem Herunterfahren des Redis-Servers fragt. Das ist die Frage, die mir die Ideen gab, die ich ausprobieren sollte (und die nicht funktionierten). Nicht sicher, was für die Programmierung relevanter sein könnte. Vielleicht weißt du nicht, redis? Wie auch immer, ich hoffe, dass jemand hilft, weil ich völlig bei etwas feststecke, das einfach hängen bleibt. – user984003

Antwort

25

Ich habe es endlich geschafft.

die PID des Prozesses (dies war in Webfaction):

ps -u my_account -o pid,rss,command | grep redis 

Dann

> kill -9 the_pid 

konnte ich dieses Problem reproduzieren:

Start redis-server 
Then break it using Pause/Break key 

Jetzt hängt es und es wird nicht normal heruntergefahren. Auch das Python-Programm, das versucht, einen Schlüssel zu setzen/zu bekommen, hängt. Um dies zu vermeiden: Schließen Sie das Fenster nach dem Start des Redisters. Es läuft jetzt normal.

+1

Sie könnten das erste Bit eingrenzen, um redis einfacher mit einem grep zu finden ps -u my_user -o pid, rss, command | grep redis 54577 812 redis-server *: 6379 –

+0

Um den Server wieder zu starten, musste ich auch die PID-Datei löschen, in meinem Fall ist es /var/run/redis_6379.pid – Alex2php

5

Der normale Weg, dies zu tun ist, eine Verbindung zu einem Client wie redis-cli herzustellen und den Befehl "shutdown" auszuführen. Ich habe einige Probleme beim Herunterfahren festgestellt, da redis-server nicht über die Berechtigung zum Bearbeiten der db-dump-datei (RDB) verfügt, bevor sie beendet wird. Dann bleibt redis gestartet und du musst den Prozess mit kill -9 pid beenden. Aber das ist kein Redis-Problem, wie Sie vielleicht wissen.

Beispiel für dieses Problem:

# User requested shutdown... 
[16560] 10 Sep 11:21:17.672 * Saving the final RDB snapshot before exiting. 
[16560] 10 Sep 11:21:17.672 # Failed opening .rdb for saving: Permission denied 
[16560] 10 Sep 11:21:17.672 # Error trying to save the DB, can't exit. 
+0

Wie löse ich dieses Problem? – alexandrecosta

1

ich denke, Shutdown-Befehl kann Abschaltung der redis Server. Vielleicht seltsam, nach dem getippten Befehl shutdown, der Redis-Cli nicht beendet. Inzwischen hat der Server heruntergefahren.

15

Shutdown Redis Server$ redis-cli -a password -p 6379 shutdown

starten Redis Server$ sudo service redis_6379 start

Es funktioniert auf Ubuntu Server 14.04 x86 Redis v2.8.15.

+2

oder einfach: 'redisis-cli shutdown' – dimpiax

0

Wenn der Server auth erfordern die Einrichtung ...

Die redis Start-und Shutdown-Skript nutzt redis-cli, die das Herunterfahren bedeutet nicht ohne Auth passieren und der Server wird in einer Schleife hängen für redis warten herunterfahren, was ohne auth niemals passieren wird.

So im Shutdown-Skript müssen Sie

$CLIEXEC -p $REDISPORT shutdown 

zu

$CLIEXEC -a 'authpassword' -p $REDISPORT shutdown 

ändern, um Ihrem redis Dienst zum Herunterfahren ohne Aufwand zu ermöglichen.

0

Verwenden Sie den folgenden Befehl, um den ausgeführten Rediserver-Prozess zu beenden.

ps aux |grep redis 

Dies wird alle laufenden Prozesse für Redis-Server auflisten. Dann können Sie den folgenden Befehl verwenden, die redis verarbeitet

sudo kill <pid for redis> 

sample here

sudo kill 7229 //for the above sample. 
0

Der beste Weg, Check pid von redis geöffnet Port zu töten:

lsof -i:<redis-port> 

für Standard redis Port

lsof -i:6379 

kill -9 <pid> 
1

Dies ist möglicherweise eine sehr wichtige Anmerkung für einige Leute, die dies lesen. Wenn Ihr Redis anscheinend nicht auf ein Herunterfahren reagiert. ÜBERPRÜFEN SIE DIE LOGS.

Sie können so etwas wie dies sagen:

Apr 24 00:48:54 redis[828]: Received SIGTERM, scheduling shutdown... 
Apr 24 00:48:54 redis[828]: User requested shutdown, saving DB... 
Apr 24 00:55:37 redis[828]: DB saved on disk 

Vielleicht ist Ihre DB mehr GB oder Zehn GBs in diesem Fall wird es Zeit zum Herunterfahren nehmen. Wenn Sie stattdessen alle Schlüssel löschen möchten, gibt es einen besseren Weg als das Herunterfahren.FLUSHALL

0
start redis: $REDIS_HOME/src/redis-server 
stop redis: $REDIS_HOME/src/redis-cli shutdown 

$REDIS_HOME wo Sie/extrahiert redis installiert haben.

1

Ich kann das Problem nicht mehr reproduzieren, aber shutdown NOSAVE half mir, als ich mit redis spielen war und konnte es nicht heruntergefahren bekommen:

redis-cli 
127.0.0.1:6379> shutdown 
(error) ERR Errors trying to SHUTDOWN. Check logs. 
127.0.0.1:6379> shutdown NOSAVE 
not connected> 
Verwandte Themen