[warn] a client request body is buffered to a temporary file

Maxim Dounin mdounin на mdounin.ru
Вт Июл 12 15:40:27 UTC 2022


Hello!

On Tue, Jul 12, 2022 at 02:42:44PM +0300, Gena Makhomed wrote:

> Здравствуйте, All!
> 
> nginx/1.23.0 из официального репозитория nginx.org
> 
> В логах есть такой варнинг:
> 
> 2022/07/12 13:56:37 [warn] 14352#14352: *183 a client request body is 
> buffered to a temporary file /var/cache/nginx/client_temp/0000000011, 
> client: 10.23.154.207, server: sentry.example.com, request: "POST 
> /api/22/envelope/ HTTP/2.0", host: "sentry.example.com"
> 
> Судя по информации из access-лога - размер контента - 41 байт:
> 
> # grep /api/22/envelope/ access.log | grep 13:56:37 | less
> 2022-07-12T13:56:37+03:00       GB      10.23.154.207   https 
> sentry.example.com        POST    "/api/22/envelope/"     200     41 
>    "-"     "sentry.php.laravel/2.9.0"      0.010   0.002
> 
> Если прописать в nginx.conf директиву client_body_buffer_size 32k;
> - тогда варнинг из error.log пропадает, но если вернуть дефолтовое
> значение client_body_buffer_size 16k; - варнинг снова появляется логах.
> 
> Размер контента - всего 41 байт. Как такое может быть?

А что у вас по осям? (c)

В смысле - что в log_format?  Следом за $status обычно идёт 
$body_bytes_sent, и это размер тела ответа, имеющий приблизительно 
никакого отношения к размеру тела запроса.

> client_body_buffer_size - эта переменная задает только статический
> размер буфера, и в nginx сейчас нельзя сделать динамическое выделение
> буфера по необходимости, как это сделано в директиве proxy_buffers ?
> 
> Возможно было бы логичним, для экономии памяти сделать возможность
> задавать client_body_buffer_size по аналогии с proxy_buffers,
> например так:
> 
> client_body_buffer_size 8k;
> client_body_buffers  32 8k;

Возможно так когда-нибудь будет, но пока так нельзя.

-- 
Maxim Dounin
http://mdounin.ru/



Подробная информация о списке рассылки nginx-ru