If you see only one request coming into the application, the only thing I can imagine is a global lock somewhere in the pipeline.
The lock can be explicit (you wrote the lock statement) or implicit. If you see several requests, this may be due to the exhaustion of the thread pool.
Keep in mind that in addition to limiting the number of threads used to process incoming web requests, there is a separate cap for the number of simultaneous outgoing web requests through HttpWebRequest, and by default this limit is very low - if I remember correctly 2 per processor. I do not remember the parameter name in the web.config file, but try to find it.
In any case, the publication code will give us a better chance to help you.
source share