Dépannage du montage /tmp complet pour Adobe Commerce
Cet article fournit une solution pour le cas où le montage /tmp est saturé, où le site est en panne et où vous ne pouvez pas effectuer de SSH sur un nœud.
Produits et versions concernés
- Adobe Commerce 2.3.0 - 2.3.6-p1, 2.4.0 - 2.4.2
Problème
Le montage /tmp étant saturé, divers symptômes peuvent se produire, notamment les erreurs suivantes :
- SQLSTATE[HY000] : Erreur générale : 3 Erreur lors de l'écriture du fichier
- Code d'erreur : 28
- Pas d'espace restant sur l'appareil (28)
- error session_start(): failed: No space left on device
- ERREUR 1 (HY000) : impossible de créer/écrire dans le fichier '/tmp/
- Erreur SQL : 3, SQLState : HY000
- Erreur générale : 1 021 Disque plein (https://experienceleague.adobe.com/tmp?lang=fr)
- Impossible d’accéder au nœud via SSH:
bash: impossible de créer un fichier temporaire pour here-document: Il ne reste plus d'espace sur l'appareil - errno : 28 « Aucun espace restant sur l'appareil »
- mysqld : le disque est en pleine écriture '/tmp'
- [ERROR] mysqld : disque plein (https://experienceleague.adobe.com/tmp?lang=fr)
- SQLSTATE[HY000] : erreur générale : 1 impossible de créer/écrire dans le fichier '/tmp/'
- SQLSTATE[HY000] : Erreur générale : 23 ressources insuffisantes lors de l'ouverture du fichier '/tmp/'
- Code d’erreur : 24 « Trop de fichiers ouverts »
- Erreur reçue : 23 : ressources insuffisantes lors de l’ouverture du fichier
Procédure à suivre :
Pour vérifier si le montage /tmp est plein, dans l’interface de ligne de commande, passez à /tmp et exécutez la commande suivante :
df -h
Résultat attendu :
Moins de 80 %.
Résultat réel :
Environ 100 %.
Cause
Le montage /tmp comporte trop de fichiers, ce qui peut être dû aux éléments suivants :
- Requêtes SQL incorrectes générant des tables temporaires volumineuses et/ou trop nombreuses.
- Services écrivant dans le répertoire
/tmp. - Sauvegardes/vidages de base de données laissés dans le répertoire
/tmp.
Solution
Il y a des choses que vous pouvez faire pour libérer de l'espace une fois, et il y a des pratiques exemplaires qui empêcheraient les \tmp d'être pleines.
Vérifier et libérer des nœuds
Assurez-vous qu’il y a suffisamment d’inodes disponibles. Pour cela, exécutez la commande suivante :
df -i
La sortie ressemblerait à ce qui suit :
Filesystem Inodes Used Free Use% Mounted on
/dev/nvme2n1 655360 1695 653665 1% /data/mysql
Vérifiez que le pourcentage d’utilisation est < 70 %. Les nœuds sont corrélés aux fichiers. Si vous supprimez des fichiers de la partition, vous libérez des inodes.
Vérifier et libérer de l'espace de stockage
Plusieurs services peuvent enregistrer des fichiers dans /tmp.
Vérifier et libérer de l'espace MySQL
Suivez les instructions de la section L’espace disque MySQL est faible sur Adobe Commerce sur l’infrastructure cloud > Vérifier et libérer de l’espace de stockage dans notre base de connaissances du support.
Vérifier les vidages de tas d’Elasticsearch
Supprimez les vidages de tas (*.hprof) à l’aide du shell système :
find /tmp/*.hprof -type f -delete
Si vous ne disposez pas des autorisations nécessaires pour supprimer les fichiers créés par un autre utilisateur (dans ce cas, Elasticsearch), mais que vous constatez que les fichiers sont volumineux, veuillez créer un ticket d’assistance pour les gérer.
Vérifier les sauvegardes/vidages de bases de données
Recherchez /tmp fichiers .sql ou .sql.gz et nettoyez-les. Ils peuvent avoir été créés par ece-tools pendant la sauvegarde ou lors de la création manuelle de vidages de base de données à l'aide de l'outil mysqldump.
Bonnes pratiques
Pour éviter tout problème lié au remplissage du /tmp, suivez ces recommandations :
-
N’utilisez pas MySQL pour la recherche. Elasticsearch for search élimine généralement la nécessité de créer des tables temporaires volumineuses. Voir Configuration d’Adobe Commerce pour utiliser Elasticsearch dans notre documentation destinée aux développeurs.
-
Évitez d’exécuter la requête
SELECTsur des colonnes sans index, car cela consomme une grande quantité d’espace disque temporaire. Vous pouvez également ajouter les index. -
Créez un cron pour nettoyer les
/tmpen exécutant la commande suivante dans l’interface de ligne de commande :code language-bash sudo find /tmp -type f -atime +10 -delete
Lecture connexe
L’espace disque MySQL est faible sur Adobe Commerce sur les infrastructures cloud dans notre base de connaissances d’assistance.