OpenClaw Consumindo Muita Memória RAM

OpenClaw Consumindo Muita Memória RAM

O OpenClaw está usando muita memória e deixando seu sistema lento? Este guia mostra como diagnosticar e resolver o problema.

JavaScript heap out of memory
FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed
Process killed (OOM)
Memory usage exceeded limit

Por Que Isso Acontece?

CausaSintoma
Memory leakUso cresce sem parar
Cache sem limiteMuitos dados acumulados
Muitas conexõesCentenas de sessões abertas
Arquivos grandesPico ao processar mídia
Histórico extensoContexto de conversas muito longo

Soluções

1. Monitorar Uso de Memória

# Ver uso de memória do processo
ps aux | grep clawdbot

# Monitorar em tempo real
top -p $(pgrep -f clawdbot)

# Usar htop para visualização melhor
htop -p $(pgrep -f clawdbot)

2. Aumentar Limite de Memória do Node

# Aumentar para 4GB
export NODE_OPTIONS="--max-old-space-size=4096"

# Ou ao iniciar
node --max-old-space-size=4096 app.js

# No script de inicialização
NODE_OPTIONS="--max-old-space-size=4096" clawdbot gateway start

3. Configurar Limites de Cache

# config.yaml
cache:
  messages:
    max_size: 1000
    ttl: 3600  # 1 hora
  sessions:
    max_size: 100
  media:
    max_size: 50
    max_file_size: 10mb

4. Limpar Cache Periodicamente

# Limpar cache manualmente
clawdbot cache clear

# Ou programar limpeza
clawdbot cache clear --older-than 24h
// Limpar cache no código
setInterval(() => {
  cache.clear();
  global.gc && global.gc();  // Forçar garbage collection
}, 3600000);  // A cada hora

5. Usar Garbage Collection Manual

# Iniciar com GC exposto
node --expose-gc app.js
// Forçar GC quando necessário
if (global.gc) {
  global.gc();
}

6. Limitar Histórico de Mensagens

# Limitar contexto de conversas
conversation:
  max_history: 50  # Últimas 50 mensagens
  max_tokens: 4000
  cleanup_interval: 3600

7. Processar Mídia em Stream

// Em vez de carregar tudo na memória
// Use streams para arquivos grandes
const stream = fs.createReadStream(filePath);
stream.pipe(destination);

Diagnóstico

#!/bin/bash
echo "=== Diagnóstico de Memória ==="

echo -e "\n1. Uso atual:"
ps aux | grep clawdbot | awk '{print "PID:", $2, "MEM%:", $4, "VSZ:", $5, "RSS:", $6}'

echo -e "\n2. Memória do sistema:"
free -h

echo -e "\n3. Top processos por memória:"
ps aux --sort=-%mem | head -10

echo -e "\n4. Cache do clawdbot:"
clawdbot cache status 2>/dev/null || echo "Comando não disponível"

Problemas Relacionados

Prevenção

  • ✅ Configure limites de cache desde o início
  • ✅ Monitore uso de memória regularmente
  • ✅ Use htop ou ferramentas de profiling
  • ✅ Reinicie o serviço periodicamente (cron semanal)
  • ✅ Configure alertas de uso de memória

Próximos Passos

Se o problema persistir após essas otimizações:

  1. Considere aumentar a RAM do servidor
  2. Use um modelo mais leve (Sonnet em vez de Opus)
  3. Consulte a FAQ de Performance