99% de download de arquivo

1

Temos um servidor no Ubuntu 12.04 com o Apache HTTP 2.2 instalado.

Kernel 3.2.0.

Enfrentado comportamento estranho durante o download de alguns arquivos.

Configuração do 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>

O problema é - às vezes, por razões desconhecidas, é impossível baixar alguns arquivos (!): quando o download do arquivo é 99% - a velocidade diminui para 0 e o download pára.

Nada incomum em logs - mas eu encontrei uma esquisitice em tcpdump (após a velocidade de download == 0) resultados.

Por exemplo - durante a tentativa de download de 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

Existe Flags [.] - portanto, aguenta a transmissão de dados - não há Finalize flags (afaik).

Outro exemplo tcpdump durante o download de outro arquivo goodfile.gz (do mesmo diretório do Apache no lado do servidor):

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

Existem alguns arquivos com extensões / tamanhos / concessões diferentes, etc. - mas o problema surge apenas com alguns deles.

Então - o problema aparece algumas vezes, sem nenhuma alteração no lado do servidor. Às vezes badfile.gz pode ser baixado sem problemas - às vezes (normalmente) desligar.

O mesmo durante o download com navegadores - Relatórios do Chrome " Falha - Erro de rede ", Firefox - apenas diz " Estimativa desconhecida " durante o download.

Por favor, deixe-me saber se posso adicionar mais informações.

Alguns exemplos.

badfile first:

$ 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    

e 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]

P.S. Temos uma configuração de rede complicada o suficiente, incluindo túneis VPN entre escritórios / centros de dados - pode estar em algum lugar por aqui também.

P.P.S Também temos sistemas muito antigos:

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

Mas não pode ser atualizado agora: -)

    
por setevoy 25.11.2015 / 09:56

2 respostas

1

Há continuação de história: alguns dias atrás nós também nos deparamos com apt-get update problemas em algumas das nossas caixas Ubuntu 12/14 - ela não pode ser concluída e também desligada durante o download de listas.

A correção foi feita pela equipe do NOC nas configurações de detecção de ameaças do Cisco ASA, alterando-a para "somente leitura passiva".

    
por 03.12.2015 / 13:31
1

Também estamos cientes de problemas idênticos de downloads falhando de servidores Linux exatamente como você está descrevendo. Nós rastreamos aqui as incompatibilidades entre o kernel Linux 3.xe os Cisco ASAs.

Por favor note que uma das máquinas envolvidas tem o último 3.x Debian kernel 3.16.0, e as atualizações de firmware ASA são recentes.

Os sintomas não são reproduzíveis 100% do tempo, e parece afetar apenas os arquivos maiores, e são exacerbados quando as solicitações vêm de redes externas (Internet no nosso caso).

Temos aqui um repositório de uma distribuição Linux local, e foi uma bagunça sangrenta baixar as imagens ISO da Internet.

Tentamos atenuar isso com net.ipv4.tcp_sack = 0 e até mesmo experimentamos net.ipv4.tcp_ecn = 0 , e embora isso tenha atenuado o problema, não os resolvemos em todos os servidores.

O problema foi resolvido completamente migrando para o kernel 4.2.0.

Eu também descobri um thread descrevendo mais soluções alternativas do que as que tentamos com 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

Eles também mencionam uma correção de configuração do ASA que não conhecemos. Aconselho que, se você tiver equipamentos da Cisco e tiver suporte da Cisco, envolvê-los.

link

    
por 25.11.2015 / 12:50