Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

mySQL Verbindung von extern sehr langsam

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
tojas
PostRank 7
PostRank 7
Beiträge: 624
Registriert: 11.09.2003, 17:14
Wohnort: Berlin

Beitrag von tojas » 10.06.2010, 22:06

Hallo Leute,

vermutlich kennt sich hier der ein oder andere besser mit mysql aus als ich und kann mir einen Tipp geben...

Ich habe einen mysql Server, auf den ich auch von ausserhalb (=anderen Domains) zugreife. Soweit klappt das auch, jedoch ist der Zugriff von den externen Domains sehr langsam (mysql_connect benötigt ein paar Sekunden).

skip-name-resolve habe ich schon probiert, daran liegt es offensichtlich nicht.

Hat jemand eine Idee wie ich das beschleunigen kann?

Danke + sG
tojas

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Anonymous

Beitrag von Anonymous » 11.06.2010, 00:54

warum immer wieder eine neue connection aufbauen? versuchs mal mit einer persistenten Verbindung... macht natürlich nur Sinn wenn die externen scripte regelmäßig auf die db zugreifen...

https://php.net/manual/de/function.mysql-pconnect.php
https://www.php.net/manual/de/features. ... ctions.php

kostaki
PostRank 4
PostRank 4
Beiträge: 175
Registriert: 26.10.2009, 22:19
Wohnort: Berlin

Beitrag von kostaki » 11.06.2010, 09:04

Stehen die Server im gleichen Rechenzentrum?

tojas
PostRank 7
PostRank 7
Beiträge: 624
Registriert: 11.09.2003, 17:14
Wohnort: Berlin

Beitrag von tojas » 11.06.2010, 09:21

Danke erstmal für eure Antworten.
warum immer wieder eine neue connection aufbauen? versuchs mal mit einer persistenten Verbindung...
Die Frage ist, wie sich der (mysql)Server dann unter Last verhält. Ich vermute mal, das ich dann die max_connections auch erhöhen müsste. Aber ich teste das mal.
Stehen die Server im gleichen Rechenzentrum?
Nein.


sG
tojas

tojas
PostRank 7
PostRank 7
Beiträge: 624
Registriert: 11.09.2003, 17:14
Wohnort: Berlin

Beitrag von tojas » 11.06.2010, 10:21

Persistente Verbind habe ich jetzt getestet. Bringt auch was, aber ich müsste dazu whr. die Seiten zu sehr umstricken. Außerdem erhöht es die gleichzeitigen connections ungemein -> also nur Notlösung...

Hier mal die aktuelle Zeitmessung für eine DB Verbindung und select_db:

Dauer gesamt: 3.833962 Sekunden
Dauer connection: 3.825246 Sekunden
Dauer select_db: 0.008716 Sekunden

Ich wäre für weitere Ideen dankbar ;-)

***EDIT***

Weiß jemand, wie ich testen kann ob skip-name-resolve wirklich aktiv ist?

sG
tojas

Synonym
PostRank 10
PostRank 10
Beiträge: 3708
Registriert: 09.08.2008, 02:55

Beitrag von Synonym » 11.06.2010, 10:46

zeig doch mal Deine my.cnf für den Server. Ich persönlich würde aber schon auf "--skip-name-resolve" tippen.

Nachtrag:
Weiß jemand, wie ich testen kann ob skip-name-resolve wirklich aktiv ist?
Ganz einfach, wenn "skip-name-resolve" aktiv ist, dann kannst Du Dich nur per IP mit dem MySQL-Server verbinden, per Host geht dann nicht.

Wie sind denn Deine Freigaben eingetragen? Also das "GRANT ... ON mysql.user TO 'user_name'@'host_name';" Ist "host_name" eine IP oder ein Host?

Wie verbindest Du Dich mit dem Server - als IP oder per Host?

Kurz gesagt, mysql_connect('mysql-server.de', 'user', 'pass') geht nicht, wenn skip-name-resolve aktiv.

SloMo
PostRank 10
PostRank 10
Beiträge: 4880
Registriert: 04.01.2005, 18:26

Beitrag von SloMo » 11.06.2010, 10:59

Mal ganz dumm nachgefragt, beim skip-name-resolve geht es um DNS, richtig? Welcher DNS braucht denn über 3 Sekunden, um eine Namensauflösung zu erledigen, die andauernd gemacht wird? Den DNS sollte man mal untersuchen. Außerdem mal HOST_CACHE_SIZE prüfen, denn eigentlich sollte MySQL die Host-Auflösung cachen... nur falls sehr viele Hosts drauf zugreifen, wird wieder der DNS-Fallback benutzt.

@Synonym: In der Mysql-Doku steht "You can disable DNS host name lookups by starting mysqld with the --skip-name-resolve option. However, in this case, you can use only IP numbers in the MySQL grant tables."

Es geht dabei also um die Grant-Tables (Zugriffsberechtigung), nicht um den PHP-seitigen Verbindungsaufbau via mysql_connect(). PHPs mysql_connect() wird trotzdem den Namen auflösen können.

Synonym
PostRank 10
PostRank 10
Beiträge: 3708
Registriert: 09.08.2008, 02:55

Beitrag von Synonym » 11.06.2010, 11:19

@SloMo.
Es geht dabei also um die Grant-Tables (Zugriffsberechtigung), nicht um den PHP-seitigen Verbindungsaufbau via mysql_connect(). PHPs mysql_connect() wird trotzdem den Namen auflösen können.
Gut, stimmt, falsch ausgedrückt. Meine Server machen alle keinen Lookup, also geht das bei mir dann nur nicht. Dann kann es aber auch gut an den DNS-Einträgen selbst liegen. Irgend ein Sever / Dienst muss den Namen dann auflösen (gethostbyname) und wenn dann die Einträge nicht passen, dann gibt es eine Schleife, bis zum Timeout.
Welcher DNS braucht denn über 3 Sekunden, um eine Namensauflösung zu erledigen, die andauernd gemacht wird?
Viele selbst zusammengeschüsterte.

Anonymous

Beitrag von Anonymous » 11.06.2010, 11:46

tojas hat geschrieben:Danke erstmal für eure Antworten.
warum immer wieder eine neue connection aufbauen? versuchs mal mit einer persistenten Verbindung...
Die Frage ist, wie sich der (mysql)Server dann unter Last verhält. Ich vermute mal, das ich dann die max_connections auch erhöhen müsste. Aber ich teste das mal.
nunja... es wird halt eine Verbindung hergestellt und die bleibt bestehen... aber auf die Anzahl der connections kann es sich auch positiv auswirken... wenn du mehrere instanzen eines scriptes auf dem selben server gleichzeitig am laufen hast nutzen die alle diese eine persistente Verbindung anstatt jeweils eine eigene aufzubauen... könnte so also die Anzahl der gleichzeitigen Verbindungen verringern....

kostaki
PostRank 4
PostRank 4
Beiträge: 175
Registriert: 26.10.2009, 22:19
Wohnort: Berlin

Beitrag von kostaki » 11.06.2010, 12:09

Wie weit stehen die Server den auseinander? Einer in China der andere in den USA? Webserver und DB Server sollten wenn möglich im gleichen Netz stehen, besonders wenn es um Userwebseiten geht!

tojas
PostRank 7
PostRank 7
Beiträge: 624
Registriert: 11.09.2003, 17:14
Wohnort: Berlin

Beitrag von tojas » 11.06.2010, 12:55

Hi Leute,

ich habe das Problem gefunden, es liegt an der Firewall auf dem Server, wo die mysql DB läuft.

Komischerweise hatte ich das aber so konfiguriert, das port 3306/tcp offen ist??

@Marco:

Die Server stehen alle hier in DE

Meine Firewallregeln seht ihr hier: https://www.imagebam.com/image/64f1b684069736

Danke+schöne Grüße
tojas

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag