默认情况下,nginx将其缓冲区刷新到access_log的频率是多少?
在手册中没有信息,只是设置语法:
access_log path [format [buffer=size [flush=time]] [if=condition]];
答案 0 :(得分:2)
我自己做了一些研究,据我所知,如果你没有指定flush参数,nginx根本不会刷新缓冲区。 (或者,如果确实如此,则超过20分钟。)
唯一的例外是如果重新启动服务器,则会在重新启动之前刷新日志。
因此,如果指定缓冲区,则应确保指定刷新时间。
答案 1 :(得分:1)
除非您指定了flush
选项(即使您已经指定了buffer
选项),Nginx才会刷新。
下面是一个示例,说明如何每五分钟将8k的数据包缓冲到日志中>
access_log /var/log/nginx/access.log main buffer=8k flush=5m;
答案 2 :(得分:0)
来自nginx文档[1]:
When buffering is enabled, the data will be written to the file:
- if the next log line does not fit into the buffer;
- if the buffered data is older than specified by the flush parameter (1.3.10, 1.2.7);
- when a worker process is re-opening log files or is shutting down.
当然,如果您未指定flush
参数,则第二个条件不能成为现实。
[1] http://nginx.org/en/docs/http/ngx_http_log_module.html#access_log