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.
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.
Ä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 ipfw
selbst 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.
OS X 10.9 und früher bieten ipfw
und 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.
Erstellen Sie eine Pipe "1", die auf 500 KBytes/s begrenzt ist
sudo ipfw pipe 1 config bw 500KByte/s
Leiten Sie den gesamten Netzwerkverkehr von Port 80 durch Pipe "1" mit
sudo ipfw add 1 pipe 1 src-port 80
Wenn Sie das Rohr nicht mehr benötigen, entfernen Sie es mit aus dem Anschluss
sudo ipfw delete 1
MByte/s
80
: Standardport für unverschlüsselten http
Datenverkehr. Dieser Port wird für das meiste Surfen und Herunterladen verwendet. Damit solltest du in den meisten Fällen gut zurechtkommen.443
: Standardport für SSL-verschlüsselten https
Datenverkehr.Geschwindigkeitsbegrenzung ist ein Systemeinstellungsbereich zum absichtlichen und selektiven Verlangsamen bestimmter Ports und Domänen.
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:
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 dnctl
und pfctl
dokumentierte 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.
sudo pfctl -E
zuerst 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
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.
Für XCode 10.2 finden Sie unter Weitere Entwicklertools – Zusätzliche Tools für XCode 10.2 Network Link Conditioner.
Jason Salaz
Mike Weller
Randy L
Pierz
dnctl
/ipfw
dummynet-Regeln über seinennlcd
Daemon zu steuern (siehe: newosxbook.com/bonus/vol1ch16.html )