a client request body is buffered to a temporary file

Maxim Dounin mdounin на mdounin.ru
Чт Июл 26 12:40:04 UTC 2018


Hello!

On Thu, Jul 26, 2018 at 08:57:17AM +0300, Vladimir Sopot wrote:

> Спасибо, настроили $content_length. Стало ещё страннее. При настройках
> 
>     client_max_body_size 100m;
>     client_body_buffer_size 100m;
>     client_body_in_file_only off;
> 
> клиенты делает POST c $content_length=61554, 566069 и тд 
> (немного, совсем мало) и в логе та же самая ошибка. Между этими 
> двумя $content_length=6849049 прошёл без ошибок

Для начала - смотреть внимательно на то,

1) где обрабатывается запрос и действительно ли в соответствующем 
   контексте, где происходит чтения тела запроса, указано 
   "client_body_buffer_size 100m", а тело запроса при этом меньше;

2) что именно написано в сообщении.  Про "buffered to a 
   temporary file" много похожих сообщений - в частности, оно может 
   быть про тело ответа.

Если не прояснится - попробовать воспроизвести как минимум без 
"--add-module=../ngx_cache_purge-2.3" (не понимаю, как люди 
отваживаются использовать эту поделку, она при любых внутренних 
изменениях в nginx'е разносит всё же), а лучше - вообще без 
сторонних модулей.  Если воспроизведётся - приносите подробности 
(конфиг и способ вызвать warning, либо debug log полученного 
warning'а).

Интересует именно ситуация, когда warning выдаётся для случая 
размера запроса меньше client_body_buffer_size, такого быть не 
должно.

> Бонус: время у событий в access_log-е на секунду больше, чем в 
> error_log-е, запросы отловлен точно, они достаточно редкие.

Это нормально, warning логгируется в момент первой записи во 
временный файл, в access log же запрос попадает после его 
окончания.

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


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