Ответ 1
Вполне возможно, что проблема заключается в ссылке google, а не в другом. Я загрузил вещи на Google Drive с хром, и кроме того, моя ссылка для загрузки - гигантская (50 Мбит/с), Google кажется ограниченной.
Я пытаюсь загрузить большие (50 МБ - 32 ГБ) файлы в Google.Drive. Я использую google-api-dotnet, который обеспечивает логику загрузки и поддержку шифрования. Основная проблема - медленная скорость загрузки.
Я просмотрел исходный код api . Каждый файл загружается кусками (я устанавливаю размер блока до 4 МБ). Каждый кусок загружается с помощью нового экземпляра HttpRequestMessage. HttpClient создается после запуска и повторного использования службы api для всех запросов.
Скорость загрузки 600 кбайт/с и стабильная, в то время как моя восходящая линия связи в 10 раз быстрее.
Я захватил трафик с Wireshark:
Каждый кусок разделен на сотни или тысячи небольших пакетов TLS. И для каждого небольшого пакета TLS ожидается подтверждение. Таким образом, результирующая скорость очень низкая.
Но когда я запускаю прокси Fiddler, скорость становится такой же быстрой, как моя uplink.
Пакеты TLS идут очень быстро параллельно, и подтверждения принимаются позже:
Я попробовал свой код на 5 ПК с Win7, и все показали такую же низкую скорость загрузки. Но когда я попытался на ПК Win10, скорость была очень хорошей. Также я попробовал клиентское приложение Google.Drive, и у него были такие же проблемы со скоростью. Я попытался найти это поведение, но ничего не нашел.
Вполне возможно, что проблема заключается в ссылке google, а не в другом. Я загрузил вещи на Google Drive с хром, и кроме того, моя ссылка для загрузки - гигантская (50 Мбит/с), Google кажется ограниченной.
Максимальный размер записи составляет 16 КБ для SSLv3/TLSv1, поэтому, возможно, вы рукопожаете со старой версией. Я думаю, что google оптимизирован для пользователя SPDY/HTTP2 protocole, который может отправлять параллельно в том же соединении. Возможно, ваш клиент не...