I have just added some enhancements to my network monitoring service that allow better control, interactivity and much better performance:
Anyone who says .Net is slow needs to come see me for some schooling. :oD
In 1.11 seconds I open a connection to the database server, retrieve the next set of nodes (per their unique schedule settings) via Linq to SQL, add 15 threads to the thread pool and then issue 60 ICMP queries (each 32 bytes), four in each thread. The complete message comes after connections have been closed and all threads have been returned to the pool.
This is a typical response, but it does vary. The range is actually anywhere between 1/10th of a second up to 16 seconds (when everything times out).
One other thing that this not-so-humble programmer was completely unaware of: apparently it is a faux-pas to have two default gateways. Who knew? Heh…well, the OS did when it was all like,
You shouldn’t have two default gateways, are you sure you want to do this, dumbass?
I actually think it said dumbass, don’t know for sure, because I clicked the “Go ahead, make my day” too quick to see what would happen.
Funny story: turns out I shouldn’t have done that.
I started hitting QoS limits last night and almost took a key part of our critical infrastructure down. Oops. ARP tables were filling up and the ICMP traffic started broadcasting across the network. A couple lots and lots of equipment starting throwing a fit and sending packets back at the test server.
While we have a very good testing strategy and a virtualized (and miniaturized) version of our production environment, it certainly doesn’t replicate everything that happens out in the real world.