Mejora del rendimiento de HttpWebRequests multiproceso en .NET

Estoy tratando de medir el rendimiento de un servicio web.

Para hacer eso, he escrito una pequeña herramienta que continuamente envía solicitudes y lee las respuestas de varios hilos.

El contenido del bucle interno de cada hilo se ve así:

public void PerformRequest()
{
  WebRequest webRequest = WebRequest.Create(_uri);

  webRequest.ContentType = "application/ocsp-request";
  webRequest.Method = "POST";
  webRequest.Credentials = _credentials;
  webRequest.ContentLength = _request.Length;
  ((HttpWebRequest)webRequest).KeepAlive = false;

  using (Stream st = webRequest.GetRequestStream())
    st.Write(_request, 0, _request.Length);

  using (HttpWebResponse httpWebResponse = (HttpWebResponse)webRequest.GetResponse())
  using (Stream responseStream = httpWebResponse.GetResponseStream())
  using (BufferedStream bufferedStream = new BufferedStream(responseStream))
  using (BinaryReader reader = new BinaryReader(bufferedStream))
  {
    if (httpWebResponse.StatusCode != HttpStatusCode.OK)
      throw new WebException("Got response status code: " + httpWebResponse.StatusCode);

    byte[] response = reader.ReadBytes((int)httpWebResponse.ContentLength);
    httpWebResponse.Close();
  }      
}

Parece funcionar bien, excepto que algo parece estar limitando la herramienta. Si ejecuto dos instancias de la herramienta con cada 40 subprocesos, obtengo significativamente más rendimiento que una instancia con 80 subprocesos.

Encontré la propiedad ServicePointManager.DefaultConnectionLimit, que configuré en 10000 (y no hace ninguna diferencia si la configuro a través de app.configcomo lo sugirió Jader Dias)

¿Hay alguna otra configuración en .NET o en mi máquina que pueda influir en el rendimiento? (Estoy ejecutando Vista, pero veo el mismo problema en Windows Server 2003).

¿Quizás algunas restricciones sobre cuántas conexiones puede hacer un solo proceso?

Respuestas a la pregunta(6)

Su respuesta a la pregunta