MySQL LockTables Problem
Posted: 2009-11-19 17:04
Hallo,
ich suche seit länger Zeit nach der Ursache und konnte bis jetzt nicht wirklich antwort finden.
Ich verwende an einer Stelle in meinen Scripten den Befehl "Lock Tables". Normalerweise wird dort nicht so viel Script ausgeführt. Vieleicht höchstens mal 3 sek Scriptdauer im schlimmsten Fall. Danach sollte die Sperre ja wieder aufgehoben werden. Im Script habe ich das "UNLOCK TABLES" auch zu stehen, obwohl ich soweit ich weis das noch nichtmal unbedingt setzen muss, weil die Sperre automatisch aufgehoben wird.
Wie auch immer habe ich gelegentlich den Fall, dass es zu unterschiedlichen Zeiten vorkommt, das diese Sperre nicht aufgehoben wird. Dann passiert es, dass die Seite natürlich "hängt", weil ja kein anderer Prozess mehr auf die Tabellen zugreifen kann. In der Prozessliste in phpmyadmin sieht man, dass meist 1 Thread auf Status "end" steht oder/und 1 Thread steht auf Status "freezing items" oder so ähnlich^^. Der Rest der Thread steht auf "Locked" und es kommen immer mehr dazu (sind schon etwas mehr Besucher auf den Seiten).
Was ich beobachtet habe ist, sobald ich "FLUSH TABLES" ausführe, also während dieses aufstauen der Threads, löst sich der Stau. Wenn ich das richtig gelesen habe, dann leert der Flush-Befehl ja internen Caches von MySQL. Also in diesem Fall wird der Tabellencache geleert und ebenfalls alle Abfrageergebnisse aus dem Abfrage-Cache.
Meine Frage die sich daraus ergibt ist, ob es evtl. eine falsche Cacheeinstellung ist, die dieses Problem verursacht?
Auf dem Server läuft Ubuntu mit Apache2, PHP5.2, MySQL5 und an Hardware ein QuadCore CPU mit 12GB RAM.
Fals noch infos fehlen, bitte bescheid geben.
mfg
ich suche seit länger Zeit nach der Ursache und konnte bis jetzt nicht wirklich antwort finden.
Ich verwende an einer Stelle in meinen Scripten den Befehl "Lock Tables". Normalerweise wird dort nicht so viel Script ausgeführt. Vieleicht höchstens mal 3 sek Scriptdauer im schlimmsten Fall. Danach sollte die Sperre ja wieder aufgehoben werden. Im Script habe ich das "UNLOCK TABLES" auch zu stehen, obwohl ich soweit ich weis das noch nichtmal unbedingt setzen muss, weil die Sperre automatisch aufgehoben wird.
Wie auch immer habe ich gelegentlich den Fall, dass es zu unterschiedlichen Zeiten vorkommt, das diese Sperre nicht aufgehoben wird. Dann passiert es, dass die Seite natürlich "hängt", weil ja kein anderer Prozess mehr auf die Tabellen zugreifen kann. In der Prozessliste in phpmyadmin sieht man, dass meist 1 Thread auf Status "end" steht oder/und 1 Thread steht auf Status "freezing items" oder so ähnlich^^. Der Rest der Thread steht auf "Locked" und es kommen immer mehr dazu (sind schon etwas mehr Besucher auf den Seiten).
Was ich beobachtet habe ist, sobald ich "FLUSH TABLES" ausführe, also während dieses aufstauen der Threads, löst sich der Stau. Wenn ich das richtig gelesen habe, dann leert der Flush-Befehl ja internen Caches von MySQL. Also in diesem Fall wird der Tabellencache geleert und ebenfalls alle Abfrageergebnisse aus dem Abfrage-Cache.
Meine Frage die sich daraus ergibt ist, ob es evtl. eine falsche Cacheeinstellung ist, die dieses Problem verursacht?
Auf dem Server läuft Ubuntu mit Apache2, PHP5.2, MySQL5 und an Hardware ein QuadCore CPU mit 12GB RAM.
Fals noch infos fehlen, bitte bescheid geben.
mfg