한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

Guia do Lag em Jogos › L11 Disco

Disco cheio Disk full

ID da causa dk-full · Responsável principal Infraestrutura de servidores (Equipe de infraestrutura) · Também envolvidos Infraestrutura de banco de dados (Equipe de infraestrutura), Desenvolvimento do servidor (Equipe de desenvolvimento)

Abrir o card interativo, com figuras e simulações →

Quando logs e dumps se acumulam e o disco enche, as escritas falham e, se o código não estiver preparado para isso, o servidor cai.

Por quê Logs, dumps e arquivos temporários se acumulam até 100% → Efeito A escrita falha. Sem tratamento de erro, crash; com tratamento, falha ao salvar → Na tela Desconexão, rollback do progresso

Sintomas
Desconexão, Ação perdida / rollback
Fatores
Paralisação
Quem é afetado
Servidor inteiro
Quando
Quanto mais tempo ligado
Responsável
Responsável principal Infraestrutura de servidores (Equipe de infraestrutura) · Também envolvidos Infraestrutura de banco de dados (Equipe de infraestrutura), Desenvolvimento do servidor (Equipe de desenvolvimento)
O que fazer (Equipe de desenvolvimento)
Tratar falhas de escrita com nova tentativa de salvamento e alerta (sem deixar o processo cair), reduzir logs e dumps desnecessários.
O que fazer (Equipe de infraestrutura)
Servidores/SO: fazer rotação de logs, criar alerta de espaço em disco, separar os discos de logs e de dados. Servidores de BD: monitorar se o log de transações do BD (WAL, binlog) está acumulando por replicação parada ou backup de log que não rodou.
No gráfico
Subida lenta · Uso do disco
Onde olhar
Ver o uso no df -h e o uso de inodes no df -i, e procurar erros ENOSPC nos logs do servidor e do BD. No BD, ver slots com active em false no pg_replication_slots do PostgreSQL, o número e o tamanho dos arquivos no SHOW BINARY LOGS do MySQL, o log_reuse_wait_desc no sys.databases do SQL Server e, no RDS, o FreeStorageSpace
Confirma se
O uso sobe de forma constante ao longo de vários dias, o momento em que chega a 100% coincide com o crash ou com as falhas de salvamento, e o log registra ENOSPC
Descarta se
Espaço de sobra, mas a escrita falha: outra causa, como permissão ou limite de tamanho de arquivo
Como verificar
Ferramentas de infra (sem precisar do código do jogo)
Saiba mais
O log de transações do BD (WAL, binlog etc.) não é apagado e continua crescendo se uma réplica para ou se um backup de log deixa de rodar. Quando esse disco enche, todas as escritas do BD param, e salvamentos e trocas falham todos de uma vez.

Fontes

  1. write(2) — Linux manual page Linux man-pages
    Sem espaço no dispositivo, a escrita falha com o erro ENOSPC
  2. Monitoring Disk Usage (PostgreSQL Documentation) PostgreSQL
    Se o disco do WAL enche, o servidor do BD pode encerrar com panic
  3. Log-Shipping Standby Servers (PostgreSQL Documentation) PostgreSQL
    O slot de replicação não apaga o WAL até a réplica recebê-lo e pode encher o espaço do pg_wal (limite com max_slot_wal_keep_size)
  4. Troubleshoot a full transaction log (SQL Server Error 9002) Microsoft SQL Server
    Com o log cheio, o BD só aceita leitura e não permite alterações; backup de log que não rodou, atraso de replicação e transações longas são causas comuns que impedem a limpeza do log, e o que está bloqueando aparece em log_reuse_wait_desc no sys.databases
  5. df(1) — Linux manual page coreutils
    Uso por sistema de arquivos; -i: uso de inodes (o padrão mostra blocos)
  6. pg_replication_slots (PostgreSQL Documentation) PostgreSQL
    active: se o slot está transmitindo (streaming) agora; wal_status: se o WAL retido pelo slot passou de max_wal_size
  7. SHOW BINARY LOGS Statement MySQL
    Lista dos arquivos de log binário do servidor e tamanho de cada arquivo (File_size)
  8. Amazon CloudWatch metrics for Amazon RDS AWS
    FreeStorageSpace: espaço de armazenamento livre na instância do BD

Veja também

Mesma camada: L11 Disco

Mesmo sintoma (Desconexão) em outras camadas

Ver o card interativo, com figuras e simulações