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
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
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.