Thread Timeout für mysql-Statements (5 answers)
Opened by pq at 2011-01-25 12:20

vifo
 2011-03-08 20:07
#146322 #146322
User since
2010-01-25
11 Artikel
BenutzerIn
[default_avatar]
Hey pq,

ich nehme an, es ist MySQL (wg. CONNECTION_ID()). Wenn nicht, bitte um Korrektur.

Ich vermute, dass hier ein Lock-Timeout auftritt (e.g. der Perl-Prozess wartet auf eine Antwort von MySQL, MySQL wartet auf einen Lock der Tabellen, da diese gerade repariert/optimiert werden). Handling von Deadlocks und Timeouts ist hier diskutiert:

http://forums.mysql.com/read.php?39,28504,28504#ms...

Generell gibt es hierzu keine gescheite Methode. Mit InnoDB ist es zumindest möglich, einen Lock-Timeout einzustellen. So würde das Perl-Skript eine Fehlermeldung kriegen, wenn die Tabelle nach einer bestimmten Zeit immer noch gelockt ist.

http://dev.mysql.com/doc/refman/5.0/en/innodb-para...

Falls dies mit den POSIX Signals funzt, super. Falls nicht, kannst Du ggf. im Skript prüfen, ob gerade ein REPAIR/OPTIMIZE auf der in Frage kommenden Tabelle läuft.

Oder als Non-Perl Workaround: Kompletter REPAIR/OPTIMIZE TABLE Lauf beim Startup der MySQL DB (und ein Load abhängiger Lauf von OPTIMIZE TABLE alle paar Stunden, falls der Server wieder seinen Geist aufgibt). USV ist natürlich auch eine Idee (die Du wahrscheinlich aber nicht hören willst :))

Was pktm meint ist wahrscheinlich mk-kill:

http://www.maatkit.org/doc/mk-kill.html

Eine wirklich schöne Lösung ist das aber auch nicht.

Grüße
ViFo
Last edited: 2011-03-08 20:17:02 +0100 (CET)

View full thread Timeout für mysql-Statements