วิธีจำลองการเชื่อมต่ออินเทอร์เน็ตที่ช้าบน mac


145

โซลูชันซอฟต์แวร์ที่ดีในการชะลอการเชื่อมต่ออินเทอร์เน็ตบน mac สำหรับการทดสอบและการจำลองคืออะไร

ความต้องการหลักของฉันคือเมื่อทดสอบรหัสในเครื่องมือจำลอง iPhone / iOS ดังนั้นการชะลอการเชื่อมต่อสำหรับแอปพลิเคชันหรือกระบวนการเฉพาะจะดีมาก


ฉันพบคำตอบที่ยอมรับได้ (Network Link Conditioner) ก็เป็นวิธีแก้ปัญหาที่รวดเร็วและสกปรกที่ยอดเยี่ยมสำหรับปัญหาบัฟเฟอร์บัฟเฟอร์
Robert Tupelo-Schneck

คำตอบ:


168

Apple ได้ทำเครื่องมืออย่างเป็นทางการที่มีประโยชน์มากเพื่อชะลอการเชื่อมต่อเครือข่ายบน Mac ของคุณเพื่อการทดสอบ

การกำหนดค่าตามความชอบNetwork Link Conditionerเป็นการดาวน์โหลดฟรีจากภายใน Xcode (สำหรับ Lion และ OS ภายหลัง) นอกจากนี้ iOS ยังมีฟังก์ชั่นที่คล้ายกันซึ่งสามารถเข้าถึงได้จากภายใน Xcode และ iOS 6 หรือใหม่กว่า

ป้อนคำอธิบายรูปภาพที่นี่

Xcodeเวอร์ชันเก่ากว่าก่อนรุ่น 4.3.2 ฝังสำเนาของเครื่องมือนี้ ตอนนี้คุณใช้Xcodeเพื่อดาวน์โหลดโดยตรงในลักษณะที่คล้ายคลึงกับ iOS จำลองและเอกสารประกอบสำหรับนักพัฒนา

มีโพรไฟล์ในตัว 11 ตัวจากเครือข่าย Lossy Edge ที่มีความล่าช้า 400ms ไปจนถึงเคเบิลโมเด็ม หากคุณต้องการข้อ จำกัด อื่น ๆ ที่คุณสามารถสร้างโปรไฟล์ที่กำหนดเองด้วยการตั้งค่าของคุณเองหรือคุณยังสามารถใช้ipfwตัวเองเป็นที่อธิบายไว้ในเครก Hockenberry 's บทความขี่ช้าทำให้มันง่ายนอกจากนี้ยังกล่าวถึงขีด จำกัด ความเร็วแผงโดยไมค์ Schragที่เป็นไฟล์ดาวน์โหลดที่มีขนาดเล็ก มากกว่า Xcode แต่มีตัวเลือกน้อยกว่าเครื่องมือของ Apple

มันช้าลงทั้งเครือข่ายสแต็คดังนั้นคุณจึงไม่สามารถเค้นในแต่ละแอปได้โดยไม่ต้องทำสิ่งต่าง ๆ เช่นการติดตั้งสิงโตในเครื่องเสมือนและตั้งค่า VM ด้วยสแต็ตปริมาณ


1
: OI ยังมี Xcode อยู่และไม่รู้เรื่องนี้เลย
Alexander

21
อย่าลืมปิดหลังจากทดสอบเสร็จแล้ว!
Jason Salaz

1
ชี้แจง: คุณต้องดาวน์โหลดเครื่องมือ IO ของฮาร์ดแวร์จาก Apple ดูการติดตั้งเครื่องมือปรับสภาพลิงก์เครือข่ายของแอปเปิ้ล
daviesgeek

2
จำกัด ความเร็วระบุไว้ด้านล่างทำงานได้อย่างดีเยี่ยม ฉันใช้ตอนนี้สำหรับโฮสต์ในพื้นที่: 8888 บน MAMP
Anriëtte Myburgh

1
โปรดทราบว่า iOS 6 มีเครือข่ายการเชื่อมโยงเครือข่ายสำหรับการทดสอบบนอุปกรณ์ เข้าถึงได้ผ่านการตั้งค่า -> ผู้พัฒนาภายใต้ส่วน "Network Link Conditioner"
Mike Weller

35

OS X 10.9 และก่อนหน้านี้มอบipfwและช่วยให้คุณสามารถกำหนดกฎไฟร์วอลล์ที่กำหนดเองได้ สร้างไปป์ด้วยแบนด์วิธที่ จำกัดโดยใช้ipfwและคุณสามารถเรียกใช้การทดสอบและการจำลองของคุณ

  1. สร้างไปป์ "1" จำกัด ที่ 500KBytes / s ผ่าน

    sudo ipfw pipe 1 config bw 500KByte/s
    
  2. เป็นแนวทางในการรับส่งข้อมูลเครือข่ายทั้งหมดของพอร์ต 80 ผ่านไปป์ "1" โดยใช้

    sudo ipfw add 1 pipe 1 src-port 80
    
  3. เมื่อคุณไม่ต้องการใช้ไพพ์อีกต่อไปให้ลบออกจากพอร์ตโดยใช้

    sudo ipfw delete 1
    

อื่น ๆ

  • หากคุณต้องการตั้งค่าอุปสรรคการจราจรที่สูงขึ้นคุณสามารถใช้ MByte/s
  • พอร์ต80: พอร์ตมาตรฐานสำหรับhttpการรับส่งข้อมูลที่ไม่ได้เข้ารหัส พอร์ตนี้ใช้สำหรับการเรียกดูและดาวน์โหลดส่วนใหญ่ คุณควรปรับตัวให้ชินกับสิ่งนี้ในกรณีส่วนใหญ่
  • พอร์ต443: พอร์ตมาตรฐานสำหรับhttpsปริมาณข้อมูลที่เข้ารหัสของ SSL

10
น่าเสียดายที่ ipfw ถูกลบใน OS X 10.10 Yosemite
igo

คุณสามารถใช้ pfctl เพื่อเร่งความเร็วแบนด์วิธบน OS X 10.10+
ยูจีน A

ฉันได้เพิ่มคำตอบด้านล่างที่แสดงpfctlและdnctlตัวอย่างการใช้งาน
ubershmekel

31

การ จำกัด ความเร็วเป็นบานหน้าต่างการตั้งค่าระบบสำหรับการเลือกพอร์ตและโดเมนที่ต้องการโดยเฉพาะและช้าลง


ฉันชอบที่มันละเอียดกว่าเครื่องมือ XCode ที่กล่าวถึงในคำตอบที่ยอมรับ ขอบคุณสำหรับคำแนะนำ
sholsinger

1
จริง ๆ แล้วฉันพบว่า "localhost" ไม่ทำงานการสลับไปยังที่อยู่ IP 127.0.0.1 ได้ทำการหลอกลวง
OlliM

4
SpeedLimit ไม่ทำงานตั้งแต่ OS X 10.10 เนื่องจากเครื่องมือไฟร์วอลล์ที่ใช้ถูกลบออก: github.com/mschrag/speedlimit/issues/13
Robin

ลิงก์ไปที่ จำกัด ความเร็วใช้งานไม่ได้
Jeff Holt

แหล่งที่มาถึงขีด จำกัด ความเร็วดูเหมือนจะไม่ได้รับการบำรุงรักษาในขณะนี้ แต่มีให้ที่นี่และมีทางแยกที่ทันสมัยกว่านี้ถึงแม้ว่าฉันไม่ได้ทดสอบเลย
Brad Parks

11

หากต้องการเพิ่มคำตอบที่ยอมรับ: ดูเหมือนว่าคุณไม่จำเป็นต้องใช้ XCode เพียงแค่บัญชีที่เว็บไซต์ Apple Developer (ง่ายกว่าการดาวน์โหลดแพ็คเกจ 2GB XCode ก่อนหากคุณยังไม่มี)

ไปที่https://developer.apple.com/downloadsและค้นหา "Network Link Conditioner" หรือ "เครื่องมือเพิ่มเติมสำหรับ XCode" ซึ่งภายหลังเป็นชื่อของแพ็คเกจที่พบ

วิธีดาวน์โหลดผ่าน Xcode 8.x:

  • คลิกที่เมนู Xcode
  • ไปที่เครื่องมือเปิดนักพัฒนา> เครื่องมือสำหรับนักพัฒนาเพิ่มเติม ...
  • นี่จะเปิดหน้าเว็บที่ developer.apple.com (หมายเหตุ: คุณอาจต้องเข้าสู่ระบบก่อน)
  • คลิกที่เครื่องหมาย '+' ถัดจากเครื่องมือเพิ่มเติมสำหรับ Xcode 8.x
  • คลิกที่ URL ดาวน์โหลด

2
ยินดีต้อนรับสู่ถามที่แตกต่างกัน! แทนการเขียนคำตอบในการแก้ไขคำตอบของคนอื่นเพียงคลิกแก้ไขหรือปรับปรุงคำตอบนี้ปุ่มด้านล่างโพสต์ที่คุณต้องการที่จะปรับปรุง
grg

9

หากคุณจะต้องควบคุมปริมาณสำหรับการพัฒนาเว็บผมบริสุทธิ์ใจสามารถแนะนำชาร์ลส์ มันเป็นเครื่องมือที่ยอดเยี่ยมสำหรับการดีบักแอปพลิเคชั่น HTTP อยู่แล้วและด้วยคุณสมบัติมากมายมันมีตัวเลือก Throttle ซอฟต์แวร์ไม่ถูก แต่ทำงานได้ยอดเยี่ยม


จริง ๆ แล้วฉันต้องการมันสำหรับเครื่องจำลอง iPhone .. และทดสอบการเชื่อมต่อกับเซิร์ฟเวอร์
aneuryzm

5

ผู้ใช้ Mac OS X 10.10+ จำเป็นต้องใช้dnctlและpfctlตัวอย่างการใช้งานที่ทำเป็นเอกสารนั้นหาไม่ได้ง่ายนัก

# Configure `pfctl` to use `customRule`. 
(cat /etc/pf.conf && echo "dummynet-anchor \"customRule\"" && echo "anchor \"customRule\"") | sudo pfctl -f -

# Define `customRule` to pipe traffic to `pipe 1`.
# Note this is the actual port definition, not a textual comment
echo "dummynet in quick proto tcp from any to any port 443 pipe 1" | sudo pfctl -a customRule -f -

# Define what `pipe 1` should do to traffic
sudo dnctl pipe 1 config delay 10000
sudo dnctl pipe 1 config bw 10Kbit/s

# DO NOT FORGET to undo these when you're done
sudo dnctl -q flush
sudo pfctl -f /etc/pf.conf

หากคุณต้องการออกไปข้างนอกและกำหนดทุกสิ่งที่คุณสามารถใช้:

echo "dummynet in quick proto tcp from any to any pipe 1" | sudo pfctl -a customRule -f -

ฉันเชื่อว่าสิ่งนี้จะส่งผลต่อท่อ localhost ซึ่งทำให้การดีบัก vs-code ของฉันช้าลงดังนั้นจงระวังสิ่งนั้น


4

คุณยังสามารถใช้ ipfw piping เพื่อชะลอเครือข่ายของคุณ

ก่อนอื่นให้ตั้งค่า "ไพพ์" เสมือนเพื่อ จำกัด ปริมาณงานไว้ที่ 800KBit / วินาที:

ipfw pipe 1 config bw 800Kbit

จากนั้นคุณสามารถตั้งค่ากฎเพื่อส่งทราฟฟิกผ่านไพพ์นั้น (ไพพ์ 1) (พอร์ต 6881-6890 ที่มีการจราจรน้อย)

ipfw add 10 pipe 1 tcp from any to me 6881-6890
ipfw add 11 pipe 1 tcp from any 6881-6890 to me

นี่เป็นอีกตัวอย่างหนึ่งที่จะ จำกัด ปริมาณการใช้ข้อมูลให้เหลือเพียง 10Kbit / วินาทีจากที่อยู่ IP ที่ระบุ:

ipfw pipe 2 config bw 10Kbit
ipfw add 15 pipe 2 ip from me to 64.81.84.114

(ที่มา)


ipfw ถูกลบใน OSX 10.10
Ben Wheeler

-1

สำหรับ XCode 10.2 ในเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์เพิ่มเติม - เครื่องมือเพิ่มเติมสำหรับ XCode 10.2 คุณจะพบ Network Link Conditioner


โซลูชันนี้แตกต่างจากคำตอบที่ให้ไว้แล้วอย่างไร
Nimesh Neema

ฉันดาวน์โหลดเครื่องมือฮาร์ดแวร์โดยไม่ตั้งใจแม้ว่าจะเป็นรุ่น XCode รุ่นเก่าฉันคิดว่ามันจะทำงานได้เพราะฉันไม่ได้เห็นรุ่นใหม่กว่านี้ ไม่มีที่ใดที่เขียนว่าสำหรับ XCode ใหม่ 10.2 ฉันต้องเลือกเครื่องมือเพิ่มเติมเพื่อรับการเชื่อมโยงเครือข่ายล่าสุด ที่กล่าวถึงที่นี่เพื่อให้นักพัฒนารายอื่นไม่ต้องเสียเวลา หากคุณพบว่ามันไม่แตกต่างจากคนอื่น ๆ ลบด้วยสิบห้าครั้ง ฉันทำมันเพื่อให้คนอื่นได้รับความช่วยเหลือจากมันโดยค้นหาใหม่ XCode 10.2
Kiran Jasvanee

มันจะช่วยให้ทุกคนที่อ่านคำตอบนี้ได้จริงหากคุณสามารถแก้ไขคำตอบและรวมถึงข้อมูลที่สำคัญนี้ได้ นอกจากนี้ผู้ใช้หลายคนพบว่าการเขียนอย่างชัดเจนและคำแนะนำทีละขั้นตอนมีคุณค่าจริงๆ
Nimesh Neema

@NimeshNeema ฉันคิดว่านักพัฒนาซอฟต์แวร์ทุกคนรู้ในชุมชนว่าคุณสามารถค้นหาเครื่องมือนี้ผ่านเครื่องมือนักพัฒนาเพิ่มเติม ฉันเขียนขั้นตอน ฉันไม่คิดอย่างนั้นฉันควรพูดถึงรายละเอียดเพิ่มเติม
Kiran Jasvanee

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