There is a limit on the number of concurrent outgoing HTTP connections. You can control this using the static property System.Net.ServicePointManager.DefaultConnectionLimit before creating HttpWebRequest objects
It might be worth setting this higher than the default, which in my opinion is 2.
If this does not help, you can also increase the default size of ThreadPool so that you can create queries faster. The thread pool only gradually increases the number of threads - a new thread for every half second, IIRC
source share