POSTING arquivos ~ 6MB para IIS7 resultados do site em operação de E / S abortada e queda de conexão de rede

1

Eu nem sei por onde começar isso, principalmente porque eu não posso nem mesmo determinar a raiz do problema - só posso encontrar sintomas.

Vou apenas descrever o que está ocorrendo, detalhes de diagnósticos e o que eu já fiz para tentar corrigi-lo na esperança de que alguém possa me livrar desse inferno, ou pelo menos me apontar para a saída.

Ocorre quando

  • POSTANDO qualquer tipo de arquivo maior que ~ 6MB usando um formulário da Web. (como <form> )
  • Acontece independentemente do tipo de site que está sendo executado - os problemas persistem em um site PHP e ASP.NET hospedado no mesmo servidor.
  • Não ocorre quando tentado em uma versão com balanceamento de carga dos mesmos sites - dois servidores usando o ELB
  • Não consistentemente reproduzível quando o tamanho do arquivo é de ~ 6 MB - o mesmo teste foi bem-sucedido quando o rastreamento de solicitação com falha foi desativado e, em seguida, falhou quando foi ativado.

Sintomas

Usando o Rastreamento de Solicitações Falha do IIS Eu pude pegar algumas pistas.

Quando o arquivo POSTs com êxito é resultado imediato. O rastreio registra todas as leituras pelo servidor da solicitação enviada pelo cliente. No final do arquivo eu recebo essa entrada

GENERAL_READ_ENTITY_START
Duration
0ms

GENERAL_REQUEST_ENTITY_END
BytesReceived
7870 
ErrorCode
0 
ErrorCode
The operation completed successfully. (0x0)
Duration 
468ms

Após essa entrada, o restante do processo é executado, a entrada final no rastreio é um flush e o final da resposta.

GENERAL_FLUSH_RESPONSE_END 
BytesSent
12245 
ErrorCode
0 
ErrorCode
The operation completed successfully. (0x0) 

GENERAL_REQUEST_END 
BytesSent
12245 
BytesReceived
2598298 
HttpStatus
200 
HttpSubStatus
0 

Quando o arquivo POST falha, há um longo atraso na leitura, seguido de abortamento de E / S e perda de conexão

As últimas entradas na solicitação lidas são as seguintes:

GENERAL_READ_ENTITY_START
Duration
133443 ms

GENERAL_REQUEST_ENTITY_END
BytesReceived
0 
ErrorCode
2147943395 
ErrorCode
The I/O operation has been aborted because of either a thread exit or an application request. (0x800703e3) 
Duration
138248ms

Observe os enormes tempos de duração. Geralmente, a entrada END é de 3000-4000ms e o START é 0 ou próximo de 0.

No final do rastreio

GENERAL_FLUSH_RESPONSE_END
BytesSent
0 
ErrorCode
2147943629 
ErrorCode
An operation was attempted on a nonexistent network connection. (0x800704cd)

GENERAL_REQUEST_END
BytesSent
0 
BytesReceived
7210715 
HttpStatus
200 
HttpSubStatus
0 

Outros sintomas

O único momento em que o POSTing funciona para esses arquivos é ao fazer o upload do próprio servidor!

Com isso, quero dizer como navegar para http://localhost e executar o processo de upload. Isso funciona 100% do tempo.

Correções já tentadas

  • executionTimeout sob httpRuntime em web.config está definido como 6 minutos. referência
  • maxRequestLength sob httpRuntime em web.config está definido como 50 MB.
  • maxAllowedContentLength em requestLimits em web.config está definido como 50MB.

Eu estou no fim da sagacidade, alguém pode lançar alguma luz sobre isso?

    
por Matt Foxx Duncan 12.06.2014 / 23:34

0 respostas

Tags