Ich arbeite an einem winzigen kleinen PHP-Projekt für einen Freund von mir und habe eine WAMP-Umgebung für die lokale Entwicklung eingerichtet. Ich erinnere mich an die Tage, als die Antwort von meinem lokalen Apache 2.2 sofort erfolgte. Leider, jetzt, da ich von einem langen, langen Urlaub zurückgekommen bin, finde ich die Reaktionen von localhost
schmerzhaft langsam.
Es dauert ungefähr 5 Sekunden, um eine 300-Byte-HTML-Seite zu erhalten.
Wenn ich mir den Task-Manager anschaue, belegen die httpd
Prozesse (2) 0% der CPU und insgesamt ist mein Computer nicht ausgelastet (0-2% CPU-Auslastung).
Warum ist die Latenz so hoch? Gibt es eine Apache-Einstellung, die ich ändern könnte, um den Thread möglicherweise mit einer höheren Priorität auszuführen oder so? Es scheint, als ob es einfach schläft, bevor es die Antwort gibt.
quelle
localhost
Lösung richtig DNS-weise?ping localhost
sollte sofort mit zurückkommen127.0.0.1
.http://localhost/index.html
)? Wenn nicht, könnte es sich um ein PHP-Problem handeln, nicht um ein Apache-Problem.strace
undtcpdump
sind nützliche Werkzeuge dafür.Antworten:
Bei der Einstellung der
ServerName
Eigenschaft in wurdenhttpd.conf
die Verzögerungen behoben (sie betrugen im schlimmsten Fall bis zu 10 Sekunden):quelle
If your host doesn't have a registered DNS name, enter its IP address here.
Ich hatte genau das gleiche Problem.
Das Setzen von localhost redirect auf 127.0.0.1 in der hosts-Datei hat nicht geholfen. Die Optimierung des MySQL-Servers hat nicht geholfen (InnoDB -> MyISAM, Änderung vieler cachebezogener Anweisungen in my.ini).
Dann habe ich web webgrind benutzt und das Problem auf "new PDO (...)" eingegrenzt. Ändern
zu
in dsn für PDO hat sich das problem komplett gelöst ! Die Ladezeit der Seite stieg von über 3000 ms auf 16 ms .
Allerdings bin ich wirklich verwirrt, warum die "127.0.0.1 localhost" -Zeile in der hosts-Datei nicht geholfen hat.
quelle
$link = new PDO('mysql:host=localhost;dbname=dp-ui;charset=utf8');
zu$link = new PDO('mysql:host=127.0.0.1;dbname=dp-ui;charset=utf8');
Das Problem betraf die Haupteinstellungsdatei von Apache
httpd.conf
.Ich habe das gefunden:
Und so ging ich in die Einstellungen des Apache und sah, wo das Problem lag: Ich hatte es als CGI eingerichtet, anstatt es als Modul zu laden. Dies führte
php-cgi.exe
dazu, dass jedes Mal, wenn ich eine Anfrage machte, gestartet und heruntergefahren wurde. Dies verlangsamte meinelocalhost
Entwicklung.Ich habe die Einstellungen geändert, um PHP als Apache- MODUL zu laden und jetzt funktioniert alles perfekt. :)
Ich danke Ihnen allen für Ihre Bemühungen.
quelle
Ich hatte das gleiche Problem und entdeckte schließlich, dass es von zwei Tatsachen herrührte:
http://myproject.local/
weil ich eine Zeile127.0.0.1 myproject.local
eingegeben habe/etc/hosts
Das Problem tritt auf, weil die
.local
tld für den Bonjour-Dienst reserviert ist, und zwar seit Mac OS X Lion (10.7).Das Ändern der tld für etwas anderes hat das Problem behoben.
quelle
Überprüfen Sie, ob
/etc/hosts
es korrekt ist. So was:****
Geben Sie an der Stelle Ihren Hostnamen an.quelle
127.0.0.1 something.atmy.localhost
und jetzt dauert die Anfrage nicht mehr 20 Sekunden. Stattdessen antwortet der lokale Apache sofort. Ich weiß nicht so viel über Netzwerke. Ich denke, der Domainname wird zu langsam aufgelöst, weil etwas nicht richtig konfiguriert ist.httpd.conf
Stellen Sie sicher, dass Sie die Einstellung vornehmenHostnameLookups Off
.quelle
Falls es jemandem hilft, hatte ich dieses Problem und es lief darauf hinaus, dass die DNS-Suche nicht korrekt war .
Der DNS-Server auf dem Server wurde auf eingestellt.
127.0.0.1
Ich habe ihn so geändert, dass er die öffentlichen DNS-Server von Google verwendet. Dadurch wurde er ein ganzer Haufen schneller.quelle
Die Frage hat einen Tag apache-2.2, aber wenn jemand von diesem schändlichen Problem auch auf WAMP mit Apache 2.4 + PHP 5.5 betroffen ist , hat die folgende Antwort auf SO den Trick für mich getan:
https://stackoverflow.com/a/18786773/260080
quelle