Mac OS X Lion에서 가상 호스트로 매우 느리게 해결


26

Snow Leopard에서 Mac OS X Lion으로 업그레이드 한 후 가상 호스트에 대한 해상도가 매우 느리다는 것을 알았습니다 (약 3 초 사이). 이 문제를 해결할 수있는 여러 가지 팁 (예 : .local TLD를 사용하지 않음)을 찾았지만 설정에 적용되지 않습니다.

내 설정은 매우 간단합니다 :-Apache 2 (Lion과 함께 제공)-PHP 사용-가상 호스트 추가-Mail 및 SMTP Pear 패키지 설치

Apache의 hosts 파일은 다음과 같습니다.

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의 가상 호스트 파일은 다음과 같습니다.

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

설정은 기본적으로 Snow Leopard의 설정과 동일하지만 가상 호스트를 확인하는 Apache의 성능은 크게 다릅니다. Mac OS X Lion 10.7.2를 실행하고 있지만 10.7.1을 실행할 때 이미 문제가있었습니다.

이것은 작은 문제처럼 보이지만 하루에 수백 번 가상 호스트에 액세스하면 상상할 수 있듯이 상당한 시간 낭비가 발생합니다.


문제 설명에 시스템로드, 네트워크 사용률, 메모리 사용률과 같은 일반적인 문제를 배제한 내용이 없습니다. 당신은 가상 호스트를 해결하는 것이 느리다고 말합니다. 어디서? 호스트 명령 또는 서버가 제공 한 페이지를 보시겠습니까? 그것은 순전히 / 호스트가 관련 DNS 경우, 명령 행에서이 같은 성능을 시간이 수 시간 호스트 snd.dev
labradort

답변:


22

긴 DNS 시간 초과는 거의 항상 IPv6 문제의 신호입니다.

아파치에 IPv6 연결이 필요합니까?

그렇지 않은 경우 변경을 제안합니다

<VirtualHost *:80>

으로

<VirtualHost 0.0.0.0:80>

또는 IPv6 연결을 완전히 비활성화하십시오.


3
+1 : ipv6 DNS 조회는 OSX의 주요 문제입니다. 모호한 이유로 OSX는 먼저 ipv6 조회를 수행합니다. 시간이 초과되면 (30 초 정도) v4에서 계속됩니다. OSX는 / etc / hosts를 먼저 vor v6을 확인하지 않고 v4를 수행하지만 v6이 시간 초과 된 후에 만 ​​확인합니다. v6을 비활성화 할 수없는 경우 v6 DNS를 포함한 v6 설정이 제대로 작동하는지 확인하십시오.
Tonny

답변 해주셔서 감사합니다. 이것이 이것이 역할을하는 유일한 문제인지 확실하지 않지만 로컬 가상 호스트를 해결하는 데 걸리는 시간이 대부분 단축되었습니다.
바트 제이콥스

내 DNS 조회는 30이 아니라 해결하는 데 약 2-5 초가 걸렸습니다. 따라서 그 이후로 내 문제가 무엇인지 확실하지 않습니다. 그럼에도 불구하고 이제는이 답변에서 변경 한 후 즉시 적용됩니다.
Justin

22

나는 지금도 이것에 부딪쳤다.

네트워크 구성의 IPv6이 꺼짐으로 설정됩니다.

# 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

그러나 .. 불행히도 이것은 시스템을 다시 시작한 후에도 DNS 해결 문제를 해결하지 못했습니다. 실제로 도움이 된 것은 ipv6 스타일 IP를 / etc / hosts에 다음과 같이 추가하는 것입니다.

# 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이 즉시 표시됩니다

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

project.local 해결에 5 초 동안 매달려 있지 않습니다.


귀하의 조언은 내가 필요한 전부였습니다. 표준 127.0.0.1과 함께 호스트 파일에 IPv6 항목을 추가 하면 문제가 완전히 해결되었습니다.
Kirk Woll

예이! 이것은 OS X 10.8 (Mountain Lion)에서 도움이됩니다. 10.6에서 10.8로 직접 업그레이드 한 후 로컬 호스트 조회가 너무 영구적이라는 것을 알았습니다. 해결하기 전에 시간이 초과되는 것처럼 말입니다. 이것은 나를 위해 문제를 해결했습니다. 감사!
Lothar_Grimpsenbacher

최근 에이 문제가 발생했으며 / etc / hosts의 IPv6 항목이 완벽하게 수정했습니다.
Neil Albrock

이 기능은 이제 Max OS 10.10.1에서 작동합니다
ezmilhouse

10

에서라도 사자 .local 도메인은 멀티 캐스트 DNS 리졸버 (봉쥬르)에 대한 "예약"되었습니다.

이는 .local로 끝나는 도메인을 조회하면 / etc / hosts 이전 에 mDNS 조회 (최대 5 초)가 발생 함을 의미 합니다.

수정 :

  1. (즉, 다른 TLD에 테스트 도메인 변경 .dev)
  2. dscl 도구사용 하여 예외를 추가 하십시오 .

나를 위해 일한 ... 내 dev 사이트 중 일부만 이이 작업을 수행하여 저를 미치게했습니다 .... .local로 끝나는 모든 사이트! 이것은 High Sierra로 업그레이드 할 때까지 나에게 일어나지 않았습니다 ... @ artur 덕분에
Mfoo

1
dscl예외 전략은 아주 근사하다. @ artur-bodera 귀하의 링크가 만료되었지만 github github.com/icebourg/itandme-archive/blob/master/posts/2011/08/
lkraav

또한 .local은 IETF에서 제안 된 표준입니다. tools.ietf.org/html/rfc6762 또한 "테스트"도메인이 필요한 경우 도메인 이름을 등록하는 것이 좋습니다. DNS에 구성되어 있습니다. 도메인 이름을 구성하면 도메인 시스템의 다른 부분 (이 경우 mDNS와 같은)과 이상한 충돌이 발생할 가능성이 높습니다.
James Tikalsky

3

도움이되는지, 특히 문제 # 2를 강조하기 위해이 블로그 를 살펴보십시오 .

터미널과 일부 BSD 유닉스 도구는 /etc/resolv.conf와 올바른 순서의 / etc / hosts를 먼저 사용한 다음 DNS 서버를 올바르게 사용합니다. 그러나 모든 응용 프로그램을 포함하여 OS X Lion의 다른 모든 기능은 거꾸로 수행됩니다!


1

작동합니다.

이 솔루션을 사용합니다

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

매버릭스의 동일한 버그.

로컬 호스트 정의를 다음 /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

변경하려고합니다.

::1             localhost 
fe80::1%lo0 localhost

::1             localhost6 
fe80::1%lo0 localhost6

1
불행히도 이렇게해도 문제가 해결되지 않습니다. 당신의 제안 뒤에 논리가 무엇인지 알 수 있습니까? 답변 해 주셔서 감사합니다.
Bart Jacobs

최근에 IPV6을 실행하지 않지만 / etc / hosts에 비슷한 항목이있는 시스템의 snmp 응답에 대해 오랜 시간 동안 싸웠습니다. 호스트가 바인드보다 우선해야하기 때문에 이제 명심해야 할 것은 네임 서버 시간이 초과 된 것이다. (물론 구성 가능).
외국인 생활 양식

정말 이상합니다. 경우에 따라 호스트에 대한 해결이 즉각적으로 이루어지고 (다른 사람이 예상하는 경우) 몇 초가 걸릴 수 있습니다.
Bart Jacobs
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.