Moin liebe TYPO-Gemeinde!
Ich beobachte bei meinen 1&1 Root-Server L seit einigen Tagen, dass dieser nach einigen Stunden UP-Time langsam förmlich "einfriert", sprich er wird immer langsamer bis er auf den verschiedensten Ebenen nur noch "Time-outs" produziert. Nun ist so ein o.g. Server sicherlich keine Höllenmaschine mit seinen 256MB-RAM, aber er lief in den letzten Jahren bei nahezu gleicher Auslastung recht stabil.
Auswertungen mit >: TOP, SHOW VARIABLES oder MySQL-Administrator zeigen, dass es bis zu 150 "Therads_connected" (die meisten davon SLEEPING) gibt, nahezu alle generiert von der TYPO-Datenbank.
So viele Fragen - muss nicht jeder gleich alle beantworten o.O
Welche T3-Version hast du denn?
Arbeitest du mit persistente Verbindungen?
Sind ggfs. einzelne Extensions (z.b. lz_gallery) die Ursache?
Sehr pauschal: Gggfs. ja.
Oder laufen irgendwelche BOTs oder Grabber über die Seite?
Das sollte die Auswerung der Log-Dateien zeigen
Ja ich weiß, sehr pauschale Anfrage.
Ich wollte nicht das Thema mit einem mehrseitigen Text eröffnen.
Ich habe TYPO 3.8.0 und no_pconnect ist nicht gesetzt, also persiatente Verbindungen sind erlaubt.
Aber persistente Verbindungen müssen ja auch nach der gesetzten KeepAlive_time gelöst werden- oder??
Eine Auffälligkeit: Diese vielen Threads auf die TYPO-DB griffen alle auf die Tabelle cache-pages zu. Nun ist ja ein Cache sicherlich genau dafür da, aber genau diese Tabelle war in der Vergangenheit (nämlich hin und wieder dann, wenn der Server aufgrund von "MySQL-ERR: Too many connections..." resettet werden musste) defekt. Ich habe dann diese Tabelle gelöscht und im Installations-Tool wieder generieren lassen. Danach lief TYPO wieder einwandfrei.
Laut phpAdmin ist diese Tabelle (CHECK/OPTIMIZE) aber auch OK.
Momentan ist der Server mit einem UP von gewaltigen 23h mit 12 Connection-Threads einwandfrei - wenn er wieder einfriert gehe ich mal in die Logs.
Danke für die Antwort
Dann würd ich mal die persistente Verbindungen ausschalten.
Du mußt die Datenbank nicht resetten, es sollte ausreichen, wenn du den Webserver neu startest.
Daß die cache-Tabellen defekt sind, ist nicht weiter verwunderlich: Auf diese Tabellen wird am häufigsten zugegriffen und das ist die Wahrscheinlichkeit groß, daß gerade ein Zugriff statt findet, wenn du den Reset durchführst.
pconnect ist nun ausgeschaltet, in der mysqld habe ich wait_timeout = 10 gesetzt.
Resultat (wie erwartet): So lange der (MySQL-)Server läuft gibt es nur sehr wenige connections zu beobachten, diese schlafen dann auch nicht länger als 10 Sekunden.
Aber nach ca. 5 Stunden (abhängig von der Auslastung) bauen sich in wenigen Minuten bis zu 250 Connections auf, die den gesamten Server förmlich einfrieren.
Auszug aus den Serverconnections mit SQLAdministrator:
Bild: ture.de/sqladmin.jpg
Obwohl über diesen Server mehr als 25 webgesteuerte Datenbanken verwaltet werden, bringt nur eine DB den Server in Verlegenheit.
Alle Tabellen dieser DB sind geprüft/repariert/optimiert, die Caches von Typo sind aktiv und füllen sich nach dem Entleeren auch wieder.
Auffällig: Wird die TAB cache_pages von mir geleert, so friert der Server beim Füllen dieser Tabelle in kurzer Zeit wieder ein, die UP-Zeiten werden mit wachsemdem cache_pages wieder länger.
Sämtliche LOGs sind m.E. nach unauffällig.
Hat jemand 'ne Idee? (Typo defekt oder MySQL-Server defekt?)
Übrigens: Keine Fehlermeldungen im FE, ausser bei eingefrorenem Server ERR 404
Was machst du, nachdem der Server einfroren ist?
Reicht ein einfaches neu-starten des SQL-Server?
Ist auf allen Partitionen noch ausreichend Platz vorhanden, bzw. wieviel Speicher ist noch verfügbar?
Wie groß ist deine SWAP-Partition?
Steigen die Zugriffe kurz vorm einfrieren stark an?
Nein- ich muss einen Komplett-Reset machen.
Es wird geswappt, auf allen gemounteten Drives ist auch noch genug Platz.
Das RAM ist natürlich fast vollständig ausgeschöpft (s.o.) ein paar 10 kB sind noch im RAM und in den Buffers frei. Der SWAP geht deswegen natürlich kurz vorher hoch. Die SWAP-Partition hat ~2 GB.
Hier ein Auszug aus einer TOP-Anfrage furz vor einem kompletten Einfrieren:
Bild: ture.de/5Std langsam.jpg
Die Zugriffe (Connections) steigen kurz vorher nicht an. Ich habe vielmehr den Eindruck, dass Query-Anfragen (und somit Connections) plötzlich nicht mehr erfolgreich abgearbeitet uns somit geschlossen werden (siehe Grafik oben).
Durch was dieses "Aufstapeln" ausgelöst wird ist wohl die spannende Frage :o
Ich werd nachher nochmal was dazu schreiben, aber wenn der Server das nächste mal einfriert, läßt du dir am besten noch mit Top die "Page Fault counts" angeben. Dazu auf drückst du, wenn top läuft, nacheinander:
f u 1