Pracuję nad małym projektem PHP dla mojego przyjaciela i mam konfigurację środowiska WAMP do lokalnego rozwoju. Pamiętam dni, kiedy odpowiedź z mojego lokalnego Apache 2.2 była natychmiastowa. Niestety, teraz, kiedy wróciłem z długiego, długiego urlopu, reakcje są localhost
boleśnie powolne.
Dostarczenie strony HTML 300B zajmuje około 5 sekund.
Kiedy patrzę na menedżera zadań, httpd
procesy (2) zużywają do 0% procesora i ogólnie mój komputer nie jest obciążony (0-2% użycia procesora).
Dlaczego opóźnienia są tak duże? Czy jest jakieś ustawienie Apache, które mógłbym ulepszyć, aby być może jego wątek działał z wyższym priorytetem czy coś takiego? Wygląda na to, że po prostu śpi, zanim udzieli odpowiedzi.
apache-2.2
php
web-server
latency
Peter Perháč
źródło
źródło
localhost
rozwiązywanie problemów jest prawidłowe pod względem DNS?ping localhost
powinien natychmiast wrócić z127.0.0.1
.http://localhost/index.html
)? Jeśli nie, może to być problem PHP, a nie problem Apache.strace
itcpdump
są do tego przydatnymi narzędziami.Odpowiedzi:
Dla mnie ustawienie
ServerName
właściwości whttpd.conf
ustalone opóźnienia (najgorsze były do 10 sekund):źródło
If your host doesn't have a registered DNS name, enter its IP address here.
Miałem ten sam problem.
Ustawienie przekierowania localhost na 127.0.0.1 w pliku hosts nie pomogło. Optymalizacja serwera MySQL nie pomogła (InnoDB -> MyISAM, zmieniając wiele dyrektyw związanych z pamięcią podręczną w my.ini).
Następnie użyłem webgrind i zawęziłem problem do wywołania „nowego PDO (...)”. Wymiana pieniędzy
do
w dsn dla PDO całkowicie rozwiązało problem ! Czas ładowania strony wzrósł z ponad 3000 ms do 16 ms .
Jednak jestem naprawdę zdezorientowany, dlaczego wiersz „127.0.0.1 localhost” w pliku hosts nie pomógł.
źródło
$link = new PDO('mysql:host=localhost;dbname=dp-ui;charset=utf8');
na$link = new PDO('mysql:host=127.0.0.1;dbname=dp-ui;charset=utf8');
Problem dotyczył głównego pliku ustawień Apache
httpd.conf
.Znalazłem to:
I tak przeszedłem do ustawień Apache'a i zobaczyłem, gdzie jest problem: skonfigurowałem go jako CGI, zamiast ładować jako moduł. Powodowało
php-cgi.exe
to uruchamianie i wyłączanie za każdym razem, gdy wysyłałem prośbę. Spowalniało to mójlocalhost
rozwój.Zmieniłem ustawienia, aby załadować PHP jako MODUŁ Apache i teraz wszystko działa idealnie. :)
Dziękuję wszystkim za wasze wysiłki.
źródło
Miałem ten sam problem i w końcu odkryłem, że pochodzi on z dwóch faktów:
http://myproject.local/
, bo umieścić linię127.0.0.1 myproject.local
w/etc/hosts
Problem pojawia się, ponieważ
.local
tld jest zarezerwowany dla usługi Bonjour, a to od czasu Mac OS X Lion (10.7).Zmiana tld na coś innego rozwiązała problem.
źródło
Sprawdź, czy
/etc/hosts
jest poprawne. Lubię to:W miejscu
****
podaj swoją nazwę hosta.źródło
127.0.0.1 something.atmy.localhost
i teraz żądanie nie trwa już 20 sekund. Zamiast tego lokalny apache odpowiada natychmiast. Nie wiem zbyt wiele o sieciach. Myślę, że nazwa domeny jest rozwiązywana zbyt wolno, ponieważ coś nie jest poprawnie skonfigurowane.W twojej
httpd.conf
należy wybrać ustawienieHostnameLookups Off
.źródło
Na wypadek, gdyby komukolwiek to pomogło, miałem ten problem i sprowadzało się to do nieprawidłowego wyszukiwania DNS .
Serwer DNS na serwerze został ustawiony na
127.0.0.1
- Zmieniłem go, aby korzystał z publicznych serwerów DNS Google, co przyspieszyło cały stos.źródło
Pytanie ma tag apache-2.2, ale jeśli ten nikczemny problem dotyczy również WAMP z Apache 2.4 + PHP 5.5 , następująca odpowiedź na SO zrobiła dla mnie lewę:
https://stackoverflow.com/a/18786773/260080
źródło