nginx - o corpo da solicitação do cliente é armazenado em buffer para um arquivo temporário

40

Eu recebo o seguinte erro nos meus arquivos de log toda vez que tento fazer o upload de um arquivo grande.

a client request body is buffered to a temporary file /var/lib/nginx/body/0000000001

Embora o arquivo seja carregado com sucesso, sempre recebo o erro acima.

Eu aumentei o client_body_buffer_size para 1000m , que é o que eu espero que o maior arquivo enviado seja. No entanto, isso é apenas um palpite e, embora eu não tenha mais esse erro, estou querendo saber se esse é um valor apropriado para definir o client_body_buffer_size ?

Eu agradeceria se alguém pudesse lançar alguma luz sobre esta diretiva e como ela deveria ser usada.

    
por Abs 29.05.2013 / 20:34

2 respostas

39

Este é um aviso, não um erro. É por isso que foi precedido por [warn] no log.

Isso significa que o tamanho do arquivo enviado foi maior do que o buffer de memória reservado para uploads.

A diretiva client_body_buffer_size controla o tamanho desse buffer.

Se você puder ter 1GB de RAM sempre reservado para o upload de arquivos ocasionais, tudo bem. É uma otimização de desempenho para armazenar em buffer o upload na RAM em vez de em um arquivo temporário no disco, embora, com carregamentos tão grandes, alguns segundos extras provavelmente não importam muito. Se a maioria dos seus envios é pequena, provavelmente é um desperdício.

No final, só você pode realmente decidir qual é o tamanho apropriado.

    
por 29.05.2013 / 20:39
13

Se você não quiser que o NginX armazene o conteúdo do corpo em um arquivo temporário, você pode definir sua configuração. assim:

    client_body_buffer_size     10M;
    client_max_body_size        10M;

Se você definir ambas as configurações no mesmo max. tamanho (em k, M ou G para kB, MB ou GB, respectivamente), você evitará que o NginX crie uma temp. arquivo.

Para mais informações: link e link

    
por 04.11.2015 / 02:35