Servidores Web

Descubra se Cache Redis Está Funcionando Corretamente no Seu Servidor Almalinux

Como saber se o cache Redis está funcionando corretamente no meu servidor almalinux? Essa resposta está bem aqui e voc~e pode fazer todos os testes para ver se tudo está ocorrendo bem.

Para verificar se o Redis está funcionando corretamente no seu servidor AlmaLinux, você pode realizar uma série de testes para confirmar que o serviço está ativo, respondendo a comandos e funcionando conforme esperado. Abaixo está um guia passo a passo para verificar o status do Redis:

1. Verificar o status do serviço Redis

O primeiro passo é confirmar se o serviço Redis está em execução:

bash

sudo systemctl status redis

  • O que observar:
    • Se o serviço estiver ativo, você verá algo como Active: active (running) com detalhes sobre o processo.
    • Se não estiver ativo, pode aparecer inactive, failed ou dead. Isso indica que o Redis não está funcionando e você precisará investigar (veja a seção de erros abaixo).

2. Testar a conectividade com o Redis

Use o cliente redis-cli para verificar se o servidor Redis está respondendo:

bash

redis-cli ping

  • Resultado esperado: Se o Redis estiver funcionando, o comando retornará PONG.
  • Erro comum: Se aparecer Could not connect to Redis at 127.0.0.1:6379: Connection refused, o Redis não está rodando ou está configurado para ouvir em outro host/porta.

3. Verificar processos em execução

Confirme se o processo do Redis está ativo:

bash

ps aux | grep redis

  • O que procurar: Você deve ver uma linha referente ao redis-server, indicando que o servidor está em execução. Exemplo: textredis 12345 0.1 0.2 51234 4096 ? S 18:00 0:00 /usr/bin/redis-server 127.0.0.1:6379
  • Se não houver processos do Redis, ele não está em execução.

4. Testar comandos básicos no Redis

Conecte-se ao Redis usando redis-cli e execute alguns comandos para verificar a funcionalidade:

bash

redis-cli

Dentro do prompt do redis-cli, teste:

bash

SET mykey "teste"

GET mykey

  • Resultado esperado:
    • SET deve retornar OK.
    • GET mykey deve retornar “teste”.
  • Se esses comandos falharem, pode haver problemas com permissões, configuração ou armazenamento de dados.

5. Verificar configurações do Redis

Confira o arquivo de configuração do Redis (geralmente em /etc/redis/redis.conf) para garantir que está configurado corretamente:

bash

sudo cat /etc/redis/redis.conf | grep -v '^#' | grep -v '^$'

  • Pontos importantes a verificar:
    • Porta: Certifique-se de que port 6379 (ou outra porta configurada) está correta.
    • Bind address: Verifique se bind 127.0.0.1 ou outro endereço está configurado adequadamente. Se for 0.0.0.0, o Redis está acessível remotamente (confirme se isso é intencional).
    • Diretório de dados: Veja a linha dir (ex.: dir /var/lib/redis/) para garantir que o diretório existe e tem permissões corretas: bashls -ld /var/lib/redis O diretório deve pertencer ao usuário redis (ex.: drwxr-xr-x redis redis).

6. Verificar logs do Redis

Os logs podem indicar problemas ou confirmar que o Redis está funcionando bem. Verifique os logs:

bash

sudo cat /var/log/redis/redis.log

  • O que procurar:
    • Mensagens como Server initialized ou Ready to accept connections indicam que o Redis iniciou corretamente.
    • Erros como Permission denied ou Failed to bind sugerem problemas de permissões ou configuração de rede.

Você também pode usar journalctl para logs do systemd:

bash

sudo journalctl -u redis

7. Testar conexões remotas (se configurado)

Se o Redis está configurado para aceitar conexões remotas (não apenas 127.0.0.1), teste a partir de outra máquina:

bash

redis-cli -h <IP_DO_SERVIDOR> -p 6379 ping

  • Substitua <IP_DO_SERVIDOR> pelo endereço IP do servidor.
  • Certifique-se de que o firewall permite a porta (padrão: 6379): bashsudo firewall-cmd --list-ports Se necessário, abra a porta: bashsudo firewall-cmd --permanent --add-port=6379/tcp sudo firewall-cmd --reload

8. Verificar uso de recursos

Confira se o Redis está consumindo recursos esperados (CPU, memória):

bash

top -p $(pidof redis-server)

  • O Cache Redis geralmente usa pouca CPU em repouso. Se estiver consumindo muito, pode indicar uma carga alta ou configuração incorreta (ex.: muitos clientes conectados).

9. Testar persistência (se habilitada)

Se o Redis está configurado para persistência (RDB ou AOF), verifique se os arquivos de dados estão sendo criados:

bash

ls -l /var/lib/redis/

  • Para RDB, procure por dump.rdb.
  • Para AOF, procure por appendonly.aof.
  • Verifique se os arquivos estão sendo atualizados (data/hora recente) e se têm permissões corretas.

10. Solução de problemas comuns

Se o Redis não estiver funcionando corretamente, considere:

  • Serviço não inicia:
    • Verifique erros nos logs (/var/log/redis/redis.log ou journalctl -u redis).
    • Confirme permissões no diretório de dados: bashsudo chown redis:redis /var/lib/redis sudo chmod 755 /var/lib/redis
  • Conexão recusada:
    • Verifique se o Redis está escutando na porta correta (netstat -tuln | grep 6379).
    • Confirme se o firewall ou SELinux está bloqueando a conexão. Para desativar o SELinux temporariamente (teste): bashsudo setenforce 0
  • Memória insuficiente:
    • O Cache Redis pode falhar se o servidor estiver sem memória. Verifique com: bashfree -m
    • Ajuste a configuração maxmemory no redis.conf, se necessário.

Finalizando a parte de o Redis funcionando no servidor.

Se todos os passos acima retornarem resultados esperados (PONG, serviço ativo, comandos funcionando, logs sem erros), o Redis está funcionando corretamente no seu servidor AlmaLinux. Caso encontre problemas, os logs e as verificações de configuração/portas geralmente apontam a causa.

Se precisar de ajuda com um erro específico ou configuração avançada, forneça mais detalhes (como mensagens de erro ou trechos do arquivo de configuração) para uma análise mais precisa!

O Aviso WARNING Memory overcommit must be enabled

A mensagem de aviso que você viu no log do Redis, WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition…, indica que o parâmetro de memória overcommit do sistema operacional não está configurado adequadamente. O Redis depende do recurso de “memory overcommit” do Linux para realizar operações como salvamento em segundo plano (background save) e replicação, especialmente em condições de pouca memória. Sem isso, o Redis pode falhar, mesmo que a memória não esteja completamente esgotada.

Abaixo está um guia passo a passo para resolver esse problema no seu servidor AlmaLinux:

1. Entender o problema

O aviso está relacionado ao parâmetro vm.overcommit_memory do kernel Linux. O Redis recomenda que ele seja configurado como 1 para permitir que o sistema aloque mais memória do que está fisicamente disponível, o que é necessário para operações como o fork de processos durante salvamentos (RDB) ou replicação. Por padrão, em muitos sistemas, esse valor é 0 ou 2, o que pode causar falhas no Redis.

2. Verificar a configuração atual

Para confirmar o valor atual de vm.overcommit_memory, execute:

bash

cat /proc/sys/vm/overcommit_memory

  • Valores possíveis:
    • 0: Heurístico (padrão, pode causar problemas com o Redis).
    • 1: Sempre permite overcommit (recomendado para o Redis).
    • 2: Não permite overcommit além da memória física + swap.

Se o valor for 0 ou 2, você precisa alterá-lo.

3. Habilitar o memory overcommit

Para resolver o aviso, configure vm.overcommit_memory para 1. Siga estes passos:

a) Alteração temporária (válida até o próximo reboot)

Execute o comando abaixo como root:

bash

sudo sysctl vm.overcommit_memory=1

Isso ativa o overcommit imediatamente, mas a configuração será perdida após reiniciar o servidor.

b) Alteração permanente

Para garantir que a configuração persista após reinicializações, edite o arquivo de configuração do sysctl:

  1. Abra o arquivo /etc/sysctl.conf ou um arquivo em /etc/sysctl.d/ (ex.: /etc/sysctl.d/99-redis.conf): bashsudo nano /etc/sysctl.d/99-redis.conf
  2. Adicione a linha: textvm.overcommit_memory=1
  3. Salve o arquivo e aplique a configuração: bashsudo sysctl -p /etc/sysctl.d/99-redis.conf

4. Verificar a configuração aplicada

Confirme que a alteração foi aplicada:

bash

cat /proc/sys/vm/overcommit_memory

O resultado deve ser 1.

5. Reiniciar o Redis

Para garantir que o Redis reconheça a nova configuração, reinicie o serviço:

bash

sudo systemctl restart redis

6. Verificar os logs do Redis

Após reiniciar, verifique os logs do Redis para confirmar que o aviso desapareceu:

bash

sudo cat /var/log/redis/redis.log

Ou use o journalctl:

bash

sudo journalctl -u redis

Procure por mensagens de erro ou avisos. Se o aviso sobre vm.overcommit_memory não aparecer mais, o problema foi resolvido.

7. Considerações adicionais

  • Memória disponível: Certifique-se de que o servidor tem memória suficiente (RAM + swap) para suportar as operações do Redis. Verifique com: bashfree -m Se não houver swap configurado e a memória for limitada, considere adicionar swap: bashsudo fallocate -l 1G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile Para tornar o swap permanente, adicione ao /etc/fstab: text/swapfile none swap sw 0 0
  • Configuração do Redis: Verifique se o parâmetro maxmemory está definido no arquivo /etc/redis/redis.conf para limitar o uso de memória do Redis, especialmente em servidores com recursos limitados. Exemplo: textmaxmemory 512mb maxmemory-policy allkeys-lru Reinicie o Redis após alterar: bashsudo systemctl restart redis
  • SELinux: Em sistemas AlmaLinux, o SELinux pode interferir. Se você suspeitar de problemas relacionados, teste desativando temporariamente: bashsudo setenforce 0 Se isso resolver, configure o SELinux adequadamente ou mantenha-o desativado (não recomendado para produção).

8. Testar o Redis

Após aplicar as alterações, teste se o Redis está funcionando corretamente:

bash

redis-cli ping

Deve retornar PONG. Você também pode testar operações de salvamento:

bash

redis-cli bgsave

Verifique se o comando completa sem erros e se o arquivo dump.rdb é criado em /var/lib/redis/ (ou no diretório configurado).

9. Monitorar o comportamento

Monitore o Redis por um tempo para garantir que não haja falhas durante operações de salvamento ou replicação:

bash

redis-cli info

Procure por métricas como used_memory e rdb_last_bgsave_status para confirmar que os salvamentos estão funcionando.

Conclusão

Configurar vm.overcommit_memory=1 resolve o aviso e previne falhas relacionadas a salvamentos ou replicação no Redis. A alteração é simples e segura para a maioria dos casos, mas certifique-se de monitorar o uso de memória do servidor. Se o problema persistir ou você encontrar outros erros nos logs, compartilhe os detalhes (como mensagens de erro específicas ou configurações do redis.conf) para uma análise mais detalhada.

Artigos relacionados

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Botão Voltar ao topo