Sometimes your server responds very slowly. If you are sure it's not a networking problem (no packet loss on traceroute) you have to check other resources that may influence performance: CPU and IO.
CPU is pretty easy to check: simply run top and sort list by CPU usage (P key):
IO bottlenecks are harder to find. You can install tool names iotop (apt-get install iotop) and see which processes consume your IO. In my case (old stable kernel) I got the following error on iotop run:
# iotop Could not run iotop as some of the requirements are not met: - Python >= 2.5 for AF_NETLINK support: Found - Linux >= 2.6.20 with I/O accounting support: Not found # uname -r 2.6.18.8-linode19
Ops. There's alternative and more portable way to see which processes may be our suspects. It's D state:
# man ps (...) D Uninterruptible sleep (usually IO)
Simply watch output of this command:
watch -n 1 "(ps aux | awk '\$8 ~ /D|R/ { print \$0 }')"
and your suspects (processes in D state) will be visible. Also you will see current process in R state (running, use CPU).
Happy hunting!