Mac OS X Lion'da sanal ana bilgisayara çözümleme çok yavaş


26

Mac OS X Lion'a (Snow Leopard'dan) yükseltildiğinden beri, sanal bir ana bilgisayara çözümlemenin çok yavaş olduğunu (yaklaşık 3 saniye arasında) fark ettim. Bunu çözebilecek birkaç ipucu buldum (örn. .Local TLD'yi kullanmamak), ancak kurulumum için geçerli değil.

Kurulumu oldukça basit: - Apache 2 (Lion ile birlikte gelir) - etkin PHP - birkaç sanal ana bilgisayar eklendi - yüklü Mail ve SMTP Pear paketleri

Apache'nin ana bilgisayar dosyası şöyle görünür:

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

Apache'nin sanal ana bilgisayar dosyası şöyle görünür:

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

Kurulum temel olarak Snow Leopard'daki kurulumumla aynı, ancak Apache'nin sanal hostları çözme performansı önemli ölçüde farklı. Mac OS X Lion 10.7.2 kullanıyorum, ancak sorun 10.7.1 çalışırken zaten mevcuttu.

Bu küçük bir sorun gibi görünebilir, ancak günde birkaç kez sanal bir ana bilgisayara erişirken, bu hayal edebileceğiniz gibi önemli bir zaman kaybına neden olur.


Problem tanımında, sistem yükü, ağ kullanımı, hafıza kullanımı gibi olağan sorunları ortadan kaldıran hiçbir şey görmüyorum. Sanal bir ana bilgisayarı çözmenin yavaş olduğunu söylüyorsunuz Nereden? Host komutu veya sunucu tarafından sunulan bir sayfayı mı inceliyorsunuz? Tamamen DNS / ana bilgisayarla ilgiliyse, komut satırında bunun gibi performansı zamanlayabilirsiniz: time host snd.dev
labradort

Yanıtlar:


22

Uzun DNS zaman aşımları neredeyse her zaman IPv6 sorunlarının bir işaretidir.

Apache için IPv6 bağlantısına ihtiyacınız var mı?

Değilse, değiştirmeyi öneririm

<VirtualHost *:80>

içine

<VirtualHost 0.0.0.0:80>

Veya IPv6 bağlantısını tamamen devre dışı bırakın.


3
+1: ipv6 DNS aramaları OSX'te büyük bir sorundur. Bazı belirsiz sebeplerden dolayı OSX ilk önce ipv6 araması yapar. Bu zaman aşımına uğrarsa (30 saniye) v4 ile devam eder. OSX ilk vor v6 / etc / hosts dosyasını kontrol ediyor gibi görünmüyor, v4 için çalışıyor, ancak yalnızca v6 zaman aşımına uğradıktan sonra. V6'yı daha iyi devre dışı bırakamıyorsanız, v6 DNS de dahil olmak üzere tam çalışan bir v6 kurulumuna sahip olduğunuzdan emin olun.
Tonny

Cevap için teşekkürler. Burada rol oynayan tek sorunun bu olup olmadığından emin değilim, ancak yerel bir sanal ana bilgisayarı çözmek için gereken süre çoğu zaman azaldı.
Bart Jacobs

DNS aramamın çözmesi yaklaşık 30 saniye değil 2-5 saniye sürüyordu. Sorunumun zaman aşımına uğraması muhtemel olmadığından emin değilim. Ne olursa olsun, şimdi bu cevabın değişikliklerini yapmaktan bu yana anında.
Justin,

22

Ben de şimdi bununla karşılaştım.

Bu, IPv6'yı Ağ yapılandırmasında Kapalı olarak ayarlayacaktır ...

# 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

Ama .. ne yazık ki bu benim için DNS çözme sorununu çözmedi (belki sistemin yeniden başlatılmasından sonra). Gerçekten yardımcı olan, / etc / hosts dosyasına ipv6 stili IP'ler eklemek oldu:

# 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 şimdi anında gösterir

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

Project.local çözümünde 5 saniye bekletmek yerine.


Tavsiyem gereken tek şey buydu - sadece IPv6 girişlerini ana bilgisayarıma standartla birlikte ekledik 127.0.0.1ve sorun tamamen çözüldü.
Kirk Woll,

Yuppi! Bu OS X 10.8'de (Dağ Aslanı) yardımcı olur. 10.6’dan 10.8’e yükselttikten sonra, yerel ana bilgisayarımın aramalarını sonsuza dek sürdüm ... sanki çözmeden önce zaman aşımına uğramışlardı. Bu benim için sorunu çözdü. Teşekkürler!
Lothar_Grimpsenbacher

Son zamanlarda bu sorunla karşılaştım ve / etc / hosts dosyasındaki IPv6 girdileri mükemmel bir şekilde düzeltildi.
Neil Albrock

Bu da, Max OS 10.10.1 benim için artık çalışıyor
ezmilhouse

10

On MacOSX Lion .local alanı Multicast DNS Resolver (bonjour) için "ayrılmış" olmuştur.

Bu, .local ile biten herhangi bir alana bakmak, / etc / hosts dosyasından önce mDNS aramasıyla (5 s'ye kadar) sonuçlanacağı anlamına gelir .

Düzeltmeler:

  1. Test alanlarınızı başka bir TLD'ye değiştirin (ör. .dev)
  2. Bir istisna eklemek için dscl aracını kullanın .

Benim için de işe yaradı ... beni çıldırtıyordu, dev sitelerimden sadece birkaçı bunu yaptı ... alçakgönüllüler. High Sierra'ya
yükselene

1
dsclistisna stratejisi oldukça şık. @ artur-bodera bağlantınızın süresi doldu, ancak eski bloglarını github'da arşivlediler github.com/icebourg/itandme-archive/blob/master/posts/2011/08/…
lkraav

Ayrıca, .local'in IETF ile önerilen bir standart olduğunu unutmayın: tools.ietf.org/html/rfc6762 "Test" etki alanına ihtiyacınız varsa, etki alanı tam olarak kontrol edildiğinden, sadece bir etki alanı adı kaydetmek gerçekten de iyi bir fikirdir. DNS’de yapılandırılmış. Bir alan adı oluşturmak, alan sisteminin diğer bölümleriyle garip çatışmalara neden olabilir (bu durumda mDNS gibi).
James Tikalsky

3

Sorun olup olmadığını görmek için bu bloga bir göz atın.

Görünüşe göre, terminal ve BSD Unix araçlarından bazıları doğru bir şekilde /etc/resolv.conf dosyasını ve önce / etc / hosts dizinini ve ardından DNS sunucularını doğru şekilde kullanır. Ancak, tüm uygulamalarınız dahil OS X Lion'daki her şey geriye doğru yapılıyor!


1

İşe yarıyor.

Bu çözümü kullanıyorum

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

Mavericks'te de aynı hata.

Yerel ana bilgisayar tanımlarımı başlangıcına koyduğumda çözüldü, şöyle /etc/hosts:

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

0

Değişmeyi deneyeceğim:

::1             localhost 
fe80::1%lo0 localhost

için

::1             localhost6 
fe80::1%lo0 localhost6

1
Ne yazık ki, bu sorunu çözmez. Önerinizin ardındaki mantığın ne olduğunu söyleyebilir misiniz? Yine de cevabınız için teşekkürler.
Bart Jacobs

Kısa bir süre önce IPV6 çalıştıran ancak / etc / hosts dosyasına benzer girdiler olan makinelerin snmp yanıtları için oldukça uzun zamandır savaştım. Şimdi akla gelen diğer şey, zaman aşımına uğramış bir isim sunucusu - biraz garip, çünkü ana bilgisayarların bağlamaya göre öncelikli olması gerekiyor. (Yapılandırılabilir şekilde tabii ki).
Alien Life Form

Gerçekten çok garip. Bazı durumlarda, bir ana bilgisayara çözümlenmek anlıktır (beklediği gibi) ve diğerlerinde birkaç saniye sürebilir.
Bart Jacobs
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.