Nginx access_log默认刷新时间

时间:2015-06-10 16:11:35

标签: nginx

默认情况下,nginx将其缓冲区刷新到access_log的频率是多少?

在手册中没有信息,只是设置语法:

access_log path [format [buffer=size [flush=time]] [if=condition]];

3 个答案:

答案 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