ฉันจะกำจัดการแก้ปัญหา / การโหลด localhost / virtualhost ที่ช้า (ความล่าช้า 2-3 วินาที) บน MacOS X Lion ได้อย่างไร


98

ตั้งแต่ตั้งค่าสภาพแวดล้อมการพัฒนาของฉันบน Mac OS X Lion (macbook air ใหม่เอี่ยมที่ซื้อในเดือนมกราคม 2555) ฉันสังเกตเห็นว่าการแก้ไขโฮสต์เสมือนนั้นช้ามาก (ประมาณ 3 วินาที) ในครั้งแรก แต่หลังจากนั้นก็เร็วตราบเท่าที่ ฉันยังคงโหลดมันเป็นประจำ

ถ้าฉันปล่อยไว้โดยไม่แตะต้องสักสองสามนาทีแล้วโหลดใหม่อีกครั้งการโหลดครั้งแรกจะช้าลงอย่างเจ็บปวด (อีกครั้ง) ดูเหมือนว่ามีบางอย่างถูกแคช

ดังที่เห็นด้านล่างฉันไม่ได้ใช้. local TLD

การตั้งค่าของฉัน: Apache 2 - MySQL - PHP ติดตั้งและเปิดใช้งาน - เพิ่มโฮสต์เสมือนสองสามโฮสต์ซึ่งฉันสร้างขึ้นสำหรับ localhost

/ etc / hosts ของฉัน:

127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost
fe80::1%lo0     localhost
127.0.0.1       myproject.dev
::1             myproject.dev
fe80::1%lo0     myproject.dev

การตั้งค่าโฮสต์เสมือนของฉันใน username.conf:

NameVirtualHost *:80

<Directory "/Users/myusername/Sites/">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot /Users/myusername/Dropbox/dev_envs/
</VirtualHost>
<VirtualHost *:80>
    ServerName myproject.dev
    DocumentRoot /Users/myusername/Dropbox/dev_envs/myprojectname
</VirtualHost>

ฉันพบสิ่งนี้stackoverflow.com/questions/19313546/… . และได้ผลสำหรับฉัน !!!
clark yu

2
ฉันรายงานว่านี่เป็นข้อผิดพลาดของ apple rdar: // 24237290 และได้รับการตอบกลับที่น่ายินดีนี้:> Engineering ได้ให้ข้อเสนอแนะต่อไปนี้เกี่ยวกับปัญหานี้:> นี่เป็นพฤติกรรมที่คาดไว้ตั้งแต่จำนวนสูงสุด ของนามแฝงในไฟล์ / etc / hosts ที่อนุญาตคือ 10 การมีนามแฝงมากกว่า 10 นามในไฟล์ / etc / hosts ดูเหมือนจะไม่เป็นประโยชน์ ฉันยินดีหากมีคนรายงานข้อบกพร่องนี้มากขึ้นและบอกพวกเขาว่าคำตอบนี้ไร้สาระโดยสิ้นเชิง (และไม่ได้บันทึกไว้ที่ใดด้วย)
dwt

มีบางอย่างที่ไม่ดีเกี่ยวกับการใช้. local TLD หรือไม่
Yaakov Ainspan

ใช้งานได้ดีสำหรับฉันในโมฮาวี ... :)
rogerdpack

คำตอบ:


174

ฉันมีปัญหาเดียวกันแน่นอนและมันทำให้ฉันแทบบ้า!

ใส่รายการไฟล์โฮสต์ทั้งหมดของคุณสำหรับ localhost เป็นบรรทัดเดียวดังนี้:

127.0.0.1 localhost myproject.dev myotherproject.dev
::1 localhost
fe80::1%lo0 localhost

ทำงานเหมือนมีเสน่ห์สำหรับฉัน ดูเหมือนแมลงใน Lion


สิ่งนี้ได้ผลที่ฉันคิดว่า @ adam-gries ควรทำเครื่องหมายว่าเป็นคำตอบ ขอบคุณ Jeremy!
zysoft

5
การแก้ไขนี้ใช้ได้ผลสำหรับฉัน แต่ฉันถึงขีด จำกัด 11 ไซต์หลังจากนั้นมันก็เริ่มทำงานช้าลง! สำหรับตอนนี้ฉันได้แยกสิ่งต่างๆออกเป็นสองโฮสต์รายการ (ด้วยที่อยู่ IP เดียวกัน) และดูเหมือนว่าจะไปได้
Alex Ghiculescu

ปัญหาและวิธีแก้ปัญหาเดียวกันกับ @AlexGhiculescu แต่ใน OS X 10.8 Mountain Lion
chrishiestand

2
OS X 10.9 ยังคงเป็นปัญหาและทำให้ฉันรู้สึกแย่มาหลายชั่วโมงแล้ว! ยอดเยี่ยมขอบคุณสำหรับคำตอบที่ยอดเยี่ยม!
robertp

2
ใช้งานได้เฉพาะเนื่องจากคุณกำลังป้อนรายการโฮสต์ก่อนการกำหนดเส้นทางอุปกรณ์ localhost อื่น หากเว็บเซิร์ฟเวอร์ของคุณกำลังดูที่ 127.0.0.1 โฮสต์เหล่านั้นจะต้องอยู่ที่ HEAD ของไฟล์ / etc / hosts เพื่อการค้นหาที่รวดเร็ว ฉันมี 127.0.0.1 บรรทัดหลายโหลเฉพาะเมื่อฉันย้ายไปที่ด้านบนของไฟล์ / etc / hosts พวกเขาแก้ไขได้อย่างรวดเร็วสำหรับฉัน
Joey T

75

ยังมีปัญหาอีก 10.7. * ถึง 10.8.4 สำหรับไซต์ที่ลงท้ายด้วยการ.localค้นหาห้าวินาที รายละเอียดและวิธีการแก้ปัญหามารยาทแบแวนแดมม์ของบล็อกโพสต์พบได้ที่นี่

“ ตามค่าเริ่มต้นชื่อโฮสต์ใด ๆ ที่ลงท้ายด้วย.localจะถือว่าเป็นโฮสต์ Bonjour แทนที่จะค้นหารายการเซิร์ฟเวอร์ DNS ในการตั้งค่าเครือข่าย”

“ ในการแก้ไขปัญหานี้ (โดยไม่ต้องเปลี่ยนชื่อ vhost) คุณต้องเพิ่มรายการ IPv6 สำหรับ vhost แต่ละ/etc/hostsไฟล์ในไฟล์ของคุณ:”

::1 mysite.local
fe80::1%lo0 mysite.local
127.0.0.1 mysite.local

นอกจากนี้ยังมีผลต่อระบบ windows วิธีแก้ก็เหมือนมีเสน่ห์เช่นกัน
ToBe

ฉันยังคงมีปัญหานี้ในขณะที่ชี้โฮสต์ไปยัง VM ในเครื่อง ฉันทิ้งไฟล์โฮสต์ของฉันไว้ในรูปแบบที่สวยงาม(รายการในบรรทัดของพวกเขาเอง ฯลฯ )และเพิ่มรายการเพิ่มเติมโดยใช้ที่อยู่ IPV6 จาก VM และปัญหาความล่าช้าทั้งหมดของฉันก็หายไป ดูเหมือนว่าฉันจะพบปัญหานี้เฉพาะกับไซต์ที่ลงท้ายด้วย.localและการเพิ่มทั้งรายการ IPV4 / 6 ได้แก้ไขทุกอย่างให้ฉันแล้ว (OS X 10.9)
Justin

ต้องต่อสู้กับเรื่องนี้สักหน่อยเพราะชื่อโฮสต์ของฉันในบานหน้าต่างการตั้งค่า "การแบ่งปัน" ไม่ตรงกับที่ฉันป้อนใน / etc / hosts ในกรณีที่มันช่วยใคร ...
abhishekmukherg

ว้าว. ฉันเข้าใจว่านั่น ::1คือทางลัด IPv6 ที่เทียบเท่ากับ127.0.0.1. แต่fe80::1%lo0หมายความว่าอย่างไร? - อาตอบที่superuser.com/questions/241642/…
AlexChaffee

1
คุณช่วยวันของฉัน! ฉันไม่เข้าใจว่าทำไมคำขอในโครงการในพื้นที่ของฉันจึงช้ามากโดยมีเวลาตอบสนองอย่างน้อย 5 วินาทีรวมถึงหน้า HTML ที่ง่ายที่สุดด้วย…
Michaël Perrin

24

ฉันมีปัญหาเดียวกันกับ Lion ด้วย

น่าแปลกที่วิธีแก้ปัญหาของฉันตรงข้ามกับของเจเรมี ฉันมีรายการ someproject.dev ทั้งหมดในหนึ่งบรรทัดใน / etc / hosts การโหลดเว็บไซต์ใด ๆ ในครั้งแรกใช้เวลานานประมาณหนึ่งนาที ถ้าฉันใช้อีกครั้งภายใน 5 วินาทีหรือมากกว่านั้นมันเร็วมาก แต่นานกว่านั้นมากและจะใช้เวลาอีกสักครู่ ฉันสงสัยในทุกสิ่งการเชื่อมต่อ mysql เวอร์ชัน Ruby, ข้อบกพร่องของ Rails, Apache, Phusion Passenger จนในที่สุดฉันก็ดูคอนโซลและรู้ว่ามีการพยายามค้นหา DNS

ดังนั้นฉันจึงวางทั้งหมดไว้ในบรรทัดแยกกัน:

127.0.0.1 localhost

127.0.0.1 myproject.dev

127.0.0.1 myotherproject.dev

และทันใดนั้นทุกอย่างก็เร็วขึ้นอีกครั้ง เหมือนกันทั้งสองเครื่องของฉัน


พยายามทุกอย่างที่นี่ใน stackoverflow แต่โพสต์นี้และ user902664 ช่วยได้ สาย IPv4 และ IPv6 ทั้งหมดจะต้องเป็นบรรทัดเดียว หากใช้รายการ IPv4 เท่านั้น แต่แยกบรรทัดลดลงจาก 30 วินาทีเป็น ~ 1 โดยใช้ร่วมกับการตั้งค่า IPv6 บนเส้นที่แยกจากกันลดลงเหลือ ~ 0.5 วินาที
tomis

ดูเหมือนจะเป็นบั๊กที่บ้าคลั่ง ฉันมีรายการที่อยู่ 192.168.56.3 กับ 14 นามแฝง ลบหนึ่งนามแฝงและคุณสามารถแก้ไขโฮสต์ใน <1s ด้วยนามแฝงที่ 14 ใช้เวลาประมาณ 30 วินาทีในการแก้ไขรายการสองสามรายการแรกที่เขาแสดง ...
Brian M. Carr

นี่เป็นข้อผิดพลาดเฉพาะ OSX หรือไม่ ทุกคนสามารถเชื่อมโยงไปยังรายงานข้อบกพร่องได้หรือไม่?
pje

ใช้เวลาเพียงหลายชั่วโมงในการเรียนรู้เพิ่มเติมเกี่ยวกับการกำหนดค่าเครือข่ายมากกว่าที่ฉันต้องการ ฉันกำลังจะกระโดดและตั้งค่าเซิร์ฟเวอร์ DNS ในเครื่องจากนั้นก็ทำการแก้ไข ขอบคุณ. Mavericks 10.9.5 ที่นี่
clumsyfingers

13

การระบุโฮสต์เดียวกันสำหรับ IPv6 :: 1 ช่วยฉันได้

127.0.0.1 something.local.mydomain.org
::1 something.local.mydomain.org

ใช่และหนึ่งโดเมนต่อบรรทัด
warvariuc

1
สิ่งนี้ช่วยแก้ปัญหาให้ฉันได้ ในกรณีของฉันอย่างน้อยก็ไม่จำเป็นต้องมีเพียงโดเมนเดียวต่อบรรทัด
jeff-h

9

ตรวจสอบให้แน่ใจว่าได้ใส่รายการ IP v6 ไม่อยู่ในบรรทัดกับ localhost

::1 localhost

รายการ IP v6 อยู่ในบรรทัดแยกกัน

fe80::1%lo0 here and_here

บางครั้งมันเร็วมากในตอนนี้ แต่มีข้อยกเว้นที่หายากที่ความล่าช้าแบบเก่าจะกลับมา อย่างไรก็ตามอาจขึ้นอยู่กับเหตุผลอื่น ๆ


1
สิ่งนี้ใช้ได้ผลสำหรับฉันบน OS X 10.11.6 - ทันทีที่ฉันทำซ้ำรายการ localhost IPv4 (บรรทัดเดียวสำหรับ 127.0.0.1) เป็น :: 1 บรรทัดที่มีนามแฝงเดียวกันการค้นหาจะลดลงจาก 4-5 วินาทีเป็นทันที ฉันยังมีรายการ 127.0.0.2 ซึ่งฉันทำซ้ำเป็น :: 2 ฉันมีบรรทัดเดียวต่อที่อยู่ ขอบคุณ!
RichVel

7

บน OSX El Capitan สิ่งที่ใช้ได้ผลสำหรับฉันคือการสร้างรายการ IPv6 ที่ซ้ำกันเหนือรายการ IPv4 เช่นนั้น

fe80::1%lo0 demo.test.dev
127.0.0.1   demo.test.dev

ตกลงใช้ได้กับรายการ IPv6 ด้านบนหรือด้านล่าง IPv4 ตราบเท่าที่มีรายการนามแฝงเดียวกัน
RichVel

นี่เป็นเรื่องไร้สาระ แต่แก้ไขปัญหาที่ฉันมีกับ Chrome ที่ช้ามากในการแก้ไขลิงก์ localhost ไปยังคอนเทนเนอร์นักเทียบท่า laradock ของฉัน (Safari ใช้ได้ดีเสมอ)
jeff-h

ใช้งานได้กับ High Sierra เช่นกัน - Firefox, Safari ใช้งานได้หรือไม่ก็ได้
Chris Athanasiadis

3

การตรวจสอบให้แน่ใจว่าชื่อโฮสต์ถูกกำหนดไว้ที่จุดเริ่มต้นของไฟล์สร้างความแตกต่างให้ฉัน โดยค่าเริ่มต้นบรรทัด 127.0.0.1 localhost อยู่ที่จุดเริ่มต้นแล้วเพียงเพิ่มรายการของคุณในบรรทัดเดียวกัน


นี่เป็นวิธีแก้ปัญหาที่แท้จริงลองส่วนที่เหลือทั้งหมดและไม่มีส่วนเกี่ยวข้องกับการอ้างอิงทั้งหมดในบรรทัดเดียวหรือเชื่อมโยงกับเส้นทาง IPv6 (เว้นแต่ว่าอาจเป็นเส้นทางหลักของคุณใน apache conf ... ) ขอบคุณ @Erik!
Joey T

นอกจากนี้นี่เป็นเวลามากกว่า 2 หรือ 3 วินาทีสำหรับฉันมากกว่า 10 ถึง 20 วินาที ฉันมีรายการ 127.0.0.1 จำนวนมาก แต่แสดงรายการทั้งหมดหลังจากการกำหนดค่า localhost เริ่มต้นโดย OS X ฉันใช้ Lion ด้วยไม่ใช่ ML หากเป็นเช่นนั้น
Joey T

น่าเศร้าที่สิ่งนี้ใช้ไม่ได้กับ Mavericks อีกต่อไป - ทิ้งการโหวตของฉันไว้ที่นี่สำหรับ Lion แม้ว่ามันจะทำงานได้ดีจนกระทั่งฉันอัปเกรดเป็น Mavs เมื่อไม่กี่เดือนที่ผ่านมา
Joey T

1

ฉันมีปัญหาเดียวกันและพบว่าเกิดจากการเปิดใช้งาน IPv6 บน LAN ของฉัน แต่ไม่มีการกำหนดค่า IPv6 อย่างถูกต้องระหว่างเครือข่ายของฉันและ ISP ของฉัน เห็นได้ชัดว่าเซิร์ฟเวอร์ DNS ของ IPv6 มีความสำคัญเหนือกว่า IPv4 DNS เมื่อไคลเอ็นต์ได้รับทั้งสองอย่าง ไคลเอ็นต์ใช้เวลาสองถึงสามวินาที (ในทุกครั้งที่พยายาม) เพื่อพบว่า IPv6 DNS ไม่สามารถเข้าถึงได้หรือหายไปจากนั้นจึงกลับไปที่ IPv4 DNS


1

หมายเหตุ: ฉันใช้ Windows และ XAMPP อย่างไรก็ตามในขณะที่ค้นคว้าปัญหาหลายคนมีปัญหาเดียวกันใน Windows และ Mac คำตอบสำหรับการอ้างอิงสำหรับทุกคนที่พบคำถามนี้เนื่องจากฉันใช้เวลาหลายชั่วโมงในการพยายามหาวิธีแก้ปัญหาที่เหมาะกับฉัน:

ฉันได้พยายามแก้ปัญหาหลายปัญหาเดียวกันรวมทั้งการวางทั้งหมดของเจ้าภาพในหนึ่งบรรทัดลบเจ้าภาพซ้ำซ้อนและ virtualhosts และยังรวมถึงสาย IPv6 - ไม่มีของเหล่านี้เพียงอย่างเดียวที่ประสบความสำเร็จ

ทางออกเดียวที่ได้เพื่อให้ห่างไกลปรากฏในการทำงานสำหรับฉันก็คือการรวมกันของทั้งหมดของการแก้ปัญหา:

  • การเปลี่ยนโดเมนที่ฉันใช้จากไซต์ของฉันท้องถิ่นไปยังไซต์ของฉัน dev . แรงบันดาลใจจากคำตอบของ @Cleverlemming
  • รวมทั้งสาย IPv6
  • การลบโฮสต์เสมือนและโฮสต์ที่ซ้ำซ้อน (ฉันแสดงความคิดเห็นไว้)

ในไฟล์โฮสต์ของฉันโฮสต์ของฉันอยู่ในบรรทัดแยกกันและจนถึงตอนนี้ปัญหาดูเหมือนจะได้รับการแก้ไขแล้ว

ขอให้โชคดีสำหรับทุกคนที่พยายามแก้ไขปัญหานี้และหากใครมีข้อมูลเพิ่มเติมโปรดดำเนินการเช่นนี้ดูเหมือนว่าจะเป็นปัญหาที่ได้รับผลกระทบหลายคนโดยไม่ทราบสาเหตุหรือวิธีแก้ไข


1

ฉันมีปัญหาเดียวกันนี้และในที่สุดก็รู้ว่าฉันมีรายการโฮสต์เดียวกันสองครั้งในบรรทัดเดียวกัน:

เช่น

127.0.0.1 localhost host1 host2 host3 host4 host5 host1 host6

ฉันลบอินสแตนซ์ที่สองของโฮสต์เดียวกัน (ในตัวอย่างด้านบน - host1) - และสิ่งต่างๆก็เร่งขึ้นทันที

รู้สึกโง่เล็กน้อยเมื่อฉันค้นพบสิ่งนี้ แต่เมื่อคุณมีชื่อโฮสต์ยาว 10 ชื่อในบรรทัดเดียวกันและคุณมักจะเพิ่ม / ลบบ่อยครั้งมันอาจถูกมองข้ามไปอย่างง่ายดาย


0

เคล็ดลับที่ทำเพื่อฉันคือการเพิ่ม

127.0.0.1 locahost

ในบรรทัดแรกของไฟล์โฮสต์

จากโฮสต์เสมือนทั้งหมดของฉันมีเพียงโฮสต์ที่ใช้ฐานข้อมูลเท่านั้นที่ทำงานช้า ฉันเชื่อว่าเป็นเพราะกระบวนการค้นหา "localhost" สำหรับการเชื่อมต่อฐานข้อมูลทำให้สิ่งต่างๆช้าลงเนื่องจากฉันเพิ่มเฉพาะที่อยู่สำหรับโฮสต์เสมือนของฉันเท่านั้นไม่ใช่ "localhost" ด้วย ตอนนี้มันเร็วอีกแล้ว :)


ฉันมีคำจำกัดความของ localhost สองคำในนั้น ดูเหมือนจะดีกว่า
Aaron Brick

0

ฉันเจอกลุ่มนี้เหมือนกัน ฉันมี vhost จำนวนมากที่กำหนดไว้ในสองบรรทัดหนึ่งสำหรับ IPv4 และอีกหนึ่งสำหรับ IPv6 การย้ายโฮสต์ฉันพยายามแก้ไขให้เป็นอันดับแรกในรายการเร่งความเร็วขึ้น

127.0.0.1 faster.example.dev host1.example.dev host2.example.dev host3.example.dev host4.example.dev host5.example.dev host6.example.dev
::1 faster.example.dev host1.example.dev host2.example.dev host3.example.dev host4.example.dev host5.example.dev host6.example.dev

0

ปัญหาโง่ ๆ ที่ทำให้ฉันเสียเวลาไปพอสมควร: หลังจากใช้คำตอบของ @ Cleverlemmingฉันพบว่ามีรายการที่ซ้ำกันในไฟล์โฮสต์ สิ่งที่ต้องการ:

::1          site1.local site2.local site1.local site3.local site4.local
fe80::1%lo0  site1.local site2.local site1.local site3.local site4.local
127.0.0.1    site1.local site2.local site1.local site3.local site4.local

จากนั้นการแก้ไข IP สำหรับ site3.local และ site4.local ใช้เวลา 5 วินาทีแห่งความตาย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.