Fehlerbehebung für die vollständige Einbindung von /tmp für Adobe Commerce
Dieser Artikel bietet eine Lösung für den Fall, dass die /tmp
-Bereitstellung voll ist, die Site möglicherweise ausgefallen ist und Sie nicht in der Lage sind, SSH in einen -Knoten zu installieren.
Betroffene Produkte und Versionen
- Adobe Commerce 2.3.0 - 2.3.6-p1, 2.4.0 - 2.4.2
Problem
Wenn die /tmp
voll ist, kann dies zu einer Reihe möglicher Symptome führen, darunter die folgenden Fehler:
- SQLSTATE[HY000]: Allgemeiner Fehler: 3 Fehler beim Schreiben der Datei
- Fehlercode: 28
- Kein Platz auf dem Gerät (28)
- error_session_start(): fehlgeschlagen: Kein Speicherplatz mehr auf dem Gerät
- ERROR 1 (HY000): Datei '/tmp/ kann nicht erstellt/geschrieben werden
- SQL-Fehler: 3, SQLState: HY000
- Allgemeiner Fehler: 1021 Festplatte voll (https://experienceleague.adobe.com/tmp?lang=de)
- Zugriff auf den Knoten über SSH nicht möglich:
bash: Temporäre Datei für here-document kann nicht erstellt werden: Kein Speicherplatz mehr auf dem Gerät - errno: 28 „No space left on device“
- mysqld: Datenträger ist voll schreibend '/tmp'
- [ERROR] mysqld: Datenträger voll (https://experienceleague.adobe.com/tmp?lang=de)
- SQLSTATE[HY000]: Allgemeiner Fehler: 1 In Datei '/tmp/' kann nicht erstellt/geschrieben werden
- SQLSTATE[HY000]: Allgemeiner Fehler: 23 von Ressourcen beim Öffnen der Datei '/tmp/'
- Fehlercode: 24 „Too Many Open Files“
- Fehler empfangen: 23: Nicht genügend Ressourcen beim Öffnen der Datei
Schritte zur Reproduktion:
Um zu überprüfen, wie voll die /tmp
ist, wechseln Sie in der CLI zu /tmp
und führen Sie den folgenden Befehl aus:
df -h
Erwartetes Ergebnis:
Weniger als 80 %.
Tatsächliches :
Rund 100 %.
Ursache
Die /tmp
-Bereitstellung enthält zu viele Dateien, was folgende Ursachen haben kann:
- Fehlerhafte SQL-Abfragen, die große und/oder zu viele temporäre Tabellen erzeugen.
- Dienste schreiben in das
/tmp
. - Datenbank-Backups/-Dumps, die im
/tmp
verbleiben.
Lösung
Es gibt Dinge, die Sie tun können, um einmal Speicherplatz freizugeben, und es gibt Best Practices, die verhindern würden, dass \tmp
voll wird.
Überprüfen und Freigeben von Knoten
Stellen Sie sicher, dass ausreichend Knoten verfügbar sind. Führen Sie dazu den folgenden Befehl aus:
df -i
Die Ausgabe würde in etwa wie folgt aussehen:
Filesystem Inodes Used Free Use% Mounted on
/dev/nvme2n1 655360 1695 653665 1% /data/mysql
Überprüfen Sie, ob Verwendung % < 70 % ist. Inodes sind mit Dateien korreliert. Wenn Sie Dateien aus der Partition entfernen, werden Inodes freigegeben.
Überprüfen und Freigeben von Speicherplatz
Es gibt mehrere Services, die möglicherweise Dateien in /tmp
speichern.
Überprüfen und Freigeben von MySQL-Speicherplatz
Befolgen Sie die Anweisungen in MySQL Speicherplatz ist auf Adobe Commerce in der Cloud-Infrastruktur zu niedrig > Überprüfen Sie und geben Sie Speicherplatz frei in unserer Support-Wissensdatenbank.
Überprüfen von Elasticsearch-Heap-Dumps
Heap-Dumps (*.hprof
) mit der System-Shell entfernen:
find /tmp/*.hprof -type f -delete
Wenn Sie nicht über die Berechtigung zum Löschen von Dateien verfügen, die von einem anderen Benutzer erstellt wurden (in diesem Fall von Elasticsearch), aber sehen, dass die Dateien groß sind, erstellen ein Support-Ticket um sie zu bearbeiten.
Überprüfen von Datenbank-Dumps/Backups
Überprüfen Sie /tmp
auf .sql
oder .sql.gz
Dateien und bereinigen Sie sie. Diese können von ECE-Tools während der Sicherung oder bei der manuellen Erstellung von Datenbank-Dumps mit dem mysqldump
-Tool erstellt worden sein.
Best Practices
Um Probleme mit /tmp
zu vermeiden, die vollständig sind, befolgen Sie die folgenden Empfehlungen:
-
Verwenden Sie MySQL nicht für die Suche. Elasticsearch für die Suche macht in der Regel die meisten der umfangreichen temporären Tabellenerstellungen überflüssig. Siehe Adobe Commerce für die Verwendung von Elasticsearch konfigurieren in unserer Entwicklerdokumentation.
-
Vermeiden Sie das Ausführen der
SELECT
Abfrage für Spalten ohne Indizes, da dies viel temporären Speicherplatz beansprucht. Sie können auch die Indizes hinzufügen. -
Erstellen Sie einen Cron, um
/tmp
zu bereinigen, indem Sie den folgenden Befehl in der CLI ausführen:code language-bash sudo find /tmp -type f -atime +10 -delete
Verwandtes Lesen
In unserer Support-Wissensdatenbank ist wenig Speicherplatz auf der Adobe Commerce- vorhanden.