2009-08-18 7 views
18

Ich verwende JDBC, um eine Verbindung zu MySQL herzustellen. Wenn es um localhost:3306 ist, ist alles in Ordnung.Warum ist die Verbindung zum MySQL-Server so langsam?

Wenn ich jedoch meine Anwendung auf einen anderen Computer im Intranet verschiebe und <Intranet-IP>:3306 für die Verbindung mit der MySQL-Datenbank verwende, dauert es etwa 1 Minute, um eine Verbindung zu MySQL herzustellen. Was ist los damit?

Antwort

32

Nun, es könnte ein DNS-Problem sein. Sie können die Suche nach DNS-Hostnamen deaktivieren, indem Sie mysqld mit der Option --skip-name-resolve in der Konfigurationsdatei starten.

Lesen Sie hier, um weitere Informationen: http://dev.mysql.com/doc/refman/5.0/en/host-cache.html

+0

Vielen Dank! – MemoryLeak

+0

Ich hatte dieses Problem und in der Tat war es ein umgekehrtes DNS-Problem – acemtp

+12

Nur um klar zu sein, '--skip-name-resolve' würde als Befehlszeilenoption beim Starten von MySQL verwendet werden, während' skip-name-resolve' (ohne den doppelten Bindestrich vor) würde in der Konfigurationsdatei verwendet werden. – JYelton

1

Firewalls, Internet, Routing usw. etc verlangsamt Ihre Verbindung.

Sie sollten stattdessen Ihre Datenbank auf ein Intra-Netz setzen. Halte es lokal und hinter deiner großen Firewall. Sie können natürlich Firewall und Sicherheit zwischen Computern haben. Ich würde empfehlen, dass Sie Ihre MySQL-Datenbankverbindung nicht ungefiltert auf diese Weise dem Internet zugänglich gemacht haben.

+0

es ist ein Intranet IP! – MemoryLeak

+0

ah, ich sehe, Sie haben Ihre Frage bearbeitet :) gut zu sehen, dass Sie eine Antwort auf Ihre Frage gefunden haben. – Makach

7

Für mich ist es diese Lösung war ich hier, wenn IP6-Konnektivität aktiviert ist, Verbindung „localhost“ zu langsam sein kann, anstatt die IP-Adresse verwenden, 127.0.0.1. Das hat für mich funktioniert.

my mysql slow to connect problem was solved by this solution

+0

Bei der Behebung einer langsamen MediaWiki-Installation wurde dieses Problem bemerkt. mysql_connect brauchte fast eine Sekunde. Die Konfiguration von localhost auf 127.0.0.1 geändert und von 1021ms auf 7ms geändert. Vielen Dank! – jmgardn2

+0

Danke! Dies hat gerade eine von mir gepostete Problemfrage gelöst. Wer wusste, dass IPv6 sich so sehr mit den neuesten MySQL-Versionen herumschlagen würde. –

11

The --skip-name-resolve arbeitete für mich großartig.

Um es dauerhaft zu machen, füge ich nur diese Zeile am Ende der Datei my.ini im [mysql] Abschnitt:

skip-name-resolve 

und voila! Transaktionen fliegen jetzt!