You'll want to use something that can peer inside the request for clues. The Devel module allows you to see a breakdown of queries that are being run and how long they take. Other tools, like XHProf, give you even deeper insights.
Ultimately, "waiting for response" is a red herring. What it means doesn't line up with the intuitive leap you appear to have made. In this case, it's not that the server is delaying its response, it's that the server is preparing its response. Therefore, your job is to find out what's taking the server so long.
Common causes of this that I've seen in just the last few weeks:
- Dead memcached/redis hosts defined in settings.php (especially on unreachable RFC1918 subnets)
- Runaway MySQL queries
- MySQL server specified as a hostname with a slow DNS server
- MySQL server configured to look up client hostnames (i.e., no
skip_name_resolve
)
- Cron hasn't run in a while, has a large backlog, and "poor man's cron" module enabled
But again, these are all shots in the dark; you'll want to instrument and proceed deductively, rather than SWAGing your way through this.