โซลูชันซอฟต์แวร์ที่ดีในการชะลอการเชื่อมต่ออินเทอร์เน็ตบน mac สำหรับการทดสอบและการจำลองคืออะไร
ความต้องการหลักของฉันคือเมื่อทดสอบรหัสในเครื่องมือจำลอง iPhone / iOS ดังนั้นการชะลอการเชื่อมต่อสำหรับแอปพลิเคชันหรือกระบวนการเฉพาะจะดีมาก
โซลูชันซอฟต์แวร์ที่ดีในการชะลอการเชื่อมต่ออินเทอร์เน็ตบน mac สำหรับการทดสอบและการจำลองคืออะไร
ความต้องการหลักของฉันคือเมื่อทดสอบรหัสในเครื่องมือจำลอง iPhone / iOS ดังนั้นการชะลอการเชื่อมต่อสำหรับแอปพลิเคชันหรือกระบวนการเฉพาะจะดีมาก
คำตอบ:
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 ด้วยสแต็ตปริมาณ
OS X 10.9 และก่อนหน้านี้มอบipfw
และช่วยให้คุณสามารถกำหนดกฎไฟร์วอลล์ที่กำหนดเองได้ สร้างไปป์ด้วยแบนด์วิธที่ จำกัดโดยใช้ipfw
และคุณสามารถเรียกใช้การทดสอบและการจำลองของคุณ
สร้างไปป์ "1" จำกัด ที่ 500KBytes / s ผ่าน
sudo ipfw pipe 1 config bw 500KByte/s
เป็นแนวทางในการรับส่งข้อมูลเครือข่ายทั้งหมดของพอร์ต 80 ผ่านไปป์ "1" โดยใช้
sudo ipfw add 1 pipe 1 src-port 80
เมื่อคุณไม่ต้องการใช้ไพพ์อีกต่อไปให้ลบออกจากพอร์ตโดยใช้
sudo ipfw delete 1
MByte/s
80
: พอร์ตมาตรฐานสำหรับhttp
การรับส่งข้อมูลที่ไม่ได้เข้ารหัส พอร์ตนี้ใช้สำหรับการเรียกดูและดาวน์โหลดส่วนใหญ่ คุณควรปรับตัวให้ชินกับสิ่งนี้ในกรณีส่วนใหญ่443
: พอร์ตมาตรฐานสำหรับhttps
ปริมาณข้อมูลที่เข้ารหัสของ SSLpfctl
และdnctl
ตัวอย่างการใช้งาน
การ จำกัด ความเร็วเป็นบานหน้าต่างการตั้งค่าระบบสำหรับการเลือกพอร์ตและโดเมนที่ต้องการโดยเฉพาะและช้าลง
หากต้องการเพิ่มคำตอบที่ยอมรับ: ดูเหมือนว่าคุณไม่จำเป็นต้องใช้ XCode เพียงแค่บัญชีที่เว็บไซต์ Apple Developer (ง่ายกว่าการดาวน์โหลดแพ็คเกจ 2GB XCode ก่อนหากคุณยังไม่มี)
ไปที่https://developer.apple.com/downloadsและค้นหา "Network Link Conditioner" หรือ "เครื่องมือเพิ่มเติมสำหรับ XCode" ซึ่งภายหลังเป็นชื่อของแพ็คเกจที่พบ
วิธีดาวน์โหลดผ่าน Xcode 8.x:
หากคุณจะต้องควบคุมปริมาณสำหรับการพัฒนาเว็บผมบริสุทธิ์ใจสามารถแนะนำชาร์ลส์ มันเป็นเครื่องมือที่ยอดเยี่ยมสำหรับการดีบักแอปพลิเคชั่น HTTP อยู่แล้วและด้วยคุณสมบัติมากมายมันมีตัวเลือก Throttle ซอฟต์แวร์ไม่ถูก แต่ทำงานได้ยอดเยี่ยม
ผู้ใช้ 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 ของฉันช้าลงดังนั้นจงระวังสิ่งนั้น
คุณยังสามารถใช้ 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
สำหรับ XCode 10.2 ในเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์เพิ่มเติม - เครื่องมือเพิ่มเติมสำหรับ XCode 10.2 คุณจะพบ Network Link Conditioner