Tudo que é

Otimizar o Redis em um VPS Para Melhor Performance

Para otimizar o Redis em um VPS com 6 vCPUs e 12 GB de RAM rodando AlmaLinux com cPanel, a configuração deve equilibrar desempenho, eficiência de memória e estabilidade, considerando os recursos do sistema e casos de uso comuns (como cache, armazenamento de sessões ou filas de mensagens). Abaixo está um guia detalhado para uma configuração ideal do Redis, adaptada ao ambiente especificado.

1. Preparação do Sistema para Otimizar o Redis em um VPS

Antes de configurar o Redis, prepare o VPS para garantir compatibilidade e desempenho:

  • Atualize o Sistema: Execute dnf update -y para atualizar todos os pacotes, minimizando problemas de compatibilidade.
  • Instale o Redis: Use o repositório do AlmaLinux para uma instalação simples:
dnf install redis -y
systemctl enable redis
systemctl start redis

Alternativamente, para a versão mais recente, considere compilar a partir do código-fonte, mas a versão do repositório geralmente é suficiente para ambientes cPanel.

  • Integração com cPanel: O Redis pode ser instalado via “Module Installers” no cPanel para fins de cache, facilitando a integração com aplicações PHP (como WordPress ou Magento).

2. Arquivo de Configuração do Redis

O arquivo de configuração principal para otimizar o Redis em um VPS geralmente está em /etc/redis.conf (ou /etc/redis/redis.conf, dependendo da instalação). Abaixo estão as configurações recomendadas para o VPS com 6 vCPUs e 12 GB de RAM, assumindo que o Redis será usado principalmente para cache ou armazenamento de sessões em um ambiente cPanel.

Configurações Principais

Edite o arquivo /etc/redis.conf com um editor como nano ou vim. Abaixo estão os parâmetros críticos a ajustar:

Por exemplo:

nano /etc/redis.conf

ou

nano /etc/redis/redis.conf
  1. Endereço de Vinculação (Bind Address):

Padrão: bind 127.0.0.1

Recomendação: Mantenha bind 127.0.0.1 para restringir o Redis ao localhost por segurança, especialmente em ambientes cPanel onde o acesso externo geralmente não é necessário. Se for necessário acesso externo, use um IP específico e configure regras de firewall (por exemplo, via firewalld ou CSF no cPanel).

bind 127.0.0.1
  1. Porta:
  • Padrão: port 6379
  • Recomendação: Mantenha a porta padrão, a menos que seja necessário alterá-la. Ao otimizar o Redis em um VPS, certifique-se de que a porta esteja protegida por um firewall (por exemplo, permita apenas IPs específicos via CSF do cPanel).
    bash port 6379
  1. Memória Máxima:
  • Padrão: Sem limite (pode consumir toda a memória disponível).
  • Recomendação: Configure maxmemory para 70-80% da RAM disponível, reservando espaço para o sistema operacional, cPanel e outros serviços (como Apache ou MySQL). Para 12 GB de RAM, aloque cerca de 8-9 GB para o Redis:
maxmemory 8gb
  • Use maxmemory-policy para gerenciar a memória quando o limite for atingido.
  • Para cache, volatile-lru (evict chaves com tempo de expiração usando Least Recently Used) é recomendado:
maxmemory-policy volatile-lru
  1. Persistência:

O Redis suporta persistência via RDB (snapshot) e AOF (append-only file). Para cache, a persistência geralmente não é necessária, mas para armazenamento de sessões ou dados críticos, habilite uma ou ambas:

RDB: Habilite para snapshots periódicos (adequado para a maioria dos casos):

save 900 1
save 300 10
save 60 10000

Isso salva os dados a cada 900s (1 alteração), 300s (10 alterações) ou 60s (10.000 alterações).

AOF: Habilite para maior durabilidade (registra todas as operações de escrita):

bash appendonly yes
appendfsync everysec

everysec equilibra desempenho e durabilidade, escrevendo no disco a cada segundo.

  1. Utilização de CPU e Threads:

O Redis é single-threaded para a maioria das operações, mas pode usar múltiplos threads para I/O (a partir do Redis 6.0). Para 6 vCPUs, habilite threads de I/O para aproveitar os núcleos adicionais:

io-threads 4
io-threads-do-reads yes

Defina io-threads como 4 para usar 4 dos 6 vCPUs para operações de I/O, deixando 2 núcleos para o sistema operacional e outros serviços. Evite usar todos os vCPUs para evitar contenção.

  1. Otimização de Memória:

Habilite activedefrag para reduzir a fragmentação de memória, especialmente em instâncias de longa execução:

activedefrag yes
active-defrag-threshold-lower 10
active-defrag-threshold-upper 100

Use lazyfree-lazy-eviction para melhorar o desempenho durante a evicção de chaves:

lazyfree-lazy-eviction yes
lazyfree-lazy-expire yes
lazyfree-lazy-server-del yes
  1. Segurança:

Defina uma senha forte com requirepass para proteger o Redis:

requirepass sua_senha_forte

Substitua sua_senha_forte por uma senha segura e armazene-a de forma segura (por exemplo, no gerenciador de senhas do cPanel).

Habilite o cPHulk do cPanel para proteção contra força bruta e monitore o uso de recursos via “Resource Usage” no WHM.

Se o Redis for acessível externamente, configure regras de firewall para permitir apenas IPs confiáveis:

firewall-cmd --permanent --add-port=6379/tcp --zone=public
firewall-cmd --permanent --add-source=ip_confiavel --zone=public
firewall-cmd --reload
  1. Log e Monitoramento:

Configure o nível de log para notice para um equilíbrio entre informações e desempenho:

loglevel notice logfile /var/log/redis/redis.log

Monitore o desempenho do Redis usando ferramentas como redis-cli info ou integre com o monitoramento do cPanel/WHM.

3. Ajustes no Sistema Operacional

  • Limites de Arquivo: Aumente os limites de descritores de arquivo para suportar muitas conexões:
  echo "fs.file-max = 100000" >> /etc/sysctl.conf
  sysctl -p

Edite /etc/security/limits.conf para adicionar:

  redis soft nofile 65535
  redis hard nofile 65535
  • THP (Transparent Huge Pages): Desative THP para evitar latência no Redis:
  echo never > /sys/kernel/mm/transparent_hugepage/enabled
  echo never > /sys/kernel/mm/transparent_hugepage/defrag

Para tornar permanente, adicione ao /etc/rc.local ou use um script de inicialização.

4. Teste e Monitoramento

  • Após aplicar as configurações, reinicie o Redis:
  systemctl restart redis
  • Verifique o status:
  systemctl status redis
  • Use redis-cli para testar a conectividade e desempenho:
  redis-cli ping
  redis-cli info memory
  • Monitore o uso de recursos via WHM ou ferramentas externas como htop ou iotop.

5. Considerações Finais

  • Casos de Uso: Ajuste as configurações com base no uso. Para cache, priorize volatile-lru e desative AOF se a persistência não for necessária. Para sessões, habilite AOF e RDB.
  • Backup: Configure backups regulares via cPanel & WHM, especialmente se a persistência estiver habilitada.
  • Segurança: Sempre use senhas fortes e restrinja o acesso via firewall, especialmente em ambientes cPanel expostos à internet.

Essa configuração proporciona um equilíbrio entre desempenho, segurança e eficiência para um VPS com 6 vCPUs e 12 GB de RAM no AlmaLinux com cPanel. Se precisar de ajustes para um caso de uso específico, por favor, forneça mais detalhes!

THP (Transparent Huge Pages): Desative THP para evitar latência no Redis:

Para desativar o Transparent Huge Pages (THP) no AlmaLinux e evitar latência no Redis, é necessário realizar ajustes no sistema operacional. O THP pode causar picos de latência devido à forma como gerencia grandes blocos de memória, o que é prejudicial ao desempenho do Redis, especialmente em cargas de trabalho intensas. Abaixo está um exemplo prático e passo a passo para desativar o THP de forma imediata e permanente em um VPS com AlmaLinux.

Passo a Passo para Desativar o THP

1. Verificar o Status Atual do THP

Antes de desativar, confirme se o THP está habilitado:

cat /sys/kernel/mm/transparent_hugepage/enabled
cat /sys/kernel/mm/transparent_hugepage/defrag
  • A saída típica será algo como [always] madvise never ou always [madvise] never, indicando que o THP está ativo (always) ou configurado para uso seletivo (madvise).

2. Desativar o THP Temporariamente

Para desativar o THP imediatamente (até o próximo reinício do sistema), execute os seguintes comandos como root:

echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
  • Esses comandos alteram as configurações do THP para never, desativando-o completamente no sistema em execução.
  • Verifique novamente para confirmar:
  cat /sys/kernel/mm/transparent_hugepage/enabled
  cat /sys/kernel/mm/transparent_hugepage/defrag

A saída deve mostrar [never] em ambas as linhas.

3. Desativar o THP Permanentemente

Para garantir que o THP permaneça desativado após reinicializações, você pode configurar o sistema de duas maneiras: usando um script de inicialização ou ajustando os parâmetros do systemd.

Opção 1: Usar um Script de Inicialização
  1. Crie um script para desativar o THP no boot:
   nano /etc/systemd/system/disable-thp.service
  1. Adicione o seguinte conteúdo ao arquivo:
   [Unit]
   Description=Desativar Transparent Huge Pages (THP)
   After=network.target

   [Service]
   Type=oneshot
   ExecStart=/bin/sh -c "echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled && echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag"
   RemainAfterExit=yes

   [Install]
   WantedBy=multi-user.target
  1. Salve o arquivo e habilite o serviço:
   systemctl enable disable-thp.service
   systemctl start disable-thp.service
  1. Verifique se o serviço está ativo:
   systemctl status disable-thp.service
Opção 2: Ajustar Parâmetros do Kernel via GRUB
  1. Edite o arquivo de configuração do GRUB para adicionar parâmetros que desativem o THP:
   nano /etc/default/grub
  1. Adicione transparent_hugepage=never à linha GRUB_CMDLINE_LINUX. Por exemplo:
   GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=almalinux/root rd.lvm.lv=almalinux/swap rhgb quiet transparent_hugepage=never"
  1. Atualize a configuração do GRUB:
   grub2-mkconfig -o /boot/grub2/grub.cfg

Se o sistema usar EFI, o caminho pode ser /boot/efi/EFI/almalinux/grub.cfg. Verifique com:

   ls /boot/efi/EFI/
  1. Reinicie o sistema para aplicar as alterações:
   reboot

4. Verificar Após Reinicialização

Após reiniciar, confirme que o THP está desativado:

cat /sys/kernel/mm/transparent_hugepage/enabled
cat /sys/kernel/mm/transparent_hugepage/defrag

A saída deve ser [never] para ambos.

5. Testar Impacto no Redis

  • Reinicie o Redis para garantir que ele aproveite a configuração sem THP:
  systemctl restart redis
  • Monitore a latência do Redis com o comando redis-cli --latency:
  redis-cli --latency

Isso exibe estatísticas de latência. Após desativar o THP, você deve observar latências mais consistentes, especialmente sob carga.

Notas Adicionais

  • Ambiente cPanel: Certifique-se de que as alterações no sistema não interfiram com outros serviços gerenciados pelo cPanel (como Apache ou MySQL). O método acima é seguro e compatível com AlmaLinux e cPanel.
  • Monitoramento: Use ferramentas como redis-cli info ou o painel de monitoramento do WHM para verificar o desempenho do Redis após desativar o THP.
  • Segurança: Execute todos os comandos como root ou use sudo. Mantenha backups do arquivo /etc/default/grub antes de editá-lo.

Este procedimento desativa o THP de forma prática e permanente, otimizando o Redis para um VPS com AlmaLinux e cPanel, reduzindo latências e melhorando o desempenho geral. Se precisar de mais ajuda ou ajustes, por favor, informe!

[always] madvise never: o que isso indica no THP do redis?

A saída [always] madvise never ao verificar o status do Transparent Huge Pages (THP) com os comandos:

cat /sys/kernel/mm/transparent_hugepage/enabled
cat /sys/kernel/mm/transparent_hugepage/defrag

indica o estado atual da configuração do THP no sistema operacional (no caso, AlmaLinux). Essa configuração tem implicações diretas no desempenho do Redis, especialmente em termos de latência e uso de memória. Abaixo, explico o que cada parte dessa saída significa e como ela afeta o Redis, além de fornecer recomendações no contexto do seu VPS com cPanel.

Significado da Saída

  1. /sys/kernel/mm/transparent_hugepage/enabled: [always] madvise never:
  • Esta linha define quando o THP é ativado no sistema.
  • [always]: Indica que o THP está habilitado por padrão para todos os processos, a menos que explicitamente desativado. O sistema aloca automaticamente páginas de memória grandes (geralmente 2 MB) em vez de páginas padrão de 4 KB para otimizar o uso de memória.
  • madvise: Permite que aplicativos configurem o uso de THP explicitamente via chamadas madvise(). Processos que não fazem isso ainda podem usar THP devido ao always.
  • never: Seria o estado desejado para desativar completamente o THP, mas não é o caso aqui.
  1. /sys/kernel/mm/transparent_hugepage/defrag: [always] madvise never:
  • Esta linha controla a desfragmentação de memória relacionada ao THP.
  • [always]: O sistema tenta ativamente desfragmentar a memória para alocar huge pages, mesmo que isso cause sobrecarga (latência). Isso pode levar a pausas perceptíveis durante operações de desfragmentação.
  • madvise: A desfragmentação ocorre apenas para processos que explicitamente solicitam huge pages via madvise().
  • never: Desativa a desfragmentação proativa, reduzindo a sobrecarga, mas não desativa o uso de huge pages.

Impacto no Redis

O Redis é sensível à latência, e a configuração [always] para THP pode impactar negativamente seu desempenho pelos seguintes motivos:

  • Latência Aumentada: Quando o THP está configurado como always, o sistema operacional pode pausar processos (como o Redis) para realizar a alocação ou desfragmentação de huge pages. Isso causa picos de latência, que são especialmente problemáticos para aplicações como o Redis, que exigem respostas rápidas.
  • Fragmentação de Memória: Embora o THP vise otimizar o uso de memória, ele pode levar a fragmentação em cargas de trabalho intensas, como as do Redis, especialmente em um VPS com 12 GB de RAM, onde múltiplos serviços (Apache, MySQL, etc.) competem por recursos.
  • Desempenho Inconsistente: A desfragmentação ativa (always em defrag) pode introduzir pausas imprevisíveis, afetando a estabilidade do Redis em um ambiente cPanel, onde ele pode ser usado para cache ou sessões.

A recomendação oficial do Redis é desativar completamente o THP (configurando ambos os parâmetros para never) para garantir latência consistente e desempenho ideal, especialmente em servidores com recursos limitados, como o seu VPS.

Como Resolver no Contexto do Redis

Para otimizar o Redis no seu VPS com AlmaLinux e cPanel, siga os passos abaixo para desativar o THP, conforme já mencionado anteriormente, mas agora com foco na saída [always] madvise never:

1. Desativar o THP Temporariamente

Execute os seguintes comandos como root para desativar o THP imediatamente:

echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
  • Verifique a alteração:
  cat /sys/kernel/mm/transparent_hugepage/enabled
  cat /sys/kernel/mm/transparent_hugepage/defrag

A saída deve mostrar [never] para ambos, indicando que o THP está desativado.

2. Desativar o THP Permanentemente

Para garantir que o THP permaneça desativado após reinicializações, siga uma das opções abaixo:

Opção 1: Criar um Serviço systemd
  1. Crie um arquivo de serviço:
   nano /etc/systemd/system/disable-thp.service
  1. Adicione o seguinte conteúdo:
   [Unit]
   Description=Desativar Transparent Huge Pages (THP)
   After=network.target

   [Service]
   Type=oneshot
   ExecStart=/bin/sh -c "echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled && echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag"
   RemainAfterExit=yes

   [Install]
   WantedBy=multi-user.target
  1. Habilite e inicie o serviço:
   systemctl enable disable-thp.service
   systemctl start disable-thp.service
  1. Verifique o status:
   systemctl status disable-thp.service
Opção 2: Ajustar o GRUB
  1. Edite o arquivo de configuração do GRUB:
   nano /etc/default/grub
  1. Adicione transparent_hugepage=never à linha GRUB_CMDLINE_LINUX:
   GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=almalinux/root rd.lvm.lv=almalinux/swap rhgb quiet transparent_hugepage=never"
  1. Atualize o GRUB:
   grub2-mkconfig -o /boot/grub2/grub.cfg

Para sistemas EFI, o caminho pode ser /boot/efi/EFI/almalinux/grub.cfg. Verifique com:

   ls /boot/efi/EFI/
  1. Reinicie o sistema:
   reboot

3. Verificar o Impacto no Redis

  • Após desativar o THP, reinicie o Redis:
  systemctl restart redis
  • Monitore a latência do Redis:
  redis-cli --latency

Isso exibe estatísticas de latência. Com o THP desativado, você deve observar latências mais consistentes, especialmente sob carga.

  • Verifique o uso de memória e desempenho:
  redis-cli info memory

Considerações no Contexto do cPanel

  • Compatibilidade com cPanel: Desativar o THP não interfere com outros serviços gerenciados pelo cPanel (como Apache ou MySQL), mas melhora o desempenho do Redis, que pode ser usado para cache em aplicações como WordPress ou Magento.
  • Monitoramento: Use o WHM (“Resource Usage” ou “Process Manager”) para verificar o impacto da desativação do THP no desempenho geral do VPS.
  • Segurança: Execute os comandos como root ou com sudo. Faça backup do arquivo /etc/default/grub antes de editá-lo.

Resumo

A saída [always] madvise never indica que o THP está habilitado por padrão, o que pode causar latência no Redis devido à alocação e desfragmentação de huge pages. Para otimizar o Redis no seu VPS com 6 vCPUs e 12 GB de RAM, desative o THP configurando ambos os parâmetros (enabled e defrag) para never, temporariamente via /sys/kernel/mm/transparent_hugepage e permanentemente via systemd ou GRUB. Isso reduzirá latências e melhorará o desempenho do Redis em seu ambiente cPanel/AlmaLinux.

Se precisar de mais esclarecimentos ou ajuda com testes adicionais, por favor, informe!

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