Donnerstag, 9. März 2017

Awesome macOS command line tools

Eigentlich ist dem Titel nichts mehr hinzuzufügen. Unter https://github.com/herrbischoff/awesome-osx-command-line findet man eine sehr gute Sammlung von oft unbekannten macOS Commandozeilen Werkzeugen und Aufrufen die das Leben für Terminal-fixierte Leute auf dem Mac deutlich erleichtern. Ein paar der Sachen liefen bei mir schon. Jetzt haben ich neue Dinge um die Arbeit zu vereinfachen.

Mittwoch, 8. März 2017

Robustness Test Scenario: Slow Down Connection via Command tc

Ein Robustness Test Szenario ist die langsame Verbindung zwischen Servern. Der Grund für so eine Störung können vielfältig sein, liegen aber meistens im Bereich Last, Lastenverteilung und fehlerhafte Software. Konkret können massives Logging (Debug Schalter in Live vergessen) zu massiven Schreiboperationen führen, wenn die Festplatte nicht lokal ist sondern per NAS bereitgestellt wird, kann dieses Logging auch andere Diensten Beeinträchtigen, weil das NAS ausgelastet ist.

Dieses Szenario kann jetzt auf verschiedenen Wege simuliert werden. Man kann das Logging simulieren oder man kann die Netzwerkschnittstelle drosseln. Bei SSH Verbindungen ist dies einfach, dort gibt es einen passenden Schalter, den gibt es auch bei CURL und Webbrowser wie Chrome können das auch. Aber es gibt für Linux auch einen allgemeineren Weg mit dem Commando tc. TC steht für Traffic Control und erlaubt das Drosseln der Verbindungsgeschwindigkeit (Bandbreite, bandwidth) und eine Erhöhung der Netzwerklatenz (ping, trafic shaping).

Hier ein kleines Beispiel.
Ein Ping auf Google.com Dauer etwas länger als 9ms.

Jetzt fügen wir 500ms Latenz hinzu.
sudo tc qdisc add dev eth0 root netem delay 500ms


Jetzt benötigt der Ping 509 ms.

Danach noch alle Änderungen rückgängig machen.
sudo tc qdisc del dev eth0 root

Das gleich funktioniert auch mit der Begrenzung des Traffic Durchsatzes. Neben Robustness Test lassen sich auch Web Performance Messungen mit unterschiedlichen Anbindungen (3G, UMTS, ...) simulieren.

Link:

  1. http://mark.koli.ch/slowdown-throttle-bandwidth-linux-network-interface
  2. https://github.com/markkolich/blog/blob/master/content/entries/slowdown-throttle-bandwidth-linux-network-interface.md