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

Илья Шипицин chipitsine на gmail.com
Вт Июл 12 19:59:04 UTC 2022


вт, 12 июл. 2022 г. в 22:56, Gena Makhomed <gmm на csdoc.com>:

> On 12.07.2022 18:40, Maxim Dounin wrote:
>
> > А что у вас по осям? (c)
> >
> > В смысле - что в log_format?  Следом за $status обычно идёт
> > $body_bytes_sent, и это размер тела ответа, имеющий приблизительно
> > никакого отношения к размеру тела запроса.
>
> На том сервере log_format такой:
>
> log_format frontend '$time_iso8601\t$geoip_country_code\t$remote_addr\t'
>                      '$scheme\t$host\t$request_method\t"$request_uri"\t'
>                      '$status\t$body_bytes_sent\t"$http_referer"\t'
>                      '"$http_user_agent"\t$request_time\t'
>                      '$upstream_response_time';
>


если рассматривать с точки зрения эффективного использования диска, то поля
$scheme, $host являются практически константами, можно не логировать их на
каждую строчку лога (а, например, разнести разные host-ы по разным логам).
и, если поля разделяются табуляцией, то кавычки избыточны

в качестве ориентира удобно брать число байт в 1 строке лога




>
> Очень удобно использовать символ табуляции в качестве разделителя,
> логи тогда без проблем читаются в mc и с помощью grep | less -S
>

и еще в Microsoft LogParser, Clickhouse, awk, ....


>
> Софтом лог с разделителем в виде символа табуляции парсить удобно:
> time, geoip_country_code, remote_addr, ... = line.split('\t')
>
> Применяю этот метод в https://github.com/makhomed/autofilter
> потому что NGINX App Protect Denial of Service слишком дорого.
>
> Вот еще раз все проверил только что:
>
> # nginx -q -T | grep client_body_buffer_size
>      client_body_buffer_size 16k;
>
> error.log:
>
> 2022/07/12 20:23:26 [warn] 2479#2479: *63684 a client request body is
> buffered to a temporary file /var/cache/nginx/client_temp/0000000290,
> client: 111.222.33.44, server: sentry.example.com, request: "POST
> /api/8/envelope/?sentry_key=xxxxxxxxxx&sentry_version=7 HTTP/2.0", host:
> "sentry.example.com", referrer: "https://example.com/"
>
> access.log:
>
> 2022-07-12T20:23:26+03:00       XX      111.222.33.44   https
> sentry.example.com        POST
> "/api/8/envelope/?sentry_key=xxxxxxxxxx&sentry_version=7" 200     41
>    "https://example.com/"     "Mozilla/5.0 (Windows NT 10.0; Win64; x64)
> AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36"
>    0.037   0.002
>
> Размер контента - всего 41 байт, что гораздо меньше чем 16 килобайт,
> и тем не менее, контент все равно пишется на диск зачем-то.
> Как такое может быть?
>
> --
> Best regards,
>   Gena
> _______________________________________________
> nginx-ru mailing list -- nginx-ru на nginx.org
> To unsubscribe send an email to nginx-ru-leave на nginx.org
>
----------- следующая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20220713/f91127d2/attachment.htm>


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