Falha ao iniciar o Redis Datastore Server (Ubuntu 16.04.1 LTS)

10

Acabei de instalar o redis e ele não funciona ao tentar iniciar o serviço com o comando:

sudo service redis-server start

isso é resultado de journalctl -xe:

Subject: Unit redis-server.service has finished shutting down
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit redis-server.service has finished shutting down.
Mar 02 13:22:46 aaa-notebook systemd[1]: redis-server.service: Start request repeated too quickly.
Mar 02 13:22:46 aaa-notebook systemd[1]: Failed to start Redis Datastore Server.

e este é o resultado de systemctl status redis-server.service:

 redis-server.service - Redis Datastore Server
 Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)
 Active: inactive (dead) (Result: resources) since Kam 2017-03-02 13:22:46 WIB; 5min ago
 Process: 12120 ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf (code=exited, status=0/SUCCESS)

Mar 02 13:22:46 aaa-notebook systemd[1]: Failed to start Redis Datastore Server.
Mar 02 13:22:46 aaaaa-notebook systemd[1]: redis-server.service: Unit entered failed state.
Mar 02 13:22:46 aaa-notebook systemd[1]: redis-server.service: Failed with result 'resources'.
Mar 02 13:22:46 aaa-notebook systemd[1]: redis-server.service: Service hold-off time over, scheduling restart.
Mar 02 13:22:46 aaa-notebook systemd[1]: Stopped Redis Datastore Server.
Mar 02 13:22:46 aaa-notebook systemd[1]: redis-server.service: Start request repeated too quickly.
Mar 02 13:22:46 aaa-notebook systemd[1]: Failed to start Redis Datastore Server.
Kakashi
fonte

Respostas:

14

Eu tive o mesmo problema e não consegui encontrar uma solução funcional em nenhum lugar. Após algumas pesquisas, a seguinte correção funcionou para mim (Ubuntu 16.04)

Em /etc/systemd/system/redis.service, adicione o seguinte na [Service]seção.

Type=forking
Manolis Tsilikidis
fonte
11
Meu também, obrigado! Como você descobriu para adicionar isso? O que isso realmente faz?
Fpghost
4

Abra seu serviço usando qualquer editor.

vim /etc/systemd/system/redis.service

Olhe para a sua [Service]seção na ExecStartminha era:

ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf

Execute este comando para ver quais erros estão ocorrendo. A minha respondeu com isso:

 Fatal error, can't open config file '/etc/redis/redis.conf'

Então, acabei de atualizar essa linha para esta (onde estava meu arquivo de configuração atual)

ExecStart=/usr/local/bin/redis-server /etc/redis/6379.conf

Que é onde o redis quickstart o coloca por padrão ... :)

Kevin Upton
fonte
2

Eu enfrentei o mesmo erro. Mas, para mim, o motivo foi totalmente diferente: foi devido a um erro de digitação no meu redis.confarquivo. Corrigir isso e sudo systemctl restart redis-serverreiniciar o redis instantaneamente. É enganoso que o mesmo erro também esteja sendo lançado para este caso.

creativcoder
fonte
2

No meu caso, o diretório de log ( /var/log/redis) mencionado no /etc/redis/redis.confarquivo não estava presente

Como encontro o erro

Tentar

/usr/local/bin/redis-server /etc/redis/redis.conf

Este é o mesmo comando presente no meu /etc/systemd/system/redis.servicearquivo

ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf

Solução

1) Crie o diretório de log

sudo mkdir -p /var/log/redis

2) Conceda acesso adequado para criar e gravar logs

sudo chown redis:redis /var/log/redis

Tente iniciar o serviço novamente

sudo service redis-server start 

ou

sudo service redis start
Yogesh Yadav
fonte
1

O arquivo redis.service está ausente no diretório "/ etc / systemd / system /"

sudo nano /etc/systemd/system/redis.service

copie e cole essas linhas

[Unit]
Description=Redis In-Memory Data Store
After=network.target

[Service]
User=redis
Group=redis
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always

[Install]
WantedBy=multi-user.target

salve e feche este arquivo

Em seguida, modifique as permissões de diretório

$ sudo adduser --system --group --no-create-home redis
$ sudo chown redis:redis /var/lib/redis
$ sudo chmod 770 /var/lib/redis

próximo iniciar o servidor redis

$ sudo systemctl start redis

verifique se está rodando agora

$ sudo systemctl status redis

REFERÊNCIA: https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-redis-on-ubuntu-16-04

Rishik Rohan
fonte
0

Por favor, verifique seu redis.log. Você deve ver algo assim:

41393:M 07 Jun 17:02:19.034 # You requested maxclients of 10000 requiring at least 10032 max file descriptors.
41393:M 07 Jun 17:02:19.034 # Server can't set maximum open files to 10032 because of OS error: Operation not permitted.
41393:M 07 Jun 17:02:19.034 # Current maximum open files is 4096. maxclients has been reduced to 4064 to compensate for low ulimit. If you need higher maxclients increase 'ulimit -n'.
41393:M 07 Jun 17:02:19.034 # Can't open the append-only file: Read-only file system

Portanto, verifique os limites do seu sistema e talvez as permissões de arquivo do seu redisAOF ( /var/lib/redis/*). Para limites do sistema, aqui está um bom guia .

Thomas Schwärzl
fonte
0

Eu precisava da pasta / var / lib / redis e de um usuário e grupo redis.

Usei os conselhos https://askubuntu.com/a/981641/451682 do Kevin Upton para encontrar meus problemas: vim /etc/systemd/system/redis.servicelevei-me à /usr/local/bin/redis-server /etc/redis/redis.confresposta com a Can't chdir to '/var/lib/redis': No such file or directoryqual criei sudo mkdir /var/lib/redis.

Porém, também precisei criar o usuário e o grupo redis e colocá-lo no diretório / var / lib / redis, seguindo o https://askubuntu.com/a/918408/451682 de Rishik Rohan :

sudo adduser --system --group --no-create-home redis
sudo chown redis:redis /var/lib/redis
sudo chmod 770 /var/lib/redis

Obrigado a vocês dois!

Forma de vida alienígena
fonte
0

depois de fazer todo conf tente estes comandos

sudo systemctl daemon-reload

sudo chown redis:redis /var/lib/redis

sudo chmod 770 /var/lib/redis

E depois

sudo systemctl start redis
Susaj S Nair
fonte
0

Etapas para resolver esse problema: - + ============== + A. Defina o limite de memória em redis.conf na linha de número 566

566 maxmemory 256mb 567 maxmemory-policy allkeys-lru

B. defina a configuração de memória de confirmação excessiva do kernel do Linux como 1:

$ sudo sysctl vm.overcommit_memory = 1

ou /etc/sysctl.conf e altere para 1.

C. Reinicie o servidor redis agora.

$ systemctl restart redis

Por favor, verifique agora o status Redis.

E se o problema persistir, vá em e edite e redisponha o arquivo de serviço.

========= vi /etc/systemd/system/redis.service

Você verá assim: -

[Unidade] Descrição = Re-armazenar dados em memória na memória Após = network.target

[Serviço] Usuário = grupo raiz = raiz ExecStart = / usr / local / bin / redis-server /etc/redis/redis.conf ExecStop = / usr / local / bin / redis-cli shutdown Reiniciar = sempre

Tipo = bifurcação

[Instalação] WantedBy = multi-user.target

Altere ExecStart = / usr / local / bin / redis-server /etc/redis/redis.conf

para

ExecStart = / usr / local / bin / redis-server /etc/redis.conf

Agora, inicie o serviço redis

$ systemctl start redis

Agora o Redis começará sem dar nenhum erro.

+ ============== +

Testando o redis: -

[root @ server] # redis-cli 127.0.0.1:6379> ping Use o comando echo para ecoar uma determinada string: 127.0.0.1:6379> echo "Tecmint está testando o Redis" Você também pode definir um valor de chave usando o comando set como este: 127.0.0.1:6379> set mykey "está testando Redis" Agora veja o valor de mykey: 127.0.0.1:6379> get mykey "está testando Redis" 127.0.0.1:6379> exit [root @ server] #

Agora os redis começaram com sucesso e em execução.

+ ================== +

Obrigado e cumprimentos

Tecnologias Everdata
fonte