Tom: APACHE-PHP-MySQL Fehlermeldung

Hello,

ich habe zur Kontrolle den simpel-Code für die Fehlermeldung eingebaut:

$con=@mysql_connect(HOSTNAME,SITE_USER,PW_SITE_USER);

if(!$con)
{
  mail('tom@bitworks.de','MySQL-Server ausgefallen','automatische Mitteilung '.date('d.m.Y H:i:s'));
  die(N."Der Datenbankserver ist zur Zeit nicht erreichbar.".N);
}

Nun bekomme sich seitdem gelegentlich eine eMail, aber bei der Kontrolle ist der Server dann gar nicht ausgefallen. Woran kann das liegen? Der Traffic auf der Seite ist verhältnismäßig niedrig. Nur etwa 15 bis 20 Besucher à 1-20 Seiten à 1-5 Mal durchblättern à 20-100 Requests pro Stunde.

Mx also 20*20*5*100 = 200.000 Requests pro Stunde => 56 Requests pro Sekunde.

Die letzten Tests ergaben ca. 1.350 mögliche Requests pro Sekunde für den Server.

Da sehe ich also nicht das Problem.

Harzliche Grüße aus http://www.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
  1. yo,

    Nun bekomme sich seitdem gelegentlich eine eMail, aber bei der Kontrolle ist der Server dann gar nicht ausgefallen.

    deine kontrolle überprüft nicht, ob der server noch da ist, sondern ob die verbindung erfolgreich hergestellt werden konnte. das ist ein unterschied.

    Ilja

    1. Hello,

      Nun bekomme sich seitdem gelegentlich eine eMail, aber bei der Kontrolle ist der Server dann gar nicht ausgefallen.

      deine kontrolle überprüft nicht, ob der server noch da ist, sondern ob die verbindung erfolgreich hergestellt werden konnte. das ist ein unterschied.

      Guter Hinwweis. Aber wie teste ich die Existenz des Servers in PHP?
      Muss ich da mit einem Shell-Befehl und  "/etc/inid.d/mysql status" arbeiten, oder gibt es eine PHP-Funktion, die ich übersehen habe?

      Harzliche Grüße aus http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
      1. yo,

        Guter Hinwweis. Aber wie teste ich die Existenz des Servers in PHP?

        ich bin da ein wenig der falsche ansprechpartner. das wäre so, als wenn man den bauer nach der neuesten mode fragen würde. ;-)

        aber eine sache erscheint mir als sinnvoll, nämlich die überprüfung auf einen seperaten rechner zu installieren. der datenbankserver kann unter anderem auch dadurch "unten" sein, weil der komplette rechner ausgefallen ist. und dann wird auch kein script oder cron job anspringen. mit dem zweiten rechner hat man zumindestenz eine doppelte sicherheit, sprich beide müssen gleichzeitig ausfallen, um nicht mitzubekommen, dass der datenbankserver nicht mehr funktioniert.

        Ilja

      2. hi,

        deine kontrolle überprüft nicht, ob der server noch da ist, sondern ob die verbindung erfolgreich hergestellt werden konnte. das ist ein unterschied.

        Guter Hinwweis. Aber wie teste ich die Existenz des Servers in PHP?
        Muss ich da mit einem Shell-Befehl und  "/etc/inid.d/mysql status" arbeiten, oder gibt es eine PHP-Funktion, die ich übersehen habe?

        vielleicht nimmst du erst mal die ausgabe von mysql_error() mit in die mail auf - je nach art des problems dürfte sich das ja auch unterschiedlich äussern.

        gruß,
        wahsaga

        --
        "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
        1. Hello,

          deine kontrolle überprüft nicht, ob der server noch da ist, sondern ob die verbindung erfolgreich hergestellt werden konnte. das ist ein unterschied.

          Guter Hinwweis. Aber wie teste ich die Existenz des Servers in PHP?
          Muss ich da mit einem Shell-Befehl und  "/etc/inid.d/mysql status" arbeiten, oder gibt es eine PHP-Funktion, die ich übersehen habe?

          vielleicht nimmst du erst mal die ausgabe von mysql_error() mit in die mail auf - je nach art des problems dürfte sich das ja auch unterschiedlich äussern.

          Ja klar.
          Wahrscheinlich wird es wirklich mal einen Moment lang nicht genug Connections geben. Das müsste ich dann ja im Error-Text drinstehen haben.

          Harzliche Grüße aus http://www.annerschbarrich.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau
          1. hi,

            Wahrscheinlich wird es wirklich mal einen Moment lang nicht genug Connections geben. Das müsste ich dann ja im Error-Text drinstehen haben.

            und vielleicht kannst du das auch noch für die vergangenheit rausbekommen, mysql hat ja die möglichkeit, solche fehler zu loggen: [link.http://dev.mysql.com/doc/mysql/de/Error_log.html].

            wenn du keinen direkten zugriff auf dieses log haben solltest, frag doch mal deinen hoster.

            gruß,
            wahsaga

            --
            "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
            1. hi,

              und vielleicht kannst du das auch noch für die vergangenheit rausbekommen, mysql hat ja die möglichkeit, solche fehler zu loggen: http://dev.mysql.com/doc/mysql/de/Error_log.html.

              gruß,
              wahsaga

              --
              "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
              1. Hello,

                und vielleicht kannst du das auch noch für die vergangenheit rausbekommen, mysql hat ja die möglichkeit, solche fehler zu loggen: http://dev.mysql.com/doc/mysql/de/Error_log.html.

                Es sind einige Log-Einträge da, aber leider keiner, der mir da Aufschluss gibt über die Abstürze und die Connection-Fehler. Aber bei der Gelegenheit habe ich gleich noch einen Fehler entdeckt und beseitigt. Der mysqld suchte beim Start immer eine inno-DB, mit der ich aber gar nicht arbeite.

                Harzliche Grüße aus http://www.annerschbarrich.de

                Tom

                --
                Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                Nur selber lernen macht schlau