it-swarm.asia

Localhost üzerindeki yanıt neden bu kadar yavaş?

Bir arkadaşım için küçük bir PHP proje üzerinde çalışıyorum ve yerel kalkınma için bir WAMP ortam kurulum var.Yerel Apache 2.2 yanıt hemen olduğu günleri hatırlıyorum. Ne yazık ki, şimdi uzun, uzun bir tatilden döndüm, localhost 'dan gelen yanıtları acı verici şekilde yavaş buluyorum.

300B HTML sayfasının yayınlanması yaklaşık 5 saniye sürer.

Görev yöneticisine baktığımda, httpd işlemleri (2) CPU'nun% 0'ını kullanıyor ve genel olarak bilgisayarım yük altında değil (% 0-2 CPU kullanımı).

Gecikme neden bu kadar yüksek? İş parçacığını belki daha yüksek bir önceliğe veya başka bir şeye çalıştırmak için Tweak yapabileceğim herhangi bir Apache ayarı var mı? Yanıtı sunmadan önce sadece uyuyor gibi görünüyor.

59
Peter Perháč

Sorun Apache'nin ana ayarlar dosyası httpd.conf.

Bunu buldum:

Windows'ta Apache 2.x ile çalışmak için PHP kurmanın üç yolu vardır. PHP bir işleyici olarak, CGI veya FastCGI altında.[Kaynak]

Ve böylece Apache'nin ayarlarına gittim ve sorunun nerede olduğunu gördüm: Bir modül olarak yüklemek yerine CGI olarak ayarladım. Bu sebep oldu php-cgi.exe Her istek yaptığımda açılıp kapanıyor. Bu localhost gelişimimi yavaşlatıyordu.

Ayarları PHP bir Apache [~ # ~] modülü [~ # ~] ve şimdi yüklemek için değiştirdim. her şey mükemmel çalışıyor. :)

PHP modülünü yüklemek için:

1) httpd.conf

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

AddHandler application/x-httpd-php .php

(ps.s. değiştir C:/php yolunuza. Ayrıca, php5Apache **. Dll dosyasını mevcut dosya adınızla değiştirin)

2) PHP sadece .php dosyaları için yürütmeyi sınırlamak için bunu httpd.conf:

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

3) php.ini'nin yolunu httpd.conf (yeniden başlattıktan sonra hata alırsanız, bu satırı tekrar kaldırın)

PHPIniDir "C:/php"

Çabalarınız için hepinize teşekkür ederim.

20
Peter Perháč

Benim için ServerName özelliğini httpd.conf gecikmeleri düzeltti (en kötü ihtimalle 10 saniyeye kadar çıktılar):

# 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

Ben de aynı problemi yaşadım.

Hosts dosyasında localhost yönlendirmesini 127.0.0.1 olarak ayarlamak yardımcı olmadı. MySQL sunucusunun optimizasyonu işe yaramadı (InnoDB -> MyISAM, my.ini dosyasındaki önbellekle ilgili birçok yönergeyi değiştirerek).

Sonra web webgrind kullandım ve "yeni PDO (...)" çağrısı için sorunu daralttı. Değiştirme

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

için

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

pDO için dsn içinde tamamen sorunu çözdü! Sayfa yükleme süresi 00 ms'den 16ms'ye çıktı.

Ancak ben gerçekten neden "127.0.0.1 localhost" satırının ana bilgisayar dosyasında yardımcı olmadı kafam karıştı.

21
michalko

Kontrol eğer /etc/hosts doğru. Bunun gibi:

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

Yerinde **** ana bilgisayar adınızı belirtin.

7
morpheus

Aynı sorunu yaşadım ve sonunda bunun iki gerçekten geldiğini keşfettim:

  1. Mac OS X Mavericks kullanıyorum
  2. Projeme http://myproject.local/ çünkü bir çizgi koydum 127.0.0.1 myproject.local içinde /etc/hosts

Sorun, .local tld Bonjour servisi için ayrılmıştır ve bu Mac OS X Lion'dan (10.7) beri.

Tld'yi başka bir şey için değiştirmek sorunu çözdü.

7
lepix

httpd.conf ayarını yaptığınızdan emin olun HostnameLookups Off.

4
drAlberT

Herkes yardımcı olur, ben bu sorunu vardı ve yanlış DNS arama olmak için kaynatıldı.

Sunucudaki DNS Sunucusu 127.0.0.1 - Google Herkese Açık DNS sunucularını kullanmak için değiştirdim ve bu da onu daha hızlı bir yığın haline getirdi.

3
Toby Allen

Sorunun etiketi Apache-2.2'dir, ancak birisi bu hain sorundan etkilenirse Apache 2.4 ile WAMP + PHP 5.5 , SO) için aşağıdaki cevap benim için hile yaptı:

düzenle httpd.conf ve CGI modülünün yüklenmesini bu satıra yorum yaparak devre dışı bırakın: LoadModule cgi_module modules/mod_cgi.so

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

2
Marco Demaio