Frage Unter Mac OS X Lion ist die Auflösung auf den virtuellen Host sehr langsam


Seit dem Upgrade auf Mac OS X Lion (von Snow Leopard) habe ich festgestellt, dass das Auflösen auf einen virtuellen Host sehr langsam ist (zwischen etwa 3 Sekunden). Ich habe eine Reihe von Tipps gefunden (z. B. die TLD ".local" nicht verwenden), die dies beheben könnten, aber sie gelten nicht für mein Setup.

Mein Setup ist ziemlich einfach: - Apache 2 (ausgeliefert mit Lion) - PHP aktiviert - Einige virtuelle Hosts hinzugefügt - installierte Mail- und SMTP-Pear-Pakete

Die hosts-Datei von Apache sieht folgendermaßen aus:

127.0.0.1   localhost
255.255.255.255 broadcasthost
::1             localhost 
fe80::1%lo0 localhost
127.0.0.1   tbi.dev
127.0.0.1   www.tbi.dev
127.0.0.1   test1.tbi.dev
127.0.0.1   test2.tbi.dev
127.0.0.1   psa.dev
127.0.0.1   snd.dev

Und die virtuelle Hosts-Datei von Apache sieht so aus:

<VirtualHost *:80>
    DocumentRoot "/Users/Bart/Sites/tbi"
    ServerName tbi.dev
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/Users/Bart/Sites/tbi"
    ServerName tbi.dev
    ServerAlias *.tbi.dev www.tbi.dev
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/Users/Bart/Sites/psa"
    ServerName psa.dev
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/Users/Bart/Sites/sandbox"
    ServerName snd.dev
</VirtualHost>

Das Setup ist im Prinzip identisch mit meinem Setup unter Snow Leopard, aber die Leistung von Apache für die Auflösung virtueller Hosts unterscheidet sich erheblich. Ich benutze Mac OS X Lion 10.7.2, aber das Problem war bereits vorhanden, wenn 10.7.1 ausgeführt wurde.

Dies mag wie ein kleines Problem erscheinen, aber wenn Sie einige hundert Mal am Tag auf virtuelle Hosts zugreifen, führt dies zu einer erheblichen Zeitverschwendung, wie Sie sich vorstellen können.


24
2017-10-14 07:50


Ursprung


Ich sehe nichts in der Problembeschreibung, die normale Probleme wie Systemlast, Netzwerkauslastung, Speichernutzung ausgeschlossen hat. Sie sagen, dass die Auflösung eines virtuellen Hosts langsam ist. Wovon? Der Host-Befehl oder Anzeigen einer vom Server bedienten Seite? Wenn es rein DNS / host-bezogen ist, können Sie die Leistung in der Befehlszeile wie folgt messen: time host snd.dev - labradort


Antworten:


Lange DNS-Timeouts sind fast immer ein Zeichen für IPv6-Probleme.

Brauchen Sie IPv6-Konnektivität zu Apache?

Wenn nicht, schlage ich vor zu ändern

<VirtualHost *:80>

in

<VirtualHost 0.0.0.0:80>

Oder deaktivieren Sie IPv6-Konnektivität insgesamt.


21
2017-11-01 14:52



+1: IPv6 DNS-Lookups sind ein großes Problem auf OSX. Aus irgendeinem obskuren Grund tut OSX zuerst ipv6 Nachschlagen. Wenn das Zeitlimit überschritten wird (30 Sekunden oder so), wird es mit v4 fortgesetzt. OSX scheint / etc / hosts nicht zuerst nach v6, sondern nach v6 nach v6 zu überprüfen. Wenn Sie v6 nicht deaktivieren können, stellen Sie sicher, dass Sie ein voll funktionsfähiges v6-Setup einschließlich v6 DNS haben. - Tonny
Danke für die Antwort. Ich bin mir nicht sicher, ob dies das einzige Problem ist, dass hier eine Rolle spielt, aber die Zeit, die eine lokale virtuellen Hosts aufzulösen nimmt hat die meiste Zeit gesunken. - Bart Jacobs
Meine DNS-Lookup wurde etwa 2-5 Sekunden unter 30 zu lösen, nicht so, ich bin nicht sicher, was mein Problem war, da es unwahrscheinlich ist, dass ein Timeout sein. Unabhängig davon, es ist jetzt sofort, seit die Änderungen von dieser Antwort vorgenommen werden. - Justin


Ich bin gerade eben auch hier reingerannt.

Dadurch wird IPv6 in der Netzwerkkonfiguration auf Aus gesetzt.

# list all network interfaces to get their names
networksetup -listallnetworkservices
# disable the one you want, in my case it's WiFi
networksetup -setv6off Wi-Fi

Aber .. leider löste das nicht das DNS-Lösungsproblem für mich (vielleicht nach dem Systemneustart). Was wirklich geholfen hat, war das Hinzufügen von ipv6 Style IPs zu / etc / hosts wie folgt:

# my original /etc/hosts ...
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1             localhost 
fe80::1%lo0 localhost

127.0.0.1 project.local

# adding this solved resolving:
fe80::1%lo0 project.local

wget http: //project.local jetzt sofort angezeigt

Resolving project.local... 127.0.0.1
Connecting to project.local|127.0.0.1|:80... connected.

statt 5 Sekunden auf Resolving project.local zu hängen.


19
2017-11-03 18:49



Ihr Rat war alles, was ich brauchte - ich habe die IPv6-Einträge neben dem Standard zu meiner Hosts-Datei hinzugefügt 127.0.0.1 und das Problem wurde vollständig gelöst. - Kirk Woll
Yay! Dies hilft in OS X 10.8 (Mountain Lion). Nach dem Upgrade von 10.6 direkt auf 10.8 fand ich meine lokalen Host-Lookups zu für immer ... als ob sie vor dem Auflösen Timeout hatten. Das hat das Problem für mich behoben. Vielen Dank! - Lothar_Grimpsenbacher
Ich bin kürzlich auf dieses Problem gestoßen und die IPv6-Einträge in / etc / hosts haben das Problem perfekt behoben. - Neil Albrock
das funktioniert jetzt für mich auf Max OS 10.10.1 - ezmilhouse


Auf Mac OS X Löwe  .local Domain wurde für Multicast DNS Resolver (Bonjour) "reserviert".

Dies bedeutet, dass das Nachschlagen einer Domäne mit der Endung .local zu einer mDNS-Suche führt (bis zu 5 s). Vor / etc / hosts.

Korrekturen:

  1. Ändern Sie Ihre Testdomänen auf eine andere TLD (d. H. .dev)
  2. Verwenden Sie das Tool dscl eine Ausnahme hinzufügen

9
2018-02-05 18:25



Das funktioniert bei mir, danke für die Info. - Vicary
als auch für mich gearbeitet ... machte mich verrückt, dass nur ein paar meiner dev Websites tat dies ... und siehe da ... alle diejenigen, die in .local Ende! Das ist mir erst passiert, als ich zu High Sierra gewechselt habe ... dank @artur - Mfoo
dscl Ausnahmestrategie ist ziemlich geschickt. @ artur-bodera Dein Link ist abgelaufen, aber sie haben ihren alten Blog auf github archiviert github.com/icebourg/itandme-archive/blob/master/posts/2011/08/... - lkraav


Schau es dir an dieser Blog um zu sehen, ob es hilft und Problem Nr. 2 besonders hervorhebt:

Anscheinend verwenden das Terminal und einige der BSD Unix-Tools korrekt /etc/resolv.conf und die richtige Reihenfolge von / etc / hosts zuerst und dann DNS-Server. Alles andere auf OS X Lion, einschließlich all Ihrer Anwendungen, geht jedoch rückwärts!


3
2017-10-28 20:31





Es klappt.

Ich benutze diese Lösung

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1   localhost
255.255.255.255 broadcasthost
::1             localhost6
fe80::1%lo0 localhost

1
2018-01-28 19:20





Gleicher Fehler bei Mavericks.

Gelöst, wenn ich meine lokalen Hostdefinitionen an den Anfang von /etc/hosts, so was:

127.0.0.1 localhost project1.dev project2.dev
127.0.0.1 project3.dev project4.dev
255.255.255.255 broadcasthost
::1             localhost
fe80::1%lo0     localhost

1
2017-09-16 08:52





Ich würde versuchen, zu ändern:

::1             localhost 
fe80::1%lo0 localhost

zu

::1             localhost6 
fe80::1%lo0 localhost6

0
2017-10-14 08:27



Leider löst das das Problem nicht. Können Sie sagen, welche Logik hinter Ihrem Vorschlag steckt? Danke für Ihre Antwort. - Bart Jacobs
Ich habe vor kurzem unangemessen lange für snmp-Antworten von Computern gekämpft, die IPV6 nicht benutzen, aber ähnliche Einträge in / etc / hosts haben. Nun ist das andere, was einem in den Sinn kommt, ein Timeout des Nameservers - ein bisschen seltsam, weil Hosts Vorrang vor Bind haben sollten. (Natürlich konfigurierbar). - Alien Life Form
Sehr merkwürdig. Gelegentlich wird das Auflösen auf einen Host augenblicklich (wie erwartet) und auf anderen kann es einige Sekunden dauern. - Bart Jacobs