Probleme der Kommunikation mit der Datenbank passieren in jedem System, unabhängig davon, ob Magento oder nicht.
Also in der Tat dieser Beitrag hilft allen Entwicklern, die mit der Datenbank arbeiten, genauer mit MySQL.
Das SQLSTATE meldet ein Problem, das das Kommunikationsproblem verursacht hat. Aber es gibt nicht seinen Ursprung an. Siehe unten.
Interpretieren der Meldungen
In der Regel sind sie kurze Nachrichten, vom Typ:
SQLSTATE[HY000]: General error: 2013 Lost connection to MySQL server during query
SQLSTATE[HY000]: General error: 2006 MySQL server has gone away
Das sagt uns gar nichts, was wir schon wissen (gab Fehler). Eine kostenlose Übersetzung für diese Nachrichten wäre jeweils:
Generic error: 2013 Ich ging, um die Datenbank zu konsultieren und ging auf der Rückseite verloren
Generic error: 2006 Der Datenbankserver hat dich aufgegeben
Und so ist es so schwer, eine fertige Lösung zu finden, weil wir die Ursachen des Problems nicht kennen.
Mögliche Ursachen
Server außerhalb des Dienstes. Und das kann für ein paar Sekunden oder ein paar Stunden passieren. Der Datenbankserver kann neu gestartet oder heruntergefahren werden.
Und dies kann aus mehreren Gründen, wie ein Versions-Upgrade oder Sicherheit, Stromausfall, versehentliches Herunterfahren, Überlastung, Abstürze, etc. auftreten.
Ansprechzeit. Jedes System hat eine Wartegrenze, und wenn Ihr System “spricht” mit der Datenbank, wird eine Anfrage gemacht… MySQL akzeptiert Ihre Anfrage und wird verarbeiten… und das kann einige Zeit dauern… wenn Sie nicht lange warten genug, geh weg ohne die Antwort.
Das heißt, es gibt eine Einstellung, die dem Server mitteilt, was die Ausführungszeit für eine Anfrage ist. Wenn die Zeit platzt, wird der Prozess unterbrochen und eine Fehlermeldung wird an das System gebucht.
Ich beabsichtige nicht, in das Thema einzutauchen, aber es gibt auch die Schlange. Sie wollen eine Anfrage an die Datenbank stellen, aber bevor Sie dort noch 300 Personen warten, um die Abfrage zu machen. Und das Volumen der Transaktionen beeinflusst seine Reaktionszeit, sowie die oben erwähnten Overhead.
Infrastruktur
Wie ich schon zu Beginn der Post sagte, ist es schwierig, eine endgültige Lösung zu geben, weil die Ursache des Problems unbekannt und/oder unsicher ist. Allerdings liegt oft der Mangel in der eingesetzten Infrastruktur.
Server und Hosting. Viele Leute verwirren Server und Hosting, und es ist nicht möglich, im Moment eine ausführliche Erklärung zu geben. Aber zusammenfassend:
Server, ist die Maschine, der Computer, der in Verbindung bleiben und mit dem Internet verbunden ist, damit Leute auf Ihre Website zugreifen können.
Hosting, es ist Ihre Konfiguration innerhalb dieses Servers, die Funktionen, die für Ihr System verfügbar sind.
Beide sind wichtig, also ist es zwingend erforderlich, dass Sie einen Qualitätsserver mit einem guten Hosting-Plan (VPS, Dedicated oder Cloud) mieten.
Empfohlene Firmen: Rackspace, Nexcess, UolHost, Hostgator, Digital Ocean
Konfiguration
Manchmal können Sie das Problem lösen, indem Sie zumindest zeitweise (bis zum Auslaufen von Ressourcen) konfigurieren. Rufen Sie Ihre MySQL über PhpMyAdmin auf und klicken Sie auf Variablen.
Alle Variablen können (und sollten) entsprechend den Anforderungen Ihres Systems und/oder Zugriffsvolumens konfiguriert werden. Im Falle von Magento könntest du die Werte von:
#Standard ist 10 (Sekunden), erhöhen, wenn Ihr Problem 2013 ist Fehler. connect_timeout=30 #Maximale Zeit (Sekunden), die der Server wartet, bevor er eine Verbindung ohne Aktivität schließt. wait_timeout=300 #25% des verfügbaren Speichers für die Datenbank wird empfohlen. Wenn es über 50% ist, ist die Maschine langsam key_buffer_size=64M #sollte doppelte max_connections sein table_open_cache=2000 #maximale Anzahl gleichzeitiger Verbindungen max_connections=1000
Offizielle Referenz: connect_timeout, wait_timeout, key_buffer_size, table_open_cache, max_connections.
Starten Sie mysql neu, nachdem Sie die Änderungen vorgenommen haben.
Sie haben nicht immer Zugriff auf diese Einstellungen, besonders wenn Sie einen Shared Hosting Plan verwenden.
Achtung! Wenn Sie einen gemeinsamen Plan verwenden, werden Probleme wiederholt.
Zumindest jetzt hast du eine Vorstellung davon, was getan werden kann, um das Problem zu lösen.
Erfolg!