Vraag Waarom is het antwoord op localhost zo traag?


Ik werk aan een klein PHP-project voor een vriend van mij en ik heb een WAMP-omgeving voor lokale ontwikkeling. Ik herinner me de dagen waarop de reactie van mijn lokale Apache 2.2 onmiddellijk was. Helaas, nu ik terug ben van een lange, lange vakantie, vind ik de reacties van localhost pijnlijk langzaam.

Het duurt ongeveer 5 seconden voordat een HTML-pagina van 300 B wordt weergegeven.

Wanneer ik naar de taakbeheerder kijk, de httpd processen (2) gebruiken up 0% van de CPU en mijn computer is over het algemeen niet belast (0-2% CPU-gebruik).

Waarom is de latentie zo hoog? Is er een Apache-instelling die ik zou kunnen aanpassen om de thread misschien met een hogere prioriteit te laten uitvoeren of zoiets? Het lijkt alsof het gewoon slaapt voordat het de reactie uitdeelt.


53
2017-09-17 17:15


oorsprong


is localhost DNS-correct oplossen? ping localhost zou terug moeten komen ogenblikkelijk met 127.0.0.1. - Alexis Lê-Quôc
dat werkt prima, antwoord ontvangen in <1ms - Peter Perháč
ik dacht dat firefox het probleem zou kunnen zijn, maar duurt 5s, zelfs in IE, dus het moet een systeeminstelling zijn of een Apache-instelling of gremlins. - Peter Perháč
Heeft dit hetzelfde gedrag bij het aanvragen van statische inhoud (zoals bij het laden http://localhost/index.html)? Zo niet, dan is het mogelijk een PHP-probleem, geen Apache-probleem. - Marcus Spiegel
Wat de vele, gevarieerde antwoorden op deze vraag laten zien, is dat er tientallen, zo niet honderden verschillende redenen zijn waarom pagina-aanvragen traag kunnen zijn. Als u op deze vraag bent aangekomen omdat u ook trage paginavragen heeft, moet u dieper in de oorzaak van de traagheid graven voordat u hier een bruikbaar antwoord krijgt. strace en tcpdump zijn handige hulpmiddelen hiervoor. - Ladadadada


antwoorden:


Voor mij, het instellen van de ServerName eigendom in httpd.conf de vertragingen verholpen (in het slechtste geval waren ze maximaal 10 seconden):

# 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

56
2018-01-13 11:55



Dit werkt - wens dat ik twee keer kon upvote - hohner
Dit lost het ook voor mij op! Weg van 10s latency naar 2ms! - DouglasHeriot
Ik worstelde urenlang en dit was de oplossing. - williamcarswell
waarom is dit een probleem als localhost correct wordt opgelost? wat gebeurt er die 10sec voordat het antwoordt? ergens op wachten? - milan
@Elipticalview Zoals de opmerking in het bestand zegt; If your host doesn't have a registered DNS name, enter its IP address here. - sshow


Het probleem was met het hoofdinstellingenbestand van Apache httpd.conf.

Ik vond dit:

Er zijn drie manieren om PHP in te stellen om met Apache 2.x op Windows te werken. U kunt PHP uitvoeren als een handler, als een CGI, of onder FastCGI.  [Bron]

En dus ging ik naar de instellingen van de Apache en zag waar het probleem was: ik had het ingesteld als CGI, in plaats van het als een module te laden. Dit veroorzaakte php-cgi.exe om op te starten en af ​​te sluiten elke keer dat ik een aanvraag deed. Dit vertraagde mijn localhost ontwikkeling naar beneden.

Ik heb de instellingen veranderd om PHP als een Apache te laden MODULE en nu werkt alles perfect. :)

De PHP-module voor Apache 2.x laden:

1) voeg de volgende regels in httpd.conf 

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

AddHandler application/x-httpd-php .php

(p.s.verandering C:/php op je pad. Wijzig ook php5apache **. Dll in uw bestaande bestandsnaam)

2) Om PHP-uitvoering alleen voor .php-bestanden te beperken, voeg dit toe httpd.conf:

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

3) stel het pad van php.ini in httpd.conf (als je na het opnieuw opstarten een foutmelding krijgt, verwijder dan deze regel opnieuw)

PHPIniDir "C:/php"

Bedankt allemaal voor je inspanningen.


20
2017-10-10 22:56



Mijn Apache stopt met het toevoegen van de regels zoals vermeld in de bron. Hoe doe ik in Windows? - AgA
die link is verlopen. Gebruik dit: goo.gl/2EVth9 - T.Todua


Ik had hetzelfde probleem.

Het instellen van localhost redirect naar 127.0.0.1 in hosts-bestanden hielp niet. Het optimaliseren van de MySQL-server heeft niet geholpen (InnoDB -> MyISAM, waarbij veel cache-gerelateerde richtlijnen in my.ini worden gewijzigd).

Toen gebruikte ik web webgrind en vernauwde het probleem tot "nieuwe PDO (...)" oproep. Veranderen

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

naar

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

in dsn voor PDO volledig het probleem opgelost! Laadtijd van de pagina ging van meer dan 3000 ms tot 16ms.

Ik ben echter erg in de war waarom de "127.0.0.1 localhost" -regel in hosts-bestanden niet heeft geholpen.


19
2017-11-01 11:51



Kan iemand me vertellen welk bestand ik moet bewerken om het te laten werken? - Giri
Bewerk de regel waarmee u verbinding maakt met de database (in uw PHP-script). Bijv. verander de lijn: $link = new PDO('mysql:host=localhost;dbname=dp-ui;charset=utf8'); naar $link = new PDO('mysql:host=127.0.0.1;dbname=dp-ui;charset=utf8'); - michalko
Ik werkte onlangs aan een EXT-JS-toepassing en heeft een enorm probleem met MYSQL-gegevensquery's die te lang duren om te reageren. MYSQL was eigenlijk te traag. Godzijdank, heb hier het antwoord ..... veranderde gewoon mijn host in het verbindingsscript van: host = localhost; to host = 127.0.0.1 Mijn serverreacties gingen van 3min (180 seconden) naar minder dan 1 seconde. Hartelijk bedankt. - user184985
Dit loste mijn probleem op. Vreemd ... Ik heb dat probleem niet opgemerkt in SQLite - Mladen Janjetovic
Hetzelfde voor mij, maar alleen voor WordPress. Moest "localhost" vervangen door "127.0.0.1" in wp-config.php - Adrian


Ik had hetzelfde probleem en ontdek tot slot dat het uit twee feiten kwam:

  1. Ik gebruik Mac OS X Mavericks
  2. Ik heb via de URL toegang gekregen tot mijn project http://myproject.local/ omdat ik een rij zet 127.0.0.1 myproject.local in /etc/hosts

Het probleem verschijnt omdat het .local tld is gereserveerd voor de Bonjour-service en dit sinds Mac OS X Lion (10.7).

Het veranderen van de tld voor iets anders loste het probleem op.


6
2018-06-24 13:26





In uw httpd.conf zorg ervoor dat u de instelling instelt HostnameLookups Off.


4
2017-09-17 18:16



Ik heb geen apache.conf-bestand, ik heb in alle bestanden naar de richtlijn HostnameLookups gezocht en deze gevonden in het handboekbestand core.html.en. Het zei dat het standaard is uitgeschakeld, dus ik denk dat het uit is - Peter Perháč


Controleer of /etc/hostsis juist. Zoals dit:

# 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 *******

In de plaats **** geef je hostnaam.


4
2018-01-10 09:24



Het was het geval voor mij. Mijn domein was ingesteld in ipv4-regel, maar niet in ipv6. - Rafael Beckel
Hetzelfde voor mij. Verzoeken duurden> 5 sec voordat ik de extra regel in / etc / hosts plaatste. Nu loopt mijn spul in ~ 0.1 sec. - mwallisch


In het geval dat het iemand zou helpen, had ik dit probleem en het kwam erop neer dat ik het was onjuiste DNS-lookup.

De DNS-server op de server is ingesteld op 127.0.0.1 - Ik veranderde het om de Google Public DNS-servers te gebruiken, en dat maakte het een hele hoop sneller.


3
2018-02-20 23:35





De vraag heeft een tag apache-2.2, maar als iemand wordt getroffen door dit schandelijke probleem ook op WAMP met Apache 2.4 + PHP 5.5, het volgende antwoord op SO deed het volgende voor mij:

Bewerk httpd.conf en schakel het laden van de CGI-module uit met    commentaar deze lijn: LoadModule cgi_module modules/mod_cgi.so

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


1
2017-11-21 13:32