3 pontos por xguru 3 시간 전 | Ainda não há comentários. | Compartilhar no WhatsApp
  • Ferramenta de injeção de falhas para testar, criando intencionalmente situações de falha como esgotamento de conexões/espera por locks/deadlocks/OOM/falta de disco
  • Suporta vários tipos de carga de trabalho, de transações ociosas/rollbacks/deadlocks/arquivos temporários/encerramento de backends até explosão de WAL/inchaço de tabelas
  • Algumas cargas podem ir além de esgotar max_connections, atraso de replicação e degradação de desempenho de armazenamento, podendo causar PANIC ou reinicialização completa da instância PostgreSQL
  • Pode ser executado diretamente como imagem Docker ou ter cargas individuais importadas no código Go; é obrigatório usar context e limite de tempo para evitar execução infinita
  • Cargas de trabalho suportadas
    • idle transactions: mantém transações abertas sem fazer nada, atrapalhando a limpeza (VACUUM) e inflando tabelas/índices
    • rollbacks: envia consultas erradas de propósito para gerar erros e aumentar a contagem de rollbacks
    • waiting transactions: uma sessão bloqueia a tabela, conexões seguintes ficam enfileiradas esperando e acabam atingindo o limite de conexões (max_connections), impedindo novas conexões
    • deadlocks: coloca duas transações em um impasse em que cada uma quer o lock da outra
    • temporary files: força a ordenação de dados maiores que a memória (work_mem) para despejar arquivos temporários no disco (desaparece se work_mem aumentar)
    • terminate backends: encerra aleatoriamente sessões/consultas em execução à força com pg_terminate_backend() etc.
    • failed connections: prende todas as conexões para que outros clientes não consigam se conectar. Esgota o limite de max_connections
    • fork connections: envia apenas consultas curtas em uma nova conexão a cada vez, fazendo o Postgres criar processos filhos em excesso
    • backend-killer: uma sessão continua acumulando prepared statements e inflando a memória até provocar OOM-kill e reiniciar a instância inteira
    • slot-bloat: um replication slot que ninguém consome retém WAL e enche pg_wal até esgotar o disco, levando a instância a entrar em PANIC
    • wal-flood: usa workers paralelos de UPDATE para inundar o WAL e criar atraso de replicação/pressão de I/O (uma versão mais “visível” de slot-bloat; o esgotamento de disco depende do ambiente)
    • bloat-churn: infla tabelas com UPDATE paralelo mais rápido que o autovacuum, mas após parar pode ser revertido com VACUUM FULL/pg_repack/REINDEX CONCURRENTLY
  • Não execute sem entender completamente; deve ser usado apenas para testes
  • Licença BSD-3-Clause

Ainda não há comentários.

Ainda não há comentários.