The general approach to this type of problem is to collect packet captures (tcpdump, wireshark) and post process them at a later date.
You also mention 'request/response' behavior. What level? The transport layer? Application layer? There are wildly different behaviors at each.
L7Sqr
Practically a Master Poster
655 posts since Feb 2011
Reputation Points: 201
Solved Threads: 123
Honestly, the experience you have at the application layer (the layer you are dealing with) is a compound effect of many lower layers. Google has done a large exploration into this space (load improvements at the HTTP level) - you can look at some of the results here (SPDY Protocol) .
There is no way to improve HTTP if TCP (or network fabric) below you is the constraint as HTTP depends on TCP to do it's job.
I'd look at the SPDY link above and see how much of that correlates to what you are seeing. Take pointers and run with some of the ideas there.
L7Sqr
Practically a Master Poster
655 posts since Feb 2011
Reputation Points: 201
Solved Threads: 123