net google desde consumir consume c# .net performance google-drive-sdk dotnet-httpclient

google - C#HttpClient baja velocidad de carga



httpclient c# (2)

Estoy intentando subir archivos grandes (50 MB - 32 GB) a Google.Drive. Estoy usando google-api-dotnet que proporciona soporte de cifrado y lógica de carga. El principal problema es la velocidad de carga lenta.

Miré a través del código fuente de la API. Cada archivo se carga por fragmentos (configuro el tamaño del fragmento en 4 MB) Cada fragmento se carga mediante una nueva instancia de HttpRequestMessage. HttpClient se crea una vez que el servicio api se inicia y se reutiliza para todas las solicitudes.

La velocidad de carga es de 600 kbytes / sy estable, mientras que mi enlace ascendente es 10 veces más rápido.

Capturé el tráfico con Wireshark: Cada parte está dividida en cientos o miles de paquetes TLS pequeños. Y para cada pequeño paquete TLS se espera una confirmación. Así que la velocidad resultante es muy baja.

Pero cuando inicio el proxy de Fiddler, la velocidad se vuelve tan rápida como puede hacerlo mi enlace ascendente. Los paquetes TLS van muy rápido en paralelo y las confirmaciones se reciben más tarde:

Probé mi código en 5 PC con Win7 y todos mostraron una velocidad de carga baja similar. Pero cuando probé con Win10 PC, la velocidad era muy buena. También probé la aplicación cliente Google.Drive y tuve los mismos problemas con la velocidad. Intenté buscar sobre este comportamiento, pero no encontré nada.

  1. ¿Por qué los bloques de 4 MB se dividen en paquetes TLS de 4 KB? ¿Puedo aumentar el tamaño de los paquetes TLS?
  2. ¿Cómo puedo hacer que los paquetes TLS se envíen en paralelo como lo hace Fiddler?
  3. ¿O hay otros métodos para aumentar la velocidad de carga?

El tamaño máximo de registro es de 16kB para SSLv3 / TLSv1, por lo que tal vez tenga una versión anterior. Creo que Google está optimizado para el usuario SPDY / HTTP2 protocolo que puede enviar en paralelo en la misma conexión. Tal vez tu cliente no ...

¿Cómo hacer que .net HttpClient use http 2.0?


Es altamente posible que el problema sea el enlace de Google, no otra cosa. Me han subido cosas a Google Drive con Chrome y, además, mi enlace de carga es gigante (50 Mbps), Google parece limitado.