Solução de problemas de montagem /tmp completa para o Adobe Commerce

Este artigo fornece uma solução para quando a montagem do /tmp estiver cheia, o site pode estar inativo e você não pode executar SSH em um nó.

Produtos e versões afetados

  • Adobe Commerce 2.3.0 - 2.3.6-p1, 2.4.0 - 2.4.2

Problema

A montagem /tmp pode resultar em vários sintomas possíveis, incluindo os seguintes erros:

  • SQLSTATE[HY000]: Erro geral: 3 Erro ao gravar arquivo
  • Código de erro: 28
  • Não há mais espaço no dispositivo (28)
  • erro session_start(): falha: sem espaço no dispositivo
  • ERRO 1 (HY000): não é possível criar/gravar no arquivo '/tmp/
  • Erro de SQL: 3, SQLState: HY000
  • Erro geral: 1021 Disco cheio (https://experienceleague.adobe.com/tmp?lang=pt-BR)
  • Não é possível acessar o nó via SSH:
    bash: não é possível criar arquivo temporário para here-document: sem espaço no dispositivo
  • errno: 28 "Não há espaço disponível no dispositivo"
  • mysqld: disco com gravação completa '/tmp'
  • [ERRO] mysqld: disco cheio (https://experienceleague.adobe.com/tmp?lang=pt-BR)
  • SQLSTATE[HY000]: erro geral: 1 Não é possível criar/gravar no arquivo '/tmp/'
  • SQLSTATE[HY000]: erro geral: 23 recursos insuficientes ao abrir o arquivo '/tmp/'
  • Errcode: 24 "Muitos arquivos abertos"
  • Erro recebido: 23: recursos insuficientes ao abrir o arquivo

Etapas a serem reproduzidas:

Para verificar se a montagem /tmp está cheia, no switch CLI para /tmp e execute o seguinte comando:

 df -h

Resultado esperado:

Menos de 80%.

Resultado real:

Em torno de 100%.

Causa

A montagem /tmp tem muitos arquivos, o que pode ser causado por:

  • Consultas SQL incorretas gerando tabelas temporárias grandes e/ou muitas.
  • Serviços gravando no diretório /tmp.
  • Backups/despejos de banco de dados deixados no diretório /tmp.

Solução

Há coisas que você pode fazer para liberar espaço uma vez, e há práticas recomendadas que impediriam \tmp de ficar cheio.

Verificar e liberar inodes

Verifique se há inodes disponíveis suficientes. Para fazer isso, execute o seguinte comando:

df -i

A saída seria semelhante ao seguinte:

Filesystem Inodes   Used   Free Use% Mounted on
/dev/nvme2n1 655360    1695  653665    1% /data/mysql

Verifique se % de uso é <70%. Os nós estão correlacionados com os arquivos. Se você remover arquivos da partição, liberará inodes.

Verificar e liberar espaço de armazenamento

Há vários serviços que podem estar salvando arquivos em /tmp.

Verificar e liberar espaço no MySQL

Siga as instruções em O espaço em disco do MySQL é insuficiente no Adobe Commerce na infraestrutura de nuvem > Verificar e liberar espaço de armazenamento em nossa base de dados de suporte.

Verificar Elasticsearch heapdumps

WARNING
Os despejos de pilha contêm informações de registro que podem ser valiosas para investigar problemas. Considere armazená-los em um local separado por, pelo menos, 10 dias.

Remover despejos de pilha (*.hprof) usando o shell do sistema:

find /tmp/*.hprof -type f -delete

Se você não tiver permissões para excluir arquivos criados por outro usuário (neste caso, Elasticsearch), mas perceber que os arquivos são grandes, crie um tíquete de suporte para lidar com eles.

Verificar despejos/backups do banco de dados

WARNING
Geralmente, os backups do banco de dados são criados para uma finalidade. Se não tiver certeza se o arquivo ainda é necessário, considere movê-lo para um local separado em vez de excluí-lo.

Verifique /tmp para arquivos .sql ou .sql.gz e limpe-os. Eles podem ter sido criados por ece-tools durante o backup ou ao criar manualmente despejos de banco de dados usando a ferramenta mysqldump.

Práticas recomendadas

Para evitar problemas com o /tmp cheio, siga estas recomendações:

  • Não use MySQL para pesquisa. O Elasticsearch para pesquisa geralmente elimina a necessidade da maioria das criações pesadas de tabelas temporárias. Consulte Configurar o Adobe Commerce para usar o Elasticsearch na documentação do desenvolvedor.

  • Evite executar a consulta SELECT em colunas sem índices, pois isso consome uma grande quantidade de espaço temporário em disco. Você também pode adicionar os índices.

  • Crie um cron para limpar /tmp executando o seguinte comando na CLI:

    code language-bash
    sudo find /tmp -type f -atime +10 -delete
    

Leitura relacionada

O espaço em disco do MySQL é insuficiente na infraestrutura de nuvem do Adobe Commerce em nossa base de dados de conhecimento de suporte.

recommendation-more-help
8bd06ef0-b3d5-4137-b74e-d7b00485808a