shokk84
Goto Top

MySql Variable

interactive_timeout und wait_timeout

hallo leute!

-was ist das maximum an sekunden was ich den variablen zuteilen kann? (standard ist glaube ich 28800)
-besteht die möglichkeit diese auf "no limit" oder dergleichen zu setzen?


danke für eure antworten!!!


lg

Content-Key: 103025

Url: https://administrator.de/contentid/103025

Printed on: April 19, 2024 at 12:04 o'clock

Member: Lousek
Lousek Dec 01, 2008 at 11:18:02 (UTC)
Goto Top
dies auf no limit zu setzten könnte aber ein schönes Risiko (Datenbankbelastung * unendlich?) darstellen ... wenn ich diese beiden Variablen richtig verstehe ...
Member: Shokk84
Shokk84 Dec 01, 2008 at 11:22:16 (UTC)
Goto Top
im prinzip gehts bei den beiden variablen ja nur darum das ein "hallo jemand da" gesendet wird und einfach nur abgefragt wird ob wer antwortet. wenn sich 8 stunden niemand meldet "closed" der dann die connection. ich will einfach nur wissen ob man das auf unendlich stellen kann. kann mir nicht vorstellen das dies so eine große datenbank belastung darstellen würde!?
Member: Biber
Biber Dec 01, 2008 at 11:52:23 (UTC)
Goto Top
Moin Shokk84,

das Schöne an Montagen und an diesem Forum ist, dass ich hier immer wieder neue Sachen kennenlerne.
im prinzip gehts bei den beiden variablen ja nur darum das ein "hallo jemand da" gesendet wird
Ach? Nutzt Ihr die Datenbank nur zum Chatten?
Und beim Chatten reichen 8 Stunden nicht?

Dieser hohe Timeout-Wert ist es unnötiges Risiko für die Datenbank und sollte Dich jemand nach einem realistischen Wert für eine "produktive" Datenbank fragen, dann solltest Du ganz sicher ganz spontan antworten:
"Okay, ich würde so den wait_timeout auf 60 sec und den connect_timeout auf 15 sec hochsetzen und den interactive_timeout auf 120 sec (ja, der hat den Default 28880 sec =8 Stunden) runtersetzen."

Bei produktiven Datenbanken, mit denen durchaus konzernweit gearbeitet wird und werden muss, liegt der interactive_timeout bei uns bei 35 sec.

Was soll denn bei Dir für ein Szenario gegeben sein, dass mehr als 8 Stunden auf eine Antwort wartet und solange die Connection offen hält?

Grüße
Biber
Member: Shokk84
Shokk84 Dec 01, 2008 at 12:15:33 (UTC)
Goto Top
uh biber würds ein wenig netter gehn? habe hier ja auch eine ganz normale frage gestellt oder? ich bin kein mysql spezi so wie du, deshalb stelle ich ja auch hier meine frage rein! ausserdem hat dir hier keiner befohlen einen reply zu posten oder? UND nein die db ist nicht für einen chat gedacht sondern wie du unten richtig vermutet hast für einen konzern. (genaueres sollte dir egal sein)

und mit dem vielleicht blöd umschriebenem "hallo jemand da" war es so gedacht wie es in der beschreibung der mysql variablen steht:
zitat" ....während der server bei einer verbindung auf aktivitäten wartet..." war meine vermutung naheliegend das dieser die connection überprüft. WAS ABER AUCH EGAL IST, es geht rein darum ob es ein risiko darstellt und ob es überhaupt möglich ist, bei wait_timeout 2 oder mehrere tage einzustellen.

unser problem ist, das wir nach erfolgreicher produktion am freitag 2 tage keine produktion fahren, somit steht (vermutlich durch das timeout) montags immer die db "mysql has gone away". und schreibt somit in logs. fertig!
Member: Biber
Biber Dec 01, 2008 at 13:36:38 (UTC)
Goto Top
Moin Shokk84,

aber wenn sich Dein Problem so darstellt, dann solltest Du doch statt dessen erwägen, eine permanente Connection zu etablieren - also das Flag "MYSQL_CLIENT_INTERACTIVE" gar nicht setzen zu lassen.
Dann kannst Du getrost den Wert für den "interactive_timeout" ignorieren und bestenfalls den Wert für "connect_timeout" hochschrauben.

Hier noch ein Link dazu und von da aus solltest Du zur Funktion "mysql_pconnect()" kommen.
Und ja, auch wenn Du es nicht hören willst: Es ist aus meiner Sicht ein unvertretbares Risiko.

Grüße
Biber
Member: Shokk84
Shokk84 Dec 03, 2008 at 11:06:53 (UTC)
Goto Top
hi biber!

danke für deine konstruktive antwort.

abgesehen von der permanenten connection, frage ich mich ob es eine möglichkeit gibt einfach nur das connect_timeout hochzuschrauben. sagen wir auf 2 tage? wäre das aus deiner sicht vertretbar? wenn nicht, warum nicht?! oder besteht eine möglichkeit das nach den 8h timeout die db automatisch reconnected und weiterarbeitet. also alle 8 stunden reconnect ?

lg
Member: Biber
Biber Dec 03, 2008 at 16:17:05 (UTC)
Goto Top
Moin Shokk84,

hmm.... den connect_timeout hochschrauben...
die Obergrenze wird vermutlich - die Jungs und Mädels von mySQL kochen ja auch nur mit Wasser - nur den Datentyp gegeben sein.
Soll heißen, wenn die den Parameter connect_timeout als INTEGER deklariert haben, dann kannst Du ihn max. auf 32767 (oder so ungefähr) festlegen.
Wenn der Wert als LONG vorgesehen ist, dann halt keine realistische Obergrenze für Dich.

Was ich nirgends gefunden habe ist ein dokumentierter Dummy-Wert für "gar kein Timeout", also ein gesetzter connect_timeout-Wert von 0 oder (-1), der <i> interpretiert wird als "no timeout".

Ich würde diesen Weg aber wirklich erst gehen, wenn Dir Deine Coder/CoderInnen glaubhaft versichern, es wäre programmiertechnisch ein Ding der Unmöglichkeit, von Clientseite zu prüfen "Ist eine Connection aktiv oder muss ich eine neue aufbauen."

Das Problem, das ich sehe ist unter anderem:
Ein Serverseitig gesetzter DB-whatever-timeout gilt für die ganze Datenbank.
User-unabhängig.
Bedeutet: JEDER Dackeluser kann sich unbegrenzt lange mit der DB connecten, wenn Du einmal diesen Wert auf unendlich setzt.
Aber Du kannst nur begrenzt viele Connections gleichzeitig zulassen.
Wenn Du nun ein paar Spezis dabeihast, die sich gegen Deine DB connecten und dann erstmal in den Weihnachtsurlaub fahren, dann sind die Connections WECH.

Grüße
Biber