Jump to content
InvisionCommunity.de - Der Deutsche Invision Community Support
Sign in to follow this  
Minotauro

Hab die Schnauze langsam voll!

Recommended Posts

Ein Freund und ich kriegen andauernd (2-3x Mt.) Datenbankfehler! Eben war ich wieder dran!

Hab das Problem bereits mal auf dem anderen "Support"-Board beschrieben und darauf einen Mod eingebaut, welcher offene Tabellen schliesst (glaube Stefan half mir damals), der scheint ebenfalls nicht zu funktionieren (bei uns beiden nicht!).

Fehler:

mySQL query error: SELECT moderator.mid as is_mod, moderator.allow_warn, m.id, m.name, m.mgroup, m.password, m.email, m.restrict_post, m.view_sigs, m.view_avs, m.view_pop, m.view_img, m.auto_track,

                              m.mod_posts, m.language, m.skin, m.new_msg, m.show_popup, m.msg_total, m.time_offset, m.posts, m.joined, m.last_post,

                  m.last_visit, m.last_activity, m.dst_in_use, m.view_prefs, m.org_perm_id, m.temp_ban, g.*

                  FROM ibf_members m

                    LEFT JOIN ibf_groups g ON (g.g_id=m.mgroup)

                    LEFT JOIN ibf_moderators moderator ON (moderator.member_id=m.id OR moderator.group_id=m.mgroup )

                  WHERE m.id=1


mySQL error: Too many connections

mySQL error code: 

Date: Wednesday 19th of November 2003 12:37:10 AM

Gibt's dafür keine Lösung (der Hoster ist auf dem neusten Stand mit der Software und kennt keine ähnliche Vorfälle), wechsle ich den Boardscript! Hab noch nie von ähnlichen Problemen bei anderen Forenscripten gehört. Das selbe Problem hatte ich schon beim 1.1.2!

:angry:

Edited by Minotauro

Share this post


Link to post

Da die anderen mit derselben Software arbeiten, diese Probleme aber nicht haben, liegt der Verdacht nahe, dass es doch am Hoster liegt.

Das er auf dem neuesten Stand der Technik ist, tut relativ wenig zur Sache - die Anzahl der zulässigen Datenbankconnects ist zu niedrig.

Also an dem Forum liegt es mit Sicherheit nicht, da wohl kaum ein Forum mit der Datenbank so schonend umgeht, wie das IPB. Kannst Deinem 'Hoster' ja mal diesen Link geben, vielleicht ist er ja bereit, Dir ein paar mehr Connects zu gönnen ;)

Wobei ich allerding bezweifel, dass der Dir 100 Connects erlaubt. Es klingt ein bisschen so, als hätte Dein Hoster die max_connects runtergesetzt (warum wohl :rolleyes: ) und stellt sich doof.

Kann natürlich sein, dass ich da falsch liege, aber mich würde auf jeden Fall mal der für Dich eingestellte Wert interessieren.

Share this post


Link to post

Also ich glaub kaum, das ich so einen Eingriff in die DB KLasse für dich gemacht habe.

Wie Christian schon sagt, liegt es an deinem Hoster und nicht an dem Forum. Es wird ja auch nur eine Verbindung pro User aufgebaut, da spielen die Queries und die Programmierung des Forums keine Rolle.

Beobachte mal, wieviele User gleichzeitig auf dem Forum unterwegs sind, wenn das mit dem Fehler passiert.

Share this post


Link to post

Hallo Zusammen

Also ich weiss nicht recht, schliesslich bezahle ich für meinen Internetaufrtittt fast 20.- im Monat, da sollte sowas doch funktionieren. :angry:

Naheliegend ist es natürlich schon, zumal wieder beide beim selben Hoster sind aber der hat mir das wirklich versichert...werde ihn nochmals anschreiben und den Link mit senden, danke.

Habe die Schnauze echt langsam voll! Es ist bereits das xte mal und dabei kam es schon zu massiven Datenverlusten! Sorry, falls ich ier etwas "laut" geworden bin aber ich denke ich versteht... ;)

@ Stefan

Ist ja auch egal, zumindest hat mir da wer geholfen. :)

PS: Wir haben noch sehr wenige User (vielleicht 100), dabei sind um die 10-15 manchmals gleichzeitig online, reicht das aus um diesen Fehler hervorzurufen? Seltsamer weise werden ofters mal Tabellen nicht geschlossen, klann das zusammenhängen?

Danke & Gruss.

Edited by Minotauro

Share this post


Link to post

Naja, wie schon gesagt wurde liegts definitif an den Datenbank Connections, die zu viel sind. Eigentlich hätte dein Hoster den Fehler sofort sehen sollen, wenn du ihm die Fehlermeldung mit geschrieben hast. Denn aus der Fehlermeldung geht das ja eindeutig hervor:

mySQL error: Too many connections

mySQL error code:

Date: Wednesday 19th of November 2003 12:37:10 AM

Und das dadurch Daten verloren gehen kann ich mir eigentlich nicht vorstellen... Aber alles in allem liegts (leider) an deinem Hoster. Auch wenn du Datenverluste hast kann da das Board nichts für, sondern ists meist die Schuld der MySQL Datenbank ;)

Share this post


Link to post

Die Fehlermeldung besagt einfach, das keine Verbindung zum Datenbankserver aufgenommen werden kann, weil schon zu viele offene Verbindungen vorhanden sind und der Server einfach die Anfrage ignoriert. Demnach kann dadurch auch keinerlei Datenverluste auftreten, sondern das Problem wird wahrscheinlich an der mySQL Datenbank Version 4.0.15 liegen, die anscheinend ein paar Macken hat und du sagtest ja, das dein Hosetr auf den neusten Stand ist.

Eine Verbindung zur Datenbank bleibt auch nur solange bestehen, wie das Script aktiv ist, also sobald du die HTML Seite siehst, sollte die Verbindung geschlossen sein, außer du benutzt eine persistente Verbindung. Diese kann man aktivieren in der Datenbankklasse, steht aber normalerweise auf 0, sprich ist ausgeschaltet. Sollte diese jedoch aktiv sein, kann ich mir schon vorstellen, das dann relativ schnell die Grenze bei der Datenbank erreicht ist.

Schau mal in deiner mySQL.php nach der rotmarkierten Zeile:

    var $obj = array ( "sql_database"  => ""        ,

                      "sql_user"      => "root"    ,

                      "sql_pass"      => ""        ,

                      "sql_host"      => "localhost",

                      "sql_port"      => ""        ,

                      "persistent"    => "0"        ,

                      "sql_tbl_prefix"        => "ibf_"      ,

                      "cached_queries" => array(),

                      'debug'          => 0,

                    );

Muß unbedingt auf 0 stehen und um sicher zu gehen, das du es dir nicht irgendwo doch setzt, ändere mal folgende Codezeilen in der gleichen Datei

   	 if ($this->obj['persistent'])
   {
        $this->connection_id = mysql_pconnect( $this->obj['sql_host'] ,
              $this->obj['sql_user'] ,
              $this->obj['sql_pass']
           );
       }
       else
       {
 $this->connection_id = mysql_connect( $this->obj['sql_host'] ,
             $this->obj['sql_user'] ,
             $this->obj['sql_pass']
           );
 }
in
   	 if ($this->obj['persistent'])
   {
        $this->connection_id = mysql_pconnect( $this->obj['sql_host'] ,
              $this->obj['sql_user'] ,
              $this->obj['sql_pass']
           );
 echo "P-Verbindung";
       }
       else
       {
 $this->connection_id = mysql_connect( $this->obj['sql_host'] ,
             $this->obj['sql_user'] ,
             $this->obj['sql_pass']
           );
 echo "N-Verbindung";
 }

Bekommst du immer "N-Verbindung" angezeigt, ist alles okay und es muß am Hoster liegen. Solltest du die andere Meldung bekommen, könnte dies ein Grund für die auftretende Fehlermeldung sein.

Share this post


Link to post

Jetzt steht da oben "N-VerbindungN-Verbindung".

Der hoster hat mir gesagt, dass ich 512 Connects machen kann. Daran dürfte es dann kaum liegen.

Eins muss ich dazu noch sagen, der oben aufgewführte Fehler ist bihser eine Ausnahme. In der Regel werden Tabellen nicht mehr geschlossen und das hat ja nichts mit dem obigen Fehler zu tun. Dann muss ich jeweils die Tabellen manuelle (phpmyadmin) reparieren und dann geht alles wieder, dabei kommt es dann eben oft zu Datenverlusten. DAS ist auch das eigentlich e Problem, dummerweise scheint es gerade diesmal ein Ausnahmefehler gewesen zu sein und nicht der Standardfehler.

Habe bereits mal mit meinem Hoster (www.hostpoint.ch) gesprochen und das Problem erklärt, daraufhin meinte er eben, dass er auf dem neusten Standard ist und das wahrschenilich ein Problem des verwendetetn Fornescripts sei, dass dieser die Tabellen nicht mehr richtig schliesse! Das hab ich ja jeweils selber bemerkt bloss muss das eben ein Ende haben mit dem "Tabellen nicht mehr schliessen"! Das geht ja nun nicht.

Idee?

Share this post


Link to post

Und nochmal: Es liegt nicht am IPB, sondern wie schon oben erwähnt an der neuesten MySQL Version, die verbuggt ist. Sollte dein Hoster Eigentlich auch selbst wissen, aber anscheinend ja nicht ;)

Und Datenverluste gibts auch nicht, denn die Themen die Fehlen kann man immer wieder Herstellen, dazu schau dir mal dieses Tutorial an...

Share this post


Link to post

Wenn Schreibvorgänge in Tabellen der Datenbank nicht beendet werden, dann kann (und wird) es zu Datenverlusten bei nicht transaktionssicheren Tabellentypen (wie MyISAM) kommen. Das betrifft dann die jeweiligen Einträge, auf die schreibend zugegriffen wurde. Das ist aber kein Problem des Boards, sondern des MySQL-Daemons.

Gerade die MySQL-Version 4.0.15a (und Vorgängerversionen) hat einige Bugs, die den mysqld-Prozeß abstürzen lassen. Wenn dies während eines Schreibzugriffes passiert, dann kommt es eben zu Datenverlust. Das kann in verschiedenen Formen passieren, z.B. defekte Tabellen, die repariert werden müssen oder z.B. das Fehlen eines vorher vorhandenen Eintrags in einer Tabelle etc. Bei MySQL 4.0.15a werden manchmal einzelne Einträge gelöscht, die im Board dann z.B. ein Forum oder ein Thema "verschwinden" lassen.

Eine Lösungsmöglichkeit, bis die Bugs in MySQL irgendwann einmal beseitigt sind, ist das Umstellen der Tabellen in der Datenbank auf einen transaktionssicheren Tabellentypen (vorzugsweise InnoDB). Selbst wenn der mysqld-Prozeß hängen bzw. abstürzen sollte während eines Schreibzugriffes, kommt es dann zu keinem Datenverlust, da die Daten (z.B. durch Rollbacks) wiederhergestellt werden. Deshalb heißt dieser Tabellentyp ja auch transaktionssicher. Es wird dafür nur etwas mehr Speicherplatz benötigt, was aber gut zu verschmerzen ist.

Ich kann jedem, dessen Hoster MySQL ab Version 4 einsetzt, nur dringend empfehlen, eine Umstellung auf den transaktionssicheren Tabellentypen InnoDB durchzuführen. Ich habe damit nur gute Erfahrungen gemacht und bin von den zahlreichen MySQL4-Problemen seitdem verschont geblieben und hatte seitdem auch keinerlei Datenverluste mehr. Und einen Performance-Unterschied, den man evtl. wegen des Transaktionsoverheads annehmen könnte, gibt es in der Praxis auch nicht.

Gruß,

AC

PS: Die fehlende Unterstützung von Volltext-Indizes kann man ebenso gut verkraften, da man aus dem FULLTEXT-Index einen normalen Index machen kann und in der Praxis keinen Unterschied merkt. Und das, was InnoDB mehr an Speicherplatz benötigt, wird durch die Einsparung des viel Speicherplatz verbrauchenden FULLTEXT-Indexes wieder ausgeglichen. Im Endeffekt ist die DB-Größe dann ungefähr genauso groß ... ;)

Edited by AliCremerU333

Share this post


Link to post

Jetzt steht da oben "N-VerbindungN-Verbindung".

Ich frag mich gerade, warum das zweimal bei dir steht. Normalerweise dürfte es nur einmal dort auftauchen, denn es wird nur eine Verbindung pro User erstellt. Hast du vielleicht irgendwelche Mods drinne?

Oder vielleicht andere Scripts nebenbei laufen, die auch auf die DB zugreifen? Countersystem zum Beispiel verbrauchen ziemlich viel Resourcen.

Ansonsten hat AliCremerU333 eine sehr ausführliche Erklärung zu dem Problem mit den Datenverlusten geschrieben. :)

Share this post


Link to post

Ansonsten hat AliCremerU333 eine sehr ausführliche Erklärung zu dem Problem mit den Datenverlusten geschrieben. :)

Siehe hier: http://www.ipbsupport.de/board/index.php?showtopic=98 ;)

Gruß,

AC

PS: Vielleicht schreibe ich mal ein kleines Tool zum Testen, zur Konvertierung, etc. Das könnte dann auch wunderbar mit meinem Backup-/Restore-Tool für große Datenbanken verbunden werden.

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

×