it-swarm.com.de

Warum ist die Antwort auf localhost so langsam?

Ich arbeite an einem winzigen kleinen PHP -Projekt für einen Freund von mir, und ich 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 finde ich die Antworten von localhost schmerzhaft langsam, nachdem ich von einem langen, langen Urlaub zurückgekommen bin.

Es dauert ungefähr 5 Sekunden, bis eine 300B-HTML-Seite bereitgestellt ist.

Wenn ich mir den Task-Manager anschaue, verbrauchen die httpd -Prozesse (2) 0% der CPU und insgesamt ist mein Computer nicht unter Last (0-2% CPU-Auslastung).

Warum ist die Latenz so hoch? Gibt es eine Apache-Einstellung, die ich optimieren könnte, damit der Thread möglicherweise mit einer höheren Priorität ausgeführt wird oder so? Es scheint, als würde es einfach schlafen, bevor es die Antwort liefert.

59
Peter Perháč

Das Problem war mit der Haupteinstellungsdatei von Apache httpd.conf.

Ich habe das gefunden:

Es gibt drei Möglichkeiten, PHP für die Arbeit mit Apache 2.x unter Windows einzurichten. Sie können PHP als Handler, als CGI oder unter FastCGI.[Quelle]

Also 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 dazu, dass php-cgi.exe Jedes Mal, wenn ich eine Anfrage stellte, gestartet und heruntergefahren wurde. Dies verlangsamte meine localhost Entwicklung.

Ich habe die Einstellungen geändert, um PHP als Apache [~ # ~] Modul [~ # ~] und jetzt zu laden es funktioniert alles perfekt. :)

So laden Sie das Modul PHP für Apache 2.x:

1) füge folgende Zeilen in httpd.conf Ein

LoadModule php5_module "c:/php/php5Apache2.dll"

AddHandler application/x-httpd-php .php

(S. Ändern Sie C:/php in Ihren Pfad. Ändern Sie auch php5Apache **. dll in Ihren vorhandenen Dateinamen.)

2) Um die Ausführung von PHP nur für .php-Dateien zu begrenzen, fügen Sie dies in httpd.conf Hinzu:

<FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch>

3) setze den Pfad von php.ini in httpd.conf (Wenn du nach dem Neustart eine Fehlermeldung bekommst, entferne diese Zeile erneut)

PHPIniDir "C:/php"

Vielen Dank für Ihre Bemühungen.

20
Peter Perháč

Für mich das Setzen der Eigenschaft ServerName in httpd.conf Die Verzögerungen wurden behoben (im schlimmsten Fall waren es bis zu 10 Sekunden):

# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If your Host doesn't have a registered DNS name, enter its IP address here.
ServerName 127.0.0.1:80
59
sshow

Ich hatte das gleiche Problem.

Das Festlegen der lokalen Host-Umleitung auf 127.0.0.1 in der Hosts-Datei hat nicht geholfen. Die Optimierung des MySQL-Servers hat nicht geholfen (InnoDB -> MyISAM, viele cachebezogene Anweisungen in my.ini wurden geändert).

Dann habe ich Web Webgrind verwendet und das Problem auf den Aufruf "new PDO (...)" eingegrenzt. Ändern

mysql:Host=localhost;dbname=dp-ui;charset=utf8 

zu

mysql:Host=127.0.0.1;dbname=dp-ui;charset=utf8

in dsn für PDO das Problem vollständig gelöst! Ladezeit der Seite ging von über 3000 ms auf 16 ms.

Ich bin jedoch wirklich verwirrt, warum die Zeile "127.0.0.1 localhost" in der Hosts-Datei nicht geholfen hat.

21
michalko

Überprüfen Sie, ob /etc/hosts ist richtig. So was:

# hostname mobrglnx1 added to /etc/hosts by anaconda

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 *****

::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 *******

An dem Ort **** Geben Sie Ihren Hostnamen an.

7
morpheus

Ich hatte das gleiche Problem und stellte schließlich fest, dass es auf zwei Tatsachen zurückzuführen war:

  1. Ich benutze Mac OS X Mavericks
  2. Ich habe über die URL http://myproject.local/ Auf mein Projekt zugegriffen, weil ich in 127.0.0.1 myproject.local Eine Zeile /etc/hosts Eingefügt habe.

Das Problem tritt auf, weil das .local Tld für den Bonjour-Dienst reserviert ist, und dies seit Mac OS X Lion (10.7).

Das Ändern des tld gegen etwas anderes hat das Problem behoben.

7
lepix

In deinem httpd.conf Stellen Sie unbedingt die Einstellung HostnameLookups Off.

4
drAlberT

Falls es jemandem hilft, hatte ich dieses Problem und es lief darauf hinaus, falsche DNS-Suche zu sein.

Der DNS-Server auf dem Server wurde auf 127.0.0.1 Eingestellt. Ich habe ihn so geändert, dass er die öffentlichen DNS-Server von Google verwendet. Dadurch wurde er um einen ganzen Haufen schneller.

3
Toby Allen

Die Frage hat ein Tag Apache-2.2, aber wenn jemand von diesem schändlichen Problem betroffen ist, auch auf WAMP mit Apache 2.4 + PHP 5.5, die folgende Antwort auf SO hat den Trick für mich gemacht:

bearbeiten httpd.conf und deaktiviere das Laden des CGI-Moduls durch Kommentar diese Zeile: LoadModule cgi_module modules/mod_cgi.so

https://stackoverflow.com/a/18786773/26008

2
Marco Demaio