By: Will

If you’re in IT or software development long enough, you’ll hear reports of weird things happening when Internet connections get slow. It can be quite difficult to troubleshoot, however, because the problem usually fixes itself by the time you’re able to test.

Or, maybe you’re creating and testing service timeouts like in my previous blog post.

Both of these can be greatly helped by artificially slowing down your network connection, and fortunately there are tools available for every operating system:

First, for Linux, a script I wrote to automatically run the appropriate tc (“Traffic Control”) commands for this purpose: https://github.com/zyphlar/tc-slowify/

Secondly, for Windows, the commercial NetBalancer software has a highly-rated free version that is capable of limiting speeds and much more: https://netbalancer.com/

Finally, for Macintosh, Xcode Developer Tools includes a System Preferences add-on called Network Link Conditioner which you can access inside of Xcode by clicking on: Xcode > Open Developer Tool > More Developer Tools… > Hardware IO Tools for Xcode — full tutorial available at:
http://nshipster.com/network-link-conditioner/

With these tools, you can better simulate actual lag and fine-tune your timeouts, error handling, and diagnosis. For example, you may not notice the difference between connection timeouts and overall timeouts on your fast cable connection, but fine-tuning these values can make a big difference when a connection (or response) unexpectedly takes much longer to complete.