Bastian Schnitzler: Problem: Zuviele Connections

Hallo!
Immer wenn ich mit php auf meine MySQL-Datenbank zugreifen will, kommt folgendes:

Warning: mysql_connect(): User 'funjava' has exceeded the 'max_connections' resource (current value: 200) in /usr/export/www/vhosts/funnetwork/hosting/krampfader/extremeV2/templates/checkidentity.php on line 9
Die Verbindung zu Datenbank kann nicht hergestellt werden: User 'funjava' has exceeded the 'max_connections' resource (current value: 200)

Was heisst das?
Ist das ein monatliches Limit oder sowas?
Sind da zuviele offene Verbindungen?
Wie kann ich meine Datenbank wieder verwenden?

Vielen Dank im Voraus,
euer BaSchni

  1. Was heisst das?
    Ist das ein monatliches Limit oder sowas?
    Sind da zuviele offene Verbindungen?
    Wie kann ich meine Datenbank wieder verwenden?

    Hört sich so an, als hätte dein Skript ganz eindeutig zu viele Verbindungen zur DB.

    Läuft da irgendwo eine Schleife oder schlimmer noch eine Rekursion mit DB Anfragen / Connections?
    Sowas sollte auf keinen Fall in einem PHP Skript zu finden sein!

    Bye, Transmitter

    1. Hallo!

      Hört sich so an, als hätte dein Skript ganz eindeutig zu viele Verbindungen zur DB.

      Ich glaube das hat weniger mit dem php-Script zutun. DA sind nur jeweils 1 Verbindung zur Datenbank. ABer da ich bei jedem Seitenaufruf die Datenbank auslese, kanns vielleicht an einem Limit liegen?
      mfg

      1. Ich glaube das hat weniger mit dem php-Script zutun. DA sind nur jeweils 1 Verbindung zur Datenbank. ABer da ich bei jedem Seitenaufruf die Datenbank auslese, kanns vielleicht an einem Limit liegen?

        Hmm .. wüsste ich jetzt nicht, müsste wenn dann in der Config deiner MySQL DB stehen .. aber monatliches Limit .. hmm?
        Andere Seiten mit SQL Connections funktionieren noch?

        1. Hmm .. wüsste ich jetzt nicht, müsste wenn dann in der Config deiner MySQL DB stehen .. aber monatliches Limit .. hmm?
          Andere Seiten mit SQL Connections funktionieren noch?

          monatliches limit war ja auch nur son lueckenfueller, glaub ich selbst net dran^^
          die config kann ich nicht aufrufen, da es nicht mein Server ist...

          mfg

  2. Nabend

    Warning: mysql_connect(): User 'funjava' has exceeded the 'max_connections' resource (current value: 200)

    Ich kenn mich leider nur mit Oracle aus, aber wenn es bei mysql soetwas wie eine *.ini Datei gibt, dann könntest du in dieser Ini-Datei einen Parameter finden, um die maximalen Connections pro User oder der gesamten Datenbank zu erhöhen. Wenn es so eine Datei gibt, dann such doch einfach mal nach Session, Connection oder dem Wert 200.

    Gruß
    coolblue

    1. Hallo!

      Wenn es so eine Datei gibt, dann such doch einfach mal nach Session, Connection oder dem Wert 200.

      Danke fuer den Tipp, aber leider ist der mysql-Server nicht meiner^^
      Und wie kann man diese Connection oder Sessions wieder beenden?

      mfg

      1. Danke fuer den Tipp, aber leider ist der mysql-Server nicht meiner^^
        Und wie kann man diese Connection oder Sessions wieder beenden?

        Das kommt ganz darauf an, auf welchem System du arbeitest. Unter Oracle gibt es einen SQL-Befehl "kill session", leider weiß ich nicht, ob es das auch für mysql gibt. Ansonsten muss du den sql-Prozess beenden. Bei Windows am besten über den Task-Manager, bei Linux findest du den Prozess mit

        ps -ef | grep "irgend ein suchstring"

        Dann nimmst du die PID und setzt den Befehl kill -1 <PID> ab.

        Gruß
        coolblue

        1. Das kommt ganz darauf an, auf welchem System du arbeitest. Unter Oracle gibt es einen SQL-Befehl "kill session", leider weiß ich nicht, ob es das auch für mysql gibt. Ansonsten muss du den sql-Prozess beenden. Bei Windows am besten über den Task-Manager, bei Linux findest du den Prozess mit

          Wie gesagt ist es nicht mein Server

          mfg

      2. Und wie kann man diese Connection oder Sessions wieder beenden?

        Die werden nach einem gewissen Timeout vom Server selbst beendet.

  3. Moin Bastian,

    Was heisst das?
    Ist das ein monatliches Limit oder sowas?
    Sind da zuviele offene Verbindungen?
    Wie kann ich meine Datenbank wieder verwenden?

    da ist vieleciht etwas Code fällig, die Glaskugel zeigt nix.

    Möglich ist das du deine DB Verbindung nicht schließt und sie immer wieder neu auf machst und dann ist irgendwann zapp, weil zuviele Verbindungen bestehen.

    Grüsse
    Mike

    --
    Freunde kommen und gehen. Feinde sammeln sich an.
    1. HI!

      Möglich ist das du deine DB Verbindung nicht schließt und sie immer wieder neu auf machst und dann ist irgendwann zapp, weil zuviele Verbindungen bestehen.

      Ich schliesse meine Verbindungen immer. Wie gesagt, nachdem ich die Datenbank oefter aufgerufen habe, tat er das dann auch bei Scripten, die vorher funktioniert haben, nicht mehr.

      Was ist denn mit Verbingungen die man nicht beendet hat, bleiben die fuer immer bestehen???

      euer Basti

      1. Moin Bastian,

        Was ist denn mit Verbingungen die man nicht beendet hat, bleiben die fuer immer bestehen???

        "normalerweise" endet die Verbindung mit der Beendigung des Scripts. Das ist aber "unsauber". Ich bevorzuge die Verbindung expliziet zu beenden.

        Der Fehler muss irgendwo in deinem Script liegen. Aber No Script, No
        Debugging.

        Grüsse
        Mike

        --
        Freunde kommen und gehen. Feinde sammeln sich an.
        1. hi

          "normalerweise" endet die Verbindung mit der Beendigung des Scripts. Das ist aber "unsauber". Ich bevorzuge die Verbindung expliziet zu beenden.

          wie gesagt beende ich die Verbindungen immer, und Code habe ich auch gepostet -> Zweiter Beitrag

          mfg

  4. Hier Beispielcode, aufrufbar unter http://kramfader.funpic.de/extremeV2/index.php?mode=admin:

    <?php
    session_start();
    if(ISSET($_SESSION['Username']) && ISSET($_SESSION['Passwort']))
    {
     $Username = $_SESSION['Username'];
     $Passwort = $_SESSION['Passwort'];
    }
    include("config.php");
    mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die ('Die Verbindung zu Datenbank kann nicht hergestellt werden: ' . mysql_error());
    mysql_select_db($mysqldb);
    $results = mysql_query("SELECT * FROM xtremecrew WHERE Nickname = '$Username' and Passwort = '$Passwort' and Rang = '1'");
    mysql_close();
    ?>

    1. Moin nochmal,

      mysql_connect($mysqlhost, $mysqluser, $mysqlpwd)

      das ist besser, "sauberer":

      $db_pointer=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd)

      mysql_close($db_pointer);

      Wird vielleicht in deinem Include auche eine DB Verbindung hergestellt?

      Grüsse
      Mike

      --
      Freunde kommen und gehen. Feinde sammeln sich an.
      1. Hi, nein im config werden nur die mysql-daten festgelegt.
        vielleicht liegt es ja an der 'unsauberen' close anweisung, ich werde das mal anpassen.
        dein Bastian

    2. Moin Herr Schnitzler ;-)

      »» Hier Beispielcode, aufrufbar unter http://kramfader.funpic.de/extremeV2/index.php?mode=admin:

      Heisa Hopsa, wie Karlson vom Dach sagt:
      Diese Page wurde nicht gefunden.
      http://kramfader.funpic.de/extremeV2/index.php?mode=admin

      Grüsse
      Mike

      --
      Freunde kommen und gehen. Feinde sammeln sich an.