Skip to content

Referência de Configuração ​

O Leakless é configurado através do objeto TheMattos\Leakless\Config no PHP vanilla, ou via .env / config/leakless.php no Laravel Octane.


1. Configuração no PHP Vanilla ​

Instancie o objeto Config com as opções desejadas:

php
use TheMattos\Leakless\DTOs\Config;

$config = new Config(
    maxDriftMb: 64,                     // Crescimento de memória permitido acima do baseline (MB)
    maxRssMb: null,                     // Teto de emergência absoluto (MB) contra OOM Killer (opcional)
    consecutiveViolationsThreshold: 5,  // Requisições consecutivas com violação antes de reciclar
    recycleCooldownSeconds: 10,         // Intervalo mínimo em segundos entre reciclagens do worker
    triggerGcOnBreach: true,            // Reavalia memória física após executar gc_collect_cycles()
    driftJitterPercentage: 10,          // Variação randômica para desincronizar reinicializações
    maxRequests: 1000,                  // Limite de requisições antes de reciclar o worker
    checkTransactions: true,            // Rollback automático de transações PDO abertas
    checkFileDescriptors: false,        // Inspeciona descritores de arquivos (/proc/self/fd)
    autoRecycleOnViolation: true,       // Reciclagem graciosa ao ultrapassar limites
    logViolations: true,                // Emite alertas de anomalias
    resettables: [                      // Array de classes, instâncias ou callbacks para auto-reset
        App\Services\CartSession::class,
        fn () => LegacyRegistry::$cache = [],
    ],
    ztsAware: null,                     // Ativa atribuição multithread no modo ZTS (null = auto-detectar via PHP_ZTS)
    threadToleranceMb: 2.0,             // Tolerância mínima de crescimento no ZMM da thread (MB) para atribuir drift
    unattributedViolationsThreshold: 10,// Violações consecutivas sem atribuição antes de reciclar (vazamentos C)
);

2. Variáveis de Ambiente (.env) ​

Em aplicações Laravel Octane, configure o Leakless diretamente no seu .env:

ini
LEAKLESS_ENABLED=true
LEAKLESS_MAX_DRIFT_MB=64
LEAKLESS_MAX_RSS_MB=null
LEAKLESS_CONSECUTIVE_VIOLATIONS=5
LEAKLESS_RECYCLE_COOLDOWN=10
LEAKLESS_TRIGGER_GC=true
LEAKLESS_DRIFT_JITTER=10
LEAKLESS_MAX_REQUESTS=1000
LEAKLESS_CHECK_TRANSACTIONS=true
LEAKLESS_CHECK_FILE_DESCRIPTORS=false
LEAKLESS_AUTO_RECYCLE=true
LEAKLESS_LOG_VIOLATIONS=true
LEAKLESS_ZTS_AWARE=null
LEAKLESS_THREAD_TOLERANCE_MB=2.0
LEAKLESS_UNATTRIBUTED_THRESHOLD=10

Ou publique o arquivo config/leakless.php:

bash
php artisan vendor:publish --tag="leakless-config"

3. Tabela de Referência ​

ChaveVariável de AmbientePadrãoDescrição
enabledLEAKLESS_ENABLEDtrueInterruptor mestre para ativar ou desativar o Leakless.
max_drift_mbLEAKLESS_MAX_DRIFT_MB64Crescimento relativo de memória RSS (em MB) permitido acima do baseline antes de avaliar reciclagem.
max_rss_mbLEAKLESS_MAX_RSS_MBnullTeto físico de emergência absoluto (em MB) para proteção contra o Linux OOM Killer SIGKILL.
consecutive_violationsLEAKLESS_CONSECUTIVE_VIOLATIONS5Histerese: requisições consecutivas com violação pós-GC necessárias para confirmar reciclagem.
recycle_cooldownLEAKLESS_RECYCLE_COOLDOWN10Janela de cooldown em segundos entre reciclagens por worker (evita tempestades de reinício).
trigger_gcLEAKLESS_TRIGGER_GCtrueExecuta gc_collect_cycles() e relê /proc/self/statm antes de confirmar uma violação.
drift_jitterLEAKLESS_DRIFT_JITTER10Variação percentual aplicada ao max_drift_mb para desincronizar reinicializações entre workers.
max_requestsLEAKLESS_MAX_REQUESTSnullLimite de requisições por worker antes de reciclar (null = ilimitado).
check_transactionsLEAKLESS_CHECK_TRANSACTIONStrueAudita e executa rollback automático em transações PDO abertas ao final da requisição.
check_file_descriptorsLEAKLESS_CHECK_FILE_DESCRIPTORSfalseInspeciona /proc/self/fd para detectar arquivos ou sockets de rede esquecidos abertos.
auto_recycleLEAKLESS_AUTO_RECYCLEtrueDispara automaticamente a parada graciosa do worker quando limites ou corrupções persistirem.
log_violationsLEAKLESS_LOG_VIOLATIONStrueEmite logs diagnósticos quando transações órfãs ou anomalias de estado forem capturadas.
resettables—[]Lista de class-strings, objetos ou callbacks para resetar automaticamente ao final de cada requisição.
zts_awareLEAKLESS_ZTS_AWAREnullAtiva atribuição thread-safe no modo ZTS (null para auto-detectar via PHP_ZTS).
thread_tolerance_mbLEAKLESS_THREAD_TOLERANCE_MB2.0Limiar mínimo de crescimento no ZMM (MB) para atribuir drift de RSS do processo à thread.
unattributed_violations_thresholdLEAKLESS_UNATTRIBUTED_THRESHOLD10Checagens consecutivas de drift sem atribuição antes de reciclar (protege contra leaks C).

Released under the MIT License.