So simulieren Sie langsame Internetverbindungen auf dem Mac

Was ist eine gute Softwarelösung, um Internetverbindungen auf dem Mac für Tests und Simulationen zu verlangsamen?

Mein Hauptbedarf besteht darin, Code im iPhone / iOS-Simulator zu testen, daher wäre es großartig, die Verbindung für bestimmte Anwendungen oder Prozesse zu verlangsamen.

Antworten (10)

Apples offizielles Tool zum Verlangsamen der Netzwerkverbindungen auf Ihrem Mac zu Testzwecken ist Network Link Conditioner

Darüber hinaus verfügt iOS über eine ähnliche Funktion, auf die in Xcode und iOS 6 oder höher zugegriffen werden kann.

Geben Sie hier die Bildbeschreibung ein

Ältere Versionen von Xcode vor Version 4.3.2 haben eine Kopie dieses Tools eingebettet. Dieser SO-Thread dokumentiert einen Teil des Verlaufs des Tools auf ähnliche Weise wie die iOS-Simulatoren und die Entwicklerdokumentation.

Es gibt 11 eingebaute Profile von einem verlustbehafteten Edge-Netzwerk mit 400 ms Verzögerung zu einem Kabelmodem. Wenn Sie andere Limits benötigen, können Sie benutzerdefinierte Profile mit Ihren eigenen Einstellungen erstellen oder Sie können auch ipfwselbst verwenden, wie in Craig Hockenberrys Artikel Slow Ride, Make It Easy beschrieben. Er erwähnt auch das Speed ​​Limit -Panel von Mike Schrag , das ein kleinerer Download ist als Xcode, hat aber weniger Optionen als Apples Tool.

Es verlangsamt den gesamten Netzwerkstapel, sodass Sie nicht pro App drosseln können, ohne Dinge wie die Installation von Lion in einer virtuellen Maschine und die Einstellung dieser VM mit einem gedrosselten Stapel zu tun.

Stellen Sie sicher, dass Sie es ausschalten, nachdem Sie mit dem Testen fertig sind!
Beachten Sie auch, dass iOS 6 den Network Link Conditioner zum Testen auf dem Gerät hat. Greifen Sie darauf über Einstellungen->Entwickler im Abschnitt "Network Link Conditioner" zu.
Es scheint, als würde es für Traffic vom Typ localhost nicht funktionieren. Ich sehe, dass jemand berichtet hat, dass es funktioniert hat, als localhost: 8888 mit MAMP verwendet wurde, aber ich verbinde mich über Port 8888 mit einer Windows-VM.
Beachten Sie, dass das Network Link Conditioner Tool im Grunde nur eine GUI ist, um dnctl/ ipfwdummynet-Regeln über seinen nlcdDaemon zu steuern (siehe: newosxbook.com/bonus/vol1ch16.html )

OS X 10.9 und früher bieten ipfwund es ermöglicht Ihnen, benutzerdefinierte Firewall-Regeln zu definieren. Erstellen Sie mit eine Pipe mit begrenzter Bandbreiteipfw und Sie können Ihre Tests und Simulationen ausführen.

  1. Erstellen Sie eine Pipe "1", die auf 500 KBytes/s begrenzt ist

    sudo ipfw pipe 1 config bw 500KByte/s
    
  2. Leiten Sie den gesamten Netzwerkverkehr von Port 80 durch Pipe "1" mit

    sudo ipfw add 1 pipe 1 src-port 80
    
  3. Wenn Sie das Rohr nicht mehr benötigen, entfernen Sie es mit aus dem Anschluss

    sudo ipfw delete 1
    

Andere

  • Wenn Sie höhere Verkehrsbarrieren setzen möchten, können Sie verwendenMByte/s
  • Port 80: Standardport für unverschlüsselten httpDatenverkehr. Dieser Port wird für das meiste Surfen und Herunterladen verwendet. Damit solltest du in den meisten Fällen gut zurechtkommen.
  • Port 443: Standardport für SSL-verschlüsselten httpsDatenverkehr.
Wie wäre es nach 10.9, was verwenden wir anstelle von ipfw?

Geschwindigkeitsbegrenzung ist ein Systemeinstellungsbereich zum absichtlichen und selektiven Verlangsamen bestimmter Ports und Domänen.

Die Quelle zu Speed ​​Limit scheint derzeit nicht gepflegt zu werden, ist aber hier verfügbar und hat eine aktueller aussehende Gabel hier drüben, obwohl ich sie überhaupt nicht getestet habe

Um die akzeptierte Antwort zu ergänzen: Es sieht so aus, als sollten Sie XCode nicht benötigen, sondern nur ein Konto auf der Apple Developer-Website (einfacher als das erste Herunterladen des 2-GB-XCode-Pakets, wenn Sie es noch nicht haben).

Gehen Sie zu https://developer.apple.com/downloads und suchen Sie nach „Network Link Conditioner“ oder „Additional Tools for XCode“, wobei letzteres der Name des Pakets ist, in dem es gefunden wird.

So laden Sie es über Xcode 8.x herunter:

  • Klicken Sie auf das Xcode-Menü
  • Gehen Sie zu Entwicklertool öffnen > Weitere Entwicklertools...
  • Dies öffnet eine Seite unter developer.apple.com (Hinweis: Möglicherweise müssen Sie sich zuerst anmelden)
  • Klicken Sie auf das „+“-Zeichen neben Zusätzliche Tools für Xcode 8.x
  • Klicken Sie auf die Download-URL

Wenn Sie Throttling nur für die Webentwicklung benötigen, kann ich Charles von ganzem Herzen empfehlen . Es ist sowieso ein hervorragendes Tool zum Debuggen von HTTP-Anwendungen, und unter seinen vielen Funktionen verfügt es über eine Throttle-Option. Die Software ist nicht billig, aber sie leistet hervorragende Arbeit.

Benutzer von Mac OS X 10.10+ müssen verwenden dnctlund pfctldokumentierte Verwendungsbeispiele sind jedoch nicht leicht zu finden.

# 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

Wenn Sie aufs Ganze gehen und alles formen möchten, können Sie Folgendes verwenden:

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

Ich glaube, dies wirkt sich auch auf Localhost-Pipes aus, die mein Vs-Code-Debugging verlangsamt haben, also denken Sie daran.

Ich musste sudo pfctl -Ezuerst laufen, um pfctl zu aktivieren. Ich habe auch sichergestellt, dass meine Firewall in Systemeinstellungen > Sicherheit & Datenschutz > Firewall aktiviert ist, aber ich bin mir nicht sicher, ob das notwendig ist.

Sie können auch ipfw-Piping verwenden, um Ihr Netzwerk zu verlangsamen.

Richten Sie zunächst eine virtuelle „Pipe“ ein, um den Durchsatz auf 800 KBit/s zu begrenzen:

ipfw pipe 1 config bw 800Kbit

Dann können Sie Regeln einrichten, um den Datenverkehr durch diese Pipe (Pipe 1) zu leiten. (Ports 6881-6890 sind Bittorrent-Verkehr)

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

Hier ist ein weiteres Beispiel, um den Datenverkehr von einer bestimmten IP-Adresse auf 10 Kbit/s zu begrenzen:

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

(Quelle)

ipfw wurde in OSX 10.10 entfernt

Ich fand diesen Terminalbefehl in meinem Fall hilfreich

Installation:

Öffnen Sie das Mac-Terminal und geben Sie diesen Befehl ein

sudo npm install @sitespeed.io/throttle -g

Verwendung:

Öffnen Sie das Terminal und geben Sie den erforderlichen Befehl ein

Startdrossel (Angenommen, wir möchten die Upload- und Download-Geschwindigkeiten als 5000 kbps)

throttle --up 5000 --down 5000

Gas stoppen

throttle --stop

Es gibt auch vorgefertigte Profile

--profile         Premade profiles, set to one of the following
                     3g: up:768 down:1600 rtt:150
                     3gfast: up:768 down:1600 rtt:75
                     3gslow: up:400 down:400 rtt:200
                     2g: up:256 down:280 rtt:400
                     cable: up:1000 down:5000 rtt:14
                     dsl: up:384 down:1500 rtt:14
                     3gem: up:400 down:400 rtt:200
                     4g: up:9000 down:9000 rtt:85
                     lte: up:12000 down:12000 rtt:35
                     edge: up:200 down:240 rtt:35
                     dial: up:30 down:49 rtt:60
                     fois: up:5000 down:20000 rtt:2

Verwendung von Profilen

throttle 4g

In XCode 12 müssen Sie Additional Tools for XCode 12 statt Hardware IO Tools installieren.

Danke. Ich habe einige Kommentare mit dem alten Namen bereinigt. Ist diese Antwort Ihrer Meinung nach im Grunde richtig ?

Für XCode 10.2 finden Sie unter Weitere Entwicklertools – Zusätzliche Tools für XCode 10.2 Network Link Conditioner.