Mike: Hinweis: MYSQL-Verbindung lokal viel schneller mit IP

Hallo, keine Frage aber bestimmt ein nützlicher Hinweis:

Ich fand gerade folgende Empfehlung bei php.net:

"...Immer wenn sie "localhost" oder "localhost:port" als Server angeben, wird die MySQL Client Bibliothek dies überschreiben und versuchen, sich zu einem lokalen Socket (named pipe unter Windows) zu verbinden. Wenn sie TCP/IP nutzen möchten, nutzen sie "127.0.0.1" anstatt "localhost"... "

Aus Neugierde getestet und WOW, ein Riesenunterschied.
Mit IP:         0.019031047821045 Sekunden
Mit LOCALHOST:  1.0340631008148 Sekunden

Auch wenn viele jetzt denken, ist doch ein alter Hut, ich kannte es nicht und bin auch schon ein paar Jahre dabei, deshalb glaube ich den Hinweis könnten einige zu schätzen wissen.

Vielleicht habt Ihr ja auch noch ein paar relative unbekannte aber doch nützliche kleine Tipps.

Gruss
Mike

  1. Mit IP:         0.019031047821045 Sekunden
    Mit LOCALHOST:  1.0340631008148 Sekunden

    Das ist seltsam. Das würde bedeuten, wenn du ein einfaches hello world ausgibst, aber eine Datenverbindung aufmachen möchtesst braucht das erstellen der Webseite 1 Sekunde? Das scheint mir doch ein wenig lang.
    Meine Webseite benutzt auch localhost und arbeitet ca. 100 Verbindungen inklusive Template erstellung und ein wenig hin und her rechnen in ca. 0,9 Sekunden.

    Gruß
    Enterprise Phasenprüfer auf Sektion 9
    T-Rex

    1. Hallo,

      Mit IP:         0.019031047821045 Sekunden
      Mit LOCALHOST:  1.0340631008148 Sekunden

      Das ist seltsam. Das würde bedeuten, wenn du ein einfaches hello world ausgibst, aber eine Datenverbindung aufmachen möchtesst braucht das erstellen der Webseite 1 Sekunde? Das scheint mir doch ein wenig lang.
      Meine Webseite benutzt auch localhost und arbeitet ca. 100 Verbindungen inklusive Template erstellung und ein wenig hin und her rechnen in ca. 0,9 Sekunden.

      es war aber kein "hello world", sondern ich habe bei einem aktuellen Projekt getestet und das fällt doch ein wenig grösser aus. Aber teste das mal mit deiner Webseite.

      Gruss
      Mike

    2. Mit IP:         0.019031047821045 Sekunden
      Mit LOCALHOST:  1.0340631008148 Sekunden

      Das ist seltsam. Das würde bedeuten, wenn du ein einfaches hello world ausgibst, aber eine Datenverbindung aufmachen möchtesst braucht das erstellen der Webseite 1 Sekunde? Das scheint mir doch ein wenig lang.
      Meine Webseite benutzt auch localhost und arbeitet ca. 100 Verbindungen inklusive Template erstellung und ein wenig hin und her rechnen in ca. 0,9 Sekunden.

      Der Unterschied zwischen 1.03 Sekunden und 0.9 Sekunden ist gleichbedeutend mit dem Unterschied zwischen einer Herrichtung und einer Hinrichtung.

      SCNR ;)

      1. Der Unterschied zwischen 1.03 Sekunden und 0.9 Sekunden ist gleichbedeutend mit dem Unterschied zwischen einer Herrichtung und einer Hinrichtung.

        Nein. Die 0,9 Sekunden sind bereits mit allen SQL Verbindungen und PHP Berechnungen und Template Erstellung etc... ich hab Mike so verstanden dass die erste Verbindung zur Datenbank 1 Sekunde dauert. Das würde in meinem Fall ca. 2 Sekunden bedeuten. Das wäre einfach mal die doppelte Zeit. Ergo zweifel ich das Testergebnis so wie ich es verstanden habe an.
        Und siehe da ich hatte recht, da Mike nicht die Verbindung alleine berechnet hat sondern ähnlich wie ich alle Berechnungen mit einbezieht.

        Gruß
        cooli
        T-Rex

  2. Hallo,

    Vielleicht habt Ihr ja auch noch ein paar relative unbekannte aber doch nützliche kleine Tipps.

    Eintrag in der Host-Datei:

    127.0.0.1 localhost

    und dann noch mal mit localhost testen.

    VG Lokal Ho(r)st

    1. Hi,

      Eintrag in der Host-Datei:
      127.0.0.1 localhost

      der ist aber standardmäßig sowieso drin - und das ist gut so, weil die Namensauflösung über die hosts-Datei die erste Stufe ist und deutlich schneller geht als eine DNS-Abfrage.

      Ciao,
       Martin

      --
      Chef:         Zum vierten Mal in dieser Woche erwische ich Sie nun schon beim Zuspätkommen. Was haben Sie dazu zu sagen?
      Angestellter: Dann muss heute Donnerstag sein.
      Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
      1. Hallo,

        Eintrag in der Host-Datei:
        127.0.0.1 localhost

        der ist aber standardmäßig sowieso drin - und das ist gut so, weil die Namensauflösung über die hosts-Datei die erste Stufe ist und deutlich schneller geht als eine DNS-Abfrage.

        nein, ist zwar drin aber nicht per Default aktiviert. Habe ich jetzt gemacht (Raute entfernt) und funktioniert problemlos, jetzt genau so schnell wie IP-Aufruf.

        Gruss
        Mike

        1. Mahlzeit,

          nein, ist zwar drin aber nicht per Default aktiviert. Habe ich jetzt gemacht (Raute entfernt) und funktioniert problemlos, jetzt genau so schnell wie IP-Aufruf.

          Welches Betriebssystem nutzt du denn?

          --
          42
          1. Hallo,

            Welches Betriebssystem nutzt du denn?

            win7(64bit)

            Originalhost-Datei:

            Copyright (c) 1993-2009 Microsoft Corp.

            This is a sample HOSTS file used by Microsoft TCP/IP for Windows.

            This file contains the mappings of IP addresses to host names. Each

            entry should be kept on an individual line. The IP address should

            be placed in the first column followed by the corresponding host name.

            The IP address and the host name should be separated by at least one

            space.

            Additionally, comments (such as these) may be inserted on individual

            lines or following the machine name denoted by a '#' symbol.

            For example:

            #      102.54.94.97     rhino.acme.com          # source server
            #       38.25.63.10     x.acme.com              # x client host

            localhost name resolution is handled within DNS itself.

            127.0.0.1       localhost

            ::1             localhost

            Gruss
            Mike

            1. Hi,

              Welches Betriebssystem nutzt du denn?
              win7(64bit)

              127.0.0.1       localhost

              ::1             localhost

              jetzt zweifle ich endgültig an der geistigen Zurechnungsfähigkeit der Windows-Entwickler, denn ...

              localhost name resolution is handled within DNS itself.

              ... das ist ja so, als würde man auf die Tageszeitung warten, um darin nachzulesen, wen man am Vortag getroffen haben könnte.
              Mit anderen Worten: Windows gibt die Frage nach der IP von "localhost" tatsächlich an den nächstbesten DNS weiter? Nicht zu fassen ...

              So long,
               Martin

              --
              Zwei Kumpels sitzen vor dem Computer. "Welche Suchmaschine benutzt du eigentlich meistens?" - "Prima Vera." - "Hmm, kenn' ich gar nicht." Dann geht die Tür auf: "Schatz ich habe deine Sonnenbrille wiedergefunden!" - "Prima, Vera!"
              Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
              1. Mit anderen Worten: Windows gibt die Frage nach der IP von "localhost" tatsächlich an den nächstbesten DNS weiter? Nicht zu fassen ...

                Der "nächstbeste DNS" ist bei Windows der eigene (Cache). Der wird demnach den Request nach localhost abfangen.

                Jörg Reinholz

                1. Moin,

                  Mit anderen Worten: Windows gibt die Frage nach der IP von "localhost" tatsächlich an den nächstbesten DNS weiter? Nicht zu fassen ...
                  Der "nächstbeste DNS" ist bei Windows der eigene (Cache).

                  ...falls man den nicht wegen häufiger Falschauskünfte (insbesondere im Zusammenhang mit wechselnden Hostname/IP-Kombinationen) deaktiviert hat.

                  Der wird demnach den Request nach localhost abfangen.

                  Gut, dann "bleibt's in der Familie". Aber irgendwann muss die Anfrage doch mal rausgegangen sein, und es überrascht mich, dass ein gewöhnlicher DNS-Server die Frage nach localhost überhaupt beantwortet.

                  Ciao,
                   Martin

                  --
                  If you believe in telekinesis, raise my hand.
                  Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                  1. Aber irgendwann muss die Anfrage doch mal rausgegangen sein, und es überrascht mich, dass ein gewöhnlicher DNS-Server die Frage nach localhost überhaupt beantwortet.

                    Drehbuch:

                    Browser fragt OS nach der IP für localhost. Und wartet.

                    OS wendet sich ab fragt die Registry: Wie ist denn das resolv-Dingens konfiguriert?
                    Registry sagt: dns-cache, files, smb-dns, dns

                    OS rnnt zum dns.cache und fragt nach ip von localhost.
                    dns-cache guckts sich selbst an und sagt, sich Eh! die ist hart verdrahtet.
                    dns-cache sagt zu OS: Entweder 127.0.0.1 und/oder  ::1 - das weiß ich jetzt nicht so genau.

                    OS spekuliert herum ob ipv6 oder die ip-Adresse gemeint ist, geht zurück und gibt die IP an den Browser.

                    1. Hallo,

                      Aber irgendwann muss die Anfrage doch mal rausgegangen sein, und es überrascht mich, dass ein gewöhnlicher DNS-Server die Frage nach localhost überhaupt beantwortet.

                      herzlichen Dank für diese plastische, anschauliche und unterhaltsame Darstellung.

                      Browser fragt OS nach der IP für localhost. Und wartet.

                      OS wendet sich ab fragt die Registry: Wie ist denn das resolv-Dingens konfiguriert?
                      Registry sagt: dns-cache, files, smb-dns, dns

                      Eigenartige Reihenfolge. Aus Performance-Gründen hätte ich eher files, dns-cache, dns, smb-dns erwartet. Aber gut, das ist ein Nebenschauplatz.

                      OS rnnt zum dns.cache und fragt nach ip von localhost.
                      dns-cache guckts sich selbst an und sagt, sich Eh! die ist hart verdrahtet.
                      dns-cache sagt zu OS: Entweder 127.0.0.1 und/oder  ::1 - das weiß ich jetzt nicht so genau.

                      OS spekuliert herum ob ipv6 oder die ip-Adresse gemeint ist, geht zurück und gibt die IP an den Browser.

                      ... und probiert womöglich erst die IPV6-Variante. Das würde erklären, dass ich den Effekt noch nicht beobachtet habe, weil ich bei meinen Hosts bisher entweder gar kein IPV6 konfiguriert hatte, oder zumindest IPV4 vor IPV6.

                      So long,
                       Martin

                      --
                      Die letzten Worte des Fallschirmspringers:
                      ELENDE SCHEISSMOTTEN!!
                      Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                      1. OS wendet sich ab fragt die Registry: Wie ist denn das resolv-Dingens konfiguriert?
                        Registry sagt: dns-cache, files, smb-dns, dns

                        Eigenartige Reihenfolge. Aus Performance-Gründen hätte ich eher files, dns-cache, dns, smb-dns erwartet. Aber gut, das ist ein Nebenschauplatz.

                        Das ist eine reine Spekulation. Aber bei der von Dir wie auch von mir als sinnvoll angesehenen Reihenfolge das hat es keinen Sinn, den Lokalhorst-Eintrag in der host-Datei auszunocken.

                        Übrigens: wenn man es nicht braucht, pardon - nicht gebrauchen kann, weil $ISP['IPv6']===false ist, dann ist es eine gute und performance-fördernde Idee, den IPv6 Treiber zu deaktivieren. Bei mir unter Linux war wegen dem das Syslog unnötig unübersichtlich (ich benutze als forwarder einen öffentlichen DNS, der auch IPv6-Adressen zurück gibt, weil mein $ISP das DNS kaputt macht, in dem er für unbekannte Adressen die IP eines werbeverseuchten Webservers rausgibt).

                        oder zumindest IPV4 vor IPV6.

                        Keine Ahnung. Ich denke, die API von IPv6-fähigen OS kennt da eine spezielle Vorschrift wie die Frage zu stellen ist und dann wird die Ausgabe durch den passenden Regex gejagt. Dann wäre die Reihenfolge irrelevant. Die Frage geht also an die cpp Proggis.

                        Jörg Reinholz

            2. Mahlzeit,

              win7(64bit)

              Das bestätigt meine Vermutung. Wieder ein Grund mehr, bei Linux zu bleiben. Die Grundkonfiguration von Windows hat einen weiteren Schwachpunkt.

              --
              42
  3. Hi,

    Ich fand gerade folgende Empfehlung bei php.net:

    "...Immer wenn sie "localhost" oder "localhost:port" als Server angeben, wird die MySQL Client Bibliothek dies überschreiben und versuchen, sich zu einem lokalen Socket (named pipe unter Windows) zu verbinden. Wenn sie TCP/IP nutzen möchten, nutzen sie "127.0.0.1" anstatt "localhost"... "

    Aus Neugierde getestet und WOW, ein Riesenunterschied.
    Mit IP:         0.019031047821045 Sekunden
    Mit LOCALHOST:  1.0340631008148 Sekunden

    Ich bin da auch vor einigen Jahren drauf gestossen. Es wird wohl daran liegen, dass mysql bei der Angabe von "localhost" zunächst :::1 ausprobiert und danach erst 127.0.0.1. Das liest sich z.B. auch so bei stackoverflow.

    Bis die Tage,
    Matti