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

WARNING
Heap-Dumps enthalten Protokollierungsinformationen, die für die Untersuchung von Problemen nützlich sein können. Erwägen Sie, sie für mindestens 10 Tage an einem anderen Ort aufzubewahren.

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

WARNING
Datenbanksicherungen werden in der Regel zu einem bestimmten Zweck erstellt. Wenn Sie sich nicht sicher sind, ob die Datei weiterhin benötigt wird, verschieben Sie sie an einen anderen Speicherort, anstatt sie zu löschen.

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

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