elidev


Diary of a coder.

Archive for October 31st, 2011

Posted by eli at 31 October , 2011

A couple of weeks after Dennis Ritchie died, I am sitting at a Windows desktop trying to debug connection problems together with another developer. The web server we are working with establishes a lot of TCP connections to an external web service, and once we put load on the system we start getting connection timeouts or error messages indicating that the sockets cannot be opened. We suspect this may be caused by the system running out of ephemeral ports, and we want to test this hypthesis.

By running netstat we can get a list of all active ports, and we can see what state they are in (the most interesting issue is whether there are lots of sockets in TIME_WAIT). What we would ultimately like to do is to run netstat over and over again counting the number of sockets in TIME_WAIT and correlate this information against the error messages from the web server.

In Linux, this would have been a piece of cake. Write a bash-script that loops netstat | grep TIME_WAIT | wc -l, redirect output to a file or even pipe it to another program, and we are done. How do you accomplish this in Windows? There may be a way, but I am not familiar with it. The corresponding bat script would be much more complicated, so much that the whole approach is probably not advisable. You probably will end up installing or using some software providing exactly the information you want in a cute little UI, but for every single case you would have to repeat this procedure.

For these “ad-hoc” diagnostic tasks, Unix simply outclasses Windows, which is one of  the reasons I vastly prefer Linux to Windows as a server OS. I am amazed with how well the fundamental Unix design principles continue to hold up.

When we think of “design” what we typically think of is the slick GUIs created by the likes of Apple, but the Unix shell is also an example of excellent design. And yes, it is also extremely usable, especially for diagnostic tasks like the one outlined above. Rest in peace, Dennis Ritchie, and thank you for everything.

As a final note I can recommend Joel Spolsky’s excellent article from 2003 about Unix/Windows biculturalism which is well worth a read.

Tags: , ,
Posted in: Uncategorized | No Comments »