Solução de problemas de montagem /tmp completa para o Adobe Commerce
Este artigo fornece uma solução para quando a montagem /tmp estiver cheia, o site puder estar inativo e você não conseguir aplicar SSH a um nó.
Descrição description
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ó por 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 Falta de recursos 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.
Resolução resolution
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 o% 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 > Verifique e libere espaço de armazenamento em nossa base de dados de suporte.
Verificar dumps de pilha do Elasticsearch
AVISO
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
AVISO
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 grandes criações de tabelas temporárias. Consulte Configurar o Adobe Commerce para usar o Elasticsearch na documentação do desenvolvedor.
- Evite executar a consulta
SELECTem 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
/tmpexecutando o seguinte comando na CLI:sudo find /tmp -type f -atime +10 -delete