Mac'teki yavaş internet bağlantılarını nasıl simüle edebilirim?


145

Mac'teki internet bağlantılarını test ve simülasyonlar için yavaşlatan iyi bir yazılım çözümü nedir?

Benim birincil ihtiyacım iPhone / iOS simülatöründeki kodu test ederken, belirli uygulamalar veya işlemler için bağlantıyı yavaşlatmak harika olurdu.


Ayrıca arabellek sorunları için mükemmel bir hızlı ve kirli çözüm olarak kabul edilen yanıtı (Ağ Bağlantısı Kremi) de buldum.
Robert Tupelo-Schneck

Yanıtlar:


168

Apple, test amaçlı Mac'inizdeki ağ bağlantılarını yavaşlatmak için çok kullanışlı bir resmi araç haline getirmiştir.

Ağ Bağlantısı Kremi tercihi (Lion ve sonraki işletim sistemi için) Xcode içinden bir ücretsiz olarak indirilebilir. Ek olarak, iOS, Xcode ve iOS 6 veya sonraki sürümlerinden erişilebilir benzer bir işleve sahiptir.

görüntü tanımını buraya girin

4.3.2'den önceki Xcode sürümlerinin eski sürümleri bu aracın bir kopyasını eklemiştir. Şimdi, kullanmak Xcode için doğrudan indirir iOS simülatörleri ve geliştirici belgelerine benzer şekilde.

Bir Lossy Edge ağından 400 ms gecikmeli bir kablo modeme 11 yerleşik profil var. Başka sınırlamalara ihtiyaç duyarsanız, kendi ayarlarınızla özel profiller oluşturabilir veya Craig Hockenberry'nin yavaş sürüş makalesinde ipfwanlatılan şekilde kullanabilirsiniz , daha kolay hale getirin Ayrıca, daha küçük bir indirme olan Mike Schrag'ın Hız Sınırı panelinden de bahsedin Xcode’dan daha az, ancak Apple’ın aracından daha az seçeneğe sahip.

Tüm ağ yığınını yavaşlatır, bu nedenle sanal bir makineye aslan yükleme ve bu VM'yi kısılmış bir yığınla ayarlama gibi şeyler yapmadan uygulama bazında kısma yapamazsınız.


1
: OI bile Xcode var ve bunu bilmiyordu
Alexander

21
Testi tamamladıktan sonra kapattığınızdan emin olun!
Jason Salaz

1
Açıklama: Aslında, donanım IO araçlarını Apple'dan indirmeniz gerekir. Bkz. Elma Ağı Bağlantısı Koşullandırma Aracı
daviesgeek

2
Aşağıda belirtilen Hız Sınırı mükemmel çalışıyor . Şimdi localhost için kullanıyorum: MAMP'ta 8888.
Anriëtte Myburgh

1
Ayrıca, iOS 6'nın cihaz üzerinde test etmek için ağ bağlantısı şartlandırıcısı bulunduğunu unutmayın. "Ağ Bağlantısı Koşullandırma" bölümü altındaki Ayarlar-> Geliştirici yoluyla erişin.
Mike Weller,

35

OS X 10.9 ve önceki sürümleri sağlar ipfwve özel güvenlik duvarı kurallarını tanımlamanıza olanak tanır. Bir oluşturun sınırlı bant genişliği ile boruyu kullanarak ipfwve size testler ve simülasyonlar çalıştırabilir.

  1. 500KBytes / s ile sınırlandırılmış bir "1" borusu oluşturun.

    sudo ipfw pipe 1 config bw 500KByte/s
    
  2. 80 numaralı bağlantı noktasının tüm ağ trafiğini "1" numaralı boru aracılığıyla yönlendirin

    sudo ipfw add 1 pipe 1 src-port 80
    
  3. Artık boruya ihtiyacınız olmadığında, kabloyu kullanarak bağlantı noktasından çıkarın.

    sudo ipfw delete 1
    

Diğer

  • Daha yüksek trafik engelleri belirlemek istiyorsanız, MByte/s
  • Port 80: şifrelenmemiş httptrafik için standart port . Bu bağlantı noktası çoğu tarama ve indirme için kullanılır. Çoğu durumda bununla iyi olmalısın.
  • Port 443: SSL şifreli httpstrafik için standart port .

10
maalesef, ipfw OS X 10.10'da kaldırıldı Yosemite
igo

OS X 10.10+ üzerinde bant genişliğini kısmak için pfctl kullanabilirsiniz - spin.atomicobject.com/2016/01/05/…
Eugene A

Aşağıda gösterilen örnek bir cevap pfctlve dnctlörnek kullanımı ekledim .
ubershmekel

31

Hız Sınırı , belirli bağlantı noktalarını ve etki alanlarını bilerek ve seçici bir şekilde yavaşlatan bir Sistem Tercihleri ​​bölmesidir.


Kabul edilen cevabında belirtilen XCode aracından daha ayrıntılı olması hoşuma gidiyor. Önerin için teşekkürler.
sholsinger

1
Gerçekten, "localhost" un işe yaramadığını, 127.0.0.1 ip adresine geçmenin işe yaradığını öğrendim.
OlliM

4
SpeedLimit, kullandığı güvenlik duvarı aracı kaldırıldığından beri OS X 10.10'dan itibaren işlevsel değil
Robin

Hız Sınırı'na olan bağlantı koptu.
Jeff Holt,

Speed ​​Limit kaynağının şu anda bakımsız olduğu görülüyor, fakat burada mevcut ve test etmeme rağmen burada daha güncel görünen bir çatal var
Brad Parks

11

Kabul edilen cevaba eklemek için: sadece Apple Developer web sitesinde bir hesap olan XCode'a ihtiyacınız yokmuş gibi görünüyorsunuz (zaten yoksa 2GB XCode paketini indirmek daha basit).

Https://developer.apple.com/downloads adresine gidin ve içinde bulunduğu paketin adı olan "Network Link Conditioner" veya "XCode için Ek Araçlar" ifadesini arayın.

Xcode 8.x ile indirmek için:

  • Xcode menüsüne tıklayın
  • Geliştirici Aracı Aç> Diğer Geliştirici Araçları ...
  • Bu, developer.apple.com adresinde bir sayfa açacaktır (Not: önce giriş yapmanız gerekebilir)
  • Xcode 8.x için Ek Araçlar'ın yanındaki '+' işaretini tıklayın
  • İndirme URL'sine tıklayın

2
Farklı sormaya hoş geldiniz! Başka birinin cevabını düzenlemek için bir cevap yazmak yerine, geliştirmek istediğiniz yayının altındaki bu yanıtı düzenle veya geliştir düğmesini tıklamanız yeterlidir .
grg

9

Yalnızca Web geliştirme için kısıtlamaya ihtiyaç duyarsanız, gönülden Charles'ı tavsiye edebilirim . Zaten HTTP uygulamalarında hata ayıklamak için mükemmel bir araçtır ve birçok özelliği arasında bir Throttle seçeneği vardır. Yazılım ucuz değil, ama mükemmel bir iş çıkarıyor.


Aslında ben iPhone simülatörü için ihtiyacım var .. ve bir sunucuya bağlantıları test
aneuryzm 3:11

5

Mac OS X 10.10+ kullanıcılarının kullanması gerekir dnctlve pfctlancak belgeli kullanım örneklerini bulmak kolay değildir.

# 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

Tüm dışarı çıkmak ve kullanabileceğiniz her şeyi şekillendirmek istiyorsanız:

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

Bunun aynı zamanda vs-kod hata ayıklamamı yavaşlatan yerel ana boruları da etkilediğine inanıyorum.


4

Ağınızı yavaşlatmak için ipfw borularını da kullanabilirsiniz.

İlk önce, verimi 800KBit / sn ile sınırlamak için sanal bir "boru" kurun:

ipfw pipe 1 config bw 800Kbit

Sonra trafiği bu borudan (boru 1) itmek için kurallar belirleyebilirsiniz. (6881-6890 bağlantı noktaları bittorrent trafiğidir)

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

İşte trafiği belirli bir IP adresinden 10Kbit / sn'ye kadar sınırlandırmak için başka bir örnek:

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

(Kaynak)


ipfw OSX 10.10'da kaldırıldı
Ben Wheeler

-1

XCode 10.2 için, Diğer geliştirici araçlarında - XCode 10.2 için Ek Araçlar'da Ağ Bağlantısı Koşullandırıcı'yı bulacaksınız.


Bu çözüm, daha önce verilen cevaplardan nasıl farklıdır?
Nimesh Neema

Eski XCode sürümü için bile olsa Donanım araçlarını yanlışlıkla indirdim, daha yeni bir sürüm için görmedim çünkü çalışacağını düşündüm. Yeni XCode 10.2 için, en yeni Ağ bağlantı şartlandırıcısını elde etmek için Ek Araçlar'ı seçmem gerektiği yazılı hiçbir şey yok. Burada bahsedilen diğer geliştiriciler zamanlarını boşa harcamamaktadır. Bunu diğerlerinden farklı bulmazsanız, eksi onbeş kez. Öylesine yaptım ki, diğerlerinden Yeni XCode
10.2'yi

Cevabınızı düzenleyebilir ve bu önemli bilgiyi ekleyebilirseniz, bu cevabı okuyanların gerçekten yardımı olur . Ayrıca, birçok kullanıcı açıkça yazılmış ve adım adım talimatların gerçekten değerli olduğunu fark eder.
Nimesh Neema

@NimeshNeema Tüm geliştiricilerin toplulukta bu aracı Daha fazla geliştirici aracıyla bulabileceğinizi bildiğini düşünüyorum. Adımları ben yazdım. Sanmıyorum, bu yüzden daha fazla söz etmeliyim
Kiran Jasvanee

Tamamen gayet iyi ve size cevap nasıl seçeceğinize bağlı. Bahsedilenler genellikle bir kuraldan ziyade pratik olarak takip edilir :)
Nimesh Neema
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.