irgendeine Abfrage killt mein mysql
irgendeine Abfrage killt mein mysql
am 04.11.2006 20:23:43 von Werner Bauer
so einmal wöchentlich rennt offenbar irgendeine Abfrage, die die=20
Prozessorlast ewig ansteigen lässt, und ich muss dann der Prozess neu=20
starten. Was auch die Ursache dafür ist, dass die Abfrage nie in meinen=
=20
*slow* Queries auftaucht, aber meine User verlieren leider regelmässig =
die Nerven, und ich konnte noch nie abwarten ob die Abfrage doch mal=20
fertig wird.
Wie könnte ich rauskriegen, was hier schiefgelaufen ist?
Die Queries werden dynamisch generiert, deshalb weis ich eigentlich=20
nicht, was da Abgefragt werden könnte.
Mysql 4.1, php4, Suse
Werner
Re: irgendeine Abfrage killt mein mysql
am 04.11.2006 21:24:04 von Frank Buss
werner bauer wrote:
> so einmal wöchentlich rennt offenbar irgendeine Abfrage, die die
> Prozessorlast ewig ansteigen lässt, und ich muss dann der Prozess neu
> starten. Was auch die Ursache dafür ist, dass die Abfrage nie in meinen
> *slow* Queries auftaucht, aber meine User verlieren leider regelmässig
> die Nerven, und ich konnte noch nie abwarten ob die Abfrage doch mal
> fertig wird.
>
> Wie könnte ich rauskriegen, was hier schiefgelaufen ist?
Wenn es aktuell hängt, dann kannst du dich in MySQL einloggen und per "show
processlist" alle laufenden Abfragen ansehen. Ich glaube MySQL sperrt
Tabellen für Schreibzugriff bei manchen Abfragen. Ansonsten wäre es wohl
sinnvoll, die dynamisch generierten Abfragen mit benötigter Zeit für die
Ausführung zu protokollieren.
--
Frank Buss, fb@frank-buss.de
http://www.frank-buss.de, http://www.it4-systems.de
Re: irgendeine Abfrage killt mein mysql
am 04.11.2006 21:39:46 von Axel Schwenke
LOOOOL!
werner bauer wrote:
^^^^^^^^^^^^
Inkonsistenz mit dem Subject. Entweder heißt du "irgendeine Abfrage"
oder das Subject sollte lauten "Hilfe, ich kille mein MySQL!".
> so einmal wöchentlich rennt offenbar irgendeine Abfrage, die die
> Prozessorlast ewig ansteigen lässt, und ich muss dann der Prozess neu
~~~~~~~~~~~~~
> starten.
So so. Warum *mußt* du das denn?
Bootest du deinen Rechner auch immer neu, wenn nach dem Drücken des
"jetzt abspeichern" Knopfes für eine Weile eine Sanduhr angezeigt wird?
> Was auch die Ursache dafür ist, dass die Abfrage nie in meinen
> *slow* Queries auftaucht, aber meine User verlieren leider regelmässig
> die Nerven, und ich konnte noch nie abwarten ob die Abfrage doch mal
> fertig wird.
>
> Wie könnte ich rauskriegen, was hier schiefgelaufen ist?
Indem du dir die Query mal anschaust? Eventuell soweit optimierst,
daß die schnell (genug) läuft?
> Die Queries werden dynamisch generiert, deshalb weis ich eigentlich
> nicht, was da Abgefragt werden könnte.
Du hast aber auch ein Pech! Ausgerechnet du hast das MySQL erwischt,
bei dem SHOW PROCESSLIST nicht funktioniert. Und dann zeigt dir dein
Webbrowser nur leere Seiten, wenn du dir das Manual unter
http://dev.mysql.com/doc/refman/4.1/en/ ansehen willst.
XL
Re: irgendeine Abfrage killt mein mysql
am 04.11.2006 23:04:29 von Werner Bauer
Axel Schwenke schrieb:
> Inkonsistenz mit dem Subject. Entweder heißt du "irgendeine Abfrage"
> oder das Subject sollte lauten "Hilfe, ich kille mein MySQL!".
tut mir leid aber ich bin zu blöd, um den Spass zu kapieren. Die Abfrag=
e=20
habe ich nicht "geschrieben" sondern die ist aufgrund von Regeln und=20
Eingaben entstanden.
> So so. Warum *mußt* du das denn?
na du würdest das vielleicht auch machen, wenn die Kiste 20min steht un=
d=20
dich 10 Leut anrufen ...
und nicht auch noch ausprobieren, ob "show prozesslist" jetzt noch geht.
und wegen dem Manual, ja ich les' es, aber das hatte ich halt nicht in=20
Zusammenhang gebracht.
Leut wie du werden es sicher bald schaffen, dass hier nix mehr gepostet=20
wird, steht doch genau 100% von allem im Manual oder sonstwo erklärt.
Ciao, danke totzdem.
Werner
Re: irgendeine Abfrage killt mein mysql
am 05.11.2006 01:33:00 von Axel Schwenke
werner bauer wrote:
> Axel Schwenke schrieb:
>> Inkonsistenz mit dem Subject. Entweder heißt du "irgendeine Abfrage"
>> oder das Subject sollte lauten "Hilfe, ich kille mein MySQL!".
>
> tut mir leid aber ich bin zu blöd, um den Spass zu kapieren. Die Abfrage
> habe ich nicht "geschrieben" sondern die ist aufgrund von Regeln und
> Eingaben entstanden.
Aber *du* killst den MySQL Server. Die Abfrage lockt möglicherweise
Tabellen, so daß andere Abfragen warten müssen. Sie "killt" aber nicht
den Server. Das tust du. Kleiner, aber feiner Unterschied.
>> So so. Warum *mußt* du das denn?
>
> na du würdest das vielleicht auch machen, wenn die Kiste 20min steht und
> dich 10 Leut anrufen ...
Mit Sicherheit nicht. Weil
1. "steht" da nix, da wird gearbeitet
2. würde ich erstmal nachsehen, *was* denn da passiert und
3. kann man einzelne Abfragen beenden, ohne den Server runterzufahren
OK, das setzt natürlich voraus, daß man sich wenigstens *minimal* mit
dem auskennt, was man da treibt. Wenn man statt dessen gleich die große
Keule auspackt, dann kann das nichts werden. Obwohl dein MySQL ja
anscheinend unter Linux läuft, erkenne ich den Windows-Anwender in dir.
XL
Re: irgendeine Abfrage killt mein mysql
am 05.11.2006 07:41:42 von Thomas Rachel
werner bauer wrote:
> Was auch die Ursache dafür ist, dass die Abfrage nie in meinen
> *slow* Queries auftaucht, aber meine User verlieren leider regelmässig
> die Nerven, und ich konnte noch nie abwarten ob die Abfrage doch mal
> fertig wird.
Das vielleicht nicht, aber die 5 Sekunden, die ein "SHOW [FULL]
PROCESSLIST" dauert, kostete sicherlich nicht nennenswert viel mehr
Nerven, und sind gut angelegt, da Du dadurch erfährst, welcher Query
schuld ist. Und, wie Axel bereits schrieb - einzelne Prozesse zu killen,
sollte wesentlich reibungsfreier gehen, da wartende Queries dann direkt
ausgeführt werden, im Gegensatz zu einem neugestarteten Server, bei dem
die Applikation die Verbindung verliert, so daà diese dann erst neu
hergestellt werden muÃ.
> Wie könnte ich rauskriegen, was hier schiefgelaufen ist?
>
> Die Queries werden dynamisch generiert, deshalb weis ich eigentlich
> nicht, was da Abgefragt werden könnte.
Wie bereits geschrieben wurde: entweder alle diese dynamischen Queries
mitloggen lassen oder aber, da das mit dem Slow Query Log nicht zu
klappen scheint (ich sehe grade, die werden erst geschrieben, wenn der
Query abgeschlossen ist), könntest Du Dir vielleicht ein Skript
schreiben, welches alle paar Minuten mal schaut, ob irgendein Query
hängt (=gerade länger als x Sekunden ausgeführt wird). Das geht aber
auch nur, wenn die Verbindungen nicht offengehalten werden durch die
Anwendungen, sonst ist die Aussage der Time-Spalte hier nicht
aussagekräftig.
Von dem so identifizierten Query dann mal den EXPLAIN untersuchen.
Thomas
--
Kampf den Teletubbies!
Re: irgendeine Abfrage killt mein mysql
am 05.11.2006 15:04:39 von Axel Schwenke
Thomas Rachel wrote:
> ... könntest Du Dir vielleicht ein Skript
> schreiben, welches alle paar Minuten mal schaut, ob irgendein Query
> hängt (=gerade länger als x Sekunden ausgeführt wird). Das geht aber
> auch nur, wenn die Verbindungen nicht offengehalten werden durch die
> Anwendungen, sonst ist die Aussage der Time-Spalte hier nicht
> aussagekräftig.
Wenn man zusätzlich noch die `Command` Spalte auswertet, dann schon.
Wenn da 'Locked' oder 'Sleep' drin steht, ist der Inhalt von `Time`
irrelevant. BTDTMT. grep und watch sind des Admins Freunde.
XL
Re: irgendeine Abfrage killt mein mysql
am 05.11.2006 15:54:06 von Thomas Rachel
Axel Schwenke wrote:
>> ... wenn die Verbindungen nicht offengehalten werden durch die
>> Anwendungen, sonst ist die Aussage der Time-Spalte hier nicht
>> aussagekräftig.
>
> Wenn man zusätzlich noch die `Command` Spalte auswertet, dann schon.
> Wenn da 'Locked' oder 'Sleep' drin steht, ist der Inhalt von `Time`
> irrelevant. BTDTMT. grep und watch sind des Admins Freunde.
Stimmt, der Timer wird ja zurückgesetzt, sobald sich der Command-Status
ändert. Das vergaà ich.
Thomas
--
Dieses Pfefferminzbonbon schmeckt ja scheuÃlich!
Da war sicher ein Falschminzer am Werk.
Re: irgendeine Abfrage killt mein mysql
am 05.11.2006 19:01:24 von Sven Paulus
werner bauer wrote:
>> So so. Warum *mußt* du das denn?
> na du würdest das vielleicht auch machen, wenn die Kiste 20min steht u=
nd=20
> dich 10 Leut anrufen ...
> und nicht auch noch ausprobieren, ob "show prozesslist" jetzt noch geht.
Also ich weiss ja nicht, wenn das ein wiederkehrendes Problem ist und
Du es beseitigen willst, dann muss man doch eigentlich gluecklich
sein, genau so einen Zustand vorzufinden und so viel Analyse wie
moeglich betreiben, um die Ursache moeglichst genau eingrenzen zu
koennen.
Und dazu gehoert eben, mal flink die Prozessliste, die
Speichernutzung, den Status etc. rauszudumpen. Und wenn es wirklich
auf Zeit ankommt, dann bereitet man sich eben ein kleines Script vor,
dass die wesentlichen Sachen abfragt und in eine Datei schreibt. Wenn
es mal wieder so weit ist, ruft man eben flink das Script auf und
killt danach die Connection.
Re: irgendeine Abfrage killt mein mysql
am 06.11.2006 10:28:03 von Werner Bauer
Axel Schwenke schrieb:
> Aber *du* killst den MySQL Server.=20
ok ;-)
> OK, das setzt natürlich voraus, daß man sich wenigstens *minimal* m=
it
> dem auskennt, was man da treibt. Wenn man statt dessen gleich die groß=
e
> Keule auspackt, dann kann das nichts werden.=20
immerhin hab ich für die Tipps zu danken.
Wusste halt nicht (und weis immer noch nicht wie), dass man einzelne=20
Abfragen beenden kann - ich sah nur
den Linux-Teil, der hat sich mir als _ein_ mysqlprozess dargestellt.
Ich seh die NG halt als eine Möglichkeit, die _richtigen_ Hinweise zu=20
bekommen, weil _ich_ suche halt nicht nach Dingen, die zu finden ich=20
nicht erwarte. Oder suche nach falschen Begriffen, Ursachen etc.
Und ich setze mich intensiv damit auseinander. Nur hab' ich das dauernde =
draufgehaue in den NG's langsam satt. Die, die da fragen, tun es oft=20
falsch 'rum aber nie weil sie doof, faul oder schlechte Menschen sind=20
;-) oder was einem da noch alles vorgeworfen wird.
Werna
Wenigstens wirft mir diesmal keiner vor, dass ich es nicht mit pg mache.
Re: irgendeine Abfrage killt mein mysql
am 06.11.2006 10:44:39 von Andreas Kretschmer
Andreas
--
Andreas Kretschmer
Linux - weil ich es mir wert bin!
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net
Deutsche PostgreSQL User Group: http://pgug.de
Re: irgendeine Abfrage killt mein mysql
am 06.11.2006 11:12:11 von Axel Schwenke
werner bauer wrote:
> Axel Schwenke schrieb:
>
>> ... das setzt natürlich voraus, daß man sich wenigstens *minimal* mit
>> dem auskennt, was man da treibt. Wenn man statt dessen gleich die große
>> Keule auspackt, dann kann das nichts werden.
>
> immerhin hab ich für die Tipps zu danken.
>
> Wusste halt nicht (und weis immer noch nicht wie), dass man einzelne
> Abfragen beenden kann
Meine Güte! Jetzt ist dir hier mehrfach SHOW PROCESSLIST um die Ohren
geschlagen worden und du hast es *immer* noch nicht geschafft, dir mal
die dazu gehörige Seite im Handbuch anzusehen? Da steht dann u.a. auch,
wie man einzelne Threads beendet.
Was ist das? Faulheit? Lernresistenz?
> ich sah nur
> den Linux-Teil, der hat sich mir als _ein_ mysqlprozess dargestellt.
ps kann auch Threads anzeigen. Ab Kernel 2.6 abstrahiert /proc endlich
so weit, daß ps Threads und Prozesse unterscheiden kann. Was hatte ich
weiter oben über minimales Auskennen geschrieben?
> Ich seh die NG halt als eine Möglichkeit, die _richtigen_ Hinweise zu
> bekommen, weil _ich_ suche halt nicht nach Dingen, die zu finden ich
> nicht erwarte. Oder suche nach falschen Begriffen, Ursachen etc.
Wenn du eine MySQL Datenbank administrierst. Gar für andere, die darauf
angewiesen sind. Womöglich entgeltlich. Dann solltest du zumindest das
"Wie admistriert man ein MySQL" Kapitel im Handbuch gelesen haben.
UND ZWAR VORHER!
> Und ich setze mich intensiv damit auseinander. Nur hab' ich das dauernde
> draufgehaue in den NG's langsam satt. Die, die da fragen, tun es oft
> falsch 'rum aber nie weil sie doof, faul oder schlechte Menschen sind
Tut mir leid, aber irgendwie schaffst du es gar nicht, mir diesen
Eindruck zu vermitteln.
XL
Re: irgendeine Abfrage killt mein mysql
am 07.11.2006 00:29:12 von Philipp Taprogge
Hi!
Thus spake werner bauer on 11/06/2006 10:28 AM:
> Und ich setze mich intensiv damit auseinander. Nur hab' ich das dauernde
> draufgehaue in den NG's langsam satt.
Dein Problem ist nicht die Unwissenheit an sich. Die ist heilbar ;-)
Dein Problem ist, daß du auf der einen Seite sehr deutlich zeigst,
daß es dir an elementaren Fähigkeiten zur Administration eines
MySQL-Servers mangelt, auf der anderen Seite aber gut gemeinte
Ratschläge mit dem Hinweis auf "die wütenden User" abwehrst.
Wenn du wütende User zu versorgen hast, solltest du solche Fragen
nicht stellen müssen; sonst bist du für den Job schlicht nicht
qualifiziert.
Just my 2 cent,
Phil
Re: irgendeine Abfrage killt mein mysql
am 13.11.2006 21:12:58 von Kris
werner bauer wrote:
> Wusste halt nicht (und weis immer noch nicht wie), dass man einzelne
> Abfragen beenden kann - ich sah nur
> den Linux-Teil, der hat sich mir als _ein_ mysqlprozess dargestellt.
http://www.mysql.com/training
Du willst den DBA 5.0 Kurs und/oder das Bootcamp. Und die Certification.
Kris