99% скачать файл

У нас есть сервер под Ubuntu 12.04 с установленным там Apache HTTP 2.2.

Ядро 3.2.0.

Столкнулся с странным поведением при загрузке некоторых файлов.

Конфигурация Virtualhost:

<Directory /var/www/name/*> ... AllowOverride AuthConfig # add these accordingly for the MIME types to be compressed AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/x-javascript <Files *.gz> SetOutputFilter DEFLATE Header set Content-Encoding: gzip Header append Content-Encoding: deflate </Files> </Directory> 

Проблема в том, что иногда по неизвестным причинам невозможно загрузить некоторые (!) Файлы: при загрузке файла 99% – скорость уменьшилась до 0 и загрузка остановилась.

Ничего необычного в журналах, но я нашел одну странность в tcpdump (после скорости загрузки == 0).

Например, во время попытки загрузки badfile.gz :

 10:36:37.611369 IP (tos 0x0, ttl 64, id 7954, offset 0, flags [DF], proto TCP (6), length 1420) 37.**.**.176.80 > 10.**.**.25.55981: Flags [.], cksum 0x00a9 (correct), seq 228803:230171, ack 197, win 243, options [nop,nop,TS val 2097666946 ecr 811530774], length 1368 10:36:37.611396 IP (tos 0x0, ttl 64, id 64391, offset 0, flags [DF], proto TCP (6), length 52, bad cksum 0 (->933a)!) 10.**.**.25.55981 > 37.**.**.80: Flags [.], cksum 0xac28 (incorrect -> 0xf8fc), seq 197, ack 230171, win 4053, options [nop,nop,TS val 811530824 ecr 2097666946], length 0 

Есть Flags [.] – так что он держится на передаче данных – нет флажков Finalize (afaik).

Другой пример tcpdump во время загрузки другого файла goodfile.gz (из того же каталога Apache на стороне сервера):

 10:39:21.216118 IP (tos 0x0, ttl 64, id 18169, offset 0, flags [DF], proto TCP (6), length 52, bad cksum 0 (->47c9)!) 10.**.**.25.55981 > 37.**.**.80: Flags [F.], cksum 0xac28 (incorrect -> 0x83bb), seq 0, ack 1, win 4096, options [nop,nop,TS val 811691867 ecr 2097666946], length 0 

Там мало файлов с разными расширениями / размерами / грантами и т. Д., Но проблема возникает только с немногими из них.

Таким образом, проблема возникает иногда, без каких-либо изменений на стороне сервера. Иногда badfile.gz можно загружать без проблем – иногда (обычно) он зависает.

То же самое при загрузке с браузерами – отчеты Chrome « Failed – Network error », Firefox – просто говорит « Оценка неизвестна » во время загрузки.

Пожалуйста, дайте мне знать, если я могу добавить дополнительную информацию.

Несколько примеров.

badfile :

 $ wget http://static.content.domain.net/assets/json/en-GB/content3.json.gz ... HTTP request sent, awaiting response... 200 OK Length: 229874 (224K) [application/x-gzip] Saving to: 'content3.json.gz.3' content3.json.gz.3 99%[==============...=====> ] 224.42K --.-KB/s eta 0s 

И goodfile :

 $ wget http://static.content.domain.net/assets/json/en-GB/24k.tar.gz ... HTTP request sent, awaiting response... 200 OK Length: 24576 (24K) [application/x-gzip] Saving to: '24k.tar.gz.1' 24k.tar.gz.1 100%[=========...======>] 24.00K --.-KB/s in 0.05s 2015-11-25 10:38:40 (440 KB/s) - '24k.tar.gz.1' saved [24576/24576] 

PS У нас достаточно сложная конфигурация сети, в том числе VPN-туннели между офисами / центрами обработки данных – может быть и здесь.

PPS У нас также есть очень старая система:

 # /usr/lib/update-notifier/apt-check --human-readable 205 packages can be updated. 154 updates are security updates. 

Но он не может быть обновлен сейчас 🙂

2 Solutions collect form web for “99% скачать файл”

Существует продолжение истории: несколько дней назад мы также столкнулись с проблемами с apt-get update на некоторых наших Ubuntu 12/14 – он не может быть завершен, а также повесить трубку во время загрузки списков.

Исправление было сделано командой NOC в настройках обнаружения угроз Cisco ASA, изменив ее на «сканирование только на пассивную».

Мы также знаем о идентичных проблемах загрузки, которые не выполняются с серверов Linux, точно так же, как вы описываете. Мы отследили его здесь в отношении несовместимости между ядром Linux 3.x и Cisco ASAs.

Обратите внимание, что на одном из задействованных устройств есть последнее 3.x Debian kernel 3.16.0, и наши обновления прошивки ASA являются последними.

Симптомы не воспроизводятся в 100% случаев, и, похоже, они влияют только на большие файлы и усугубляются, когда запросы поступают из внешних сетей (в нашем случае Интернет).

У нас есть репозиторий локального дистрибутива Linux, и это был кровавый беспорядок, загружающий образы ISO из Интернета.

Мы попытались смягчить это с помощью net.ipv4.tcp_sack = 0 и даже net.ipv4.tcp_ecn = 0 эксперимент net.ipv4.tcp_ecn = 0 , и, хотя он смягчил эту проблему, не net.ipv4.tcp_ecn = 0 их на всех серверах.

Проблема была решена, полностью перейдя на ядро ​​4.2.0.

Я также нашел поток, описывающий более обходные пути, чем те, которые мы пытались использовать sysctl .

 sysctl -w net.ipv4.tcp_sack=0 sysctl -w net.ipv4.tcp_congestion_control=reno sysctl -w net.ipv4.tcp_frto=1 sysctl -w net.ipv4.tcp_early_retrans=1 

Они также упоминают исправление конфигурации ASA, которое нам неизвестно. Я советую, если у вас есть оборудование Cisco и у вас есть поддержка Cisco, чтобы привлечь их.

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1388786

  • Linux http_proxy env vars и веб-соединение Firefox
  • Загрузка каталога в HTTP
  • Как реализовать механизм повтора при выполнении URL-адреса сервера в сценарии оболочки?
  • Установить HTTP-каталог на Raspbian?
  • Простой сервер агрегации кормов
  • Использование diff, но игнорирование чисел
  • Временное DNS-решение для локального ip (для временного перенаправления http)
  • Загрузка с оболочки на HTTP-сервер
  • почему у меня так много открытых обработчиков сокетов и записей в Netgrat DGRAM?
  • Локальный прозрачный прокси
  • Загрузите все файлы .gz с веб-сайта с помощью http
  • Linux и Unix - лучшая ОС в мире.