nginx日志乱序,可能是由于缓冲日志记录

时间:2017-01-27 19:51:07

标签: nginx

我的nginx日志文件中的记录乱序。 (编辑:“按顺序”我的意思是按时间顺序排列。例如,对于2017-02-21 09:13:26,对于2017-02-21 09:13:26,对于行,通常为 )也许会有一定数量的无序记录,因为它们是在请求完成后记录的,而不是在收到请求时记录的。但这是一种更多的无序登录请求,包括对小型静态文件的已知短(快)请求。

这是使用缓冲日志记录的已知副作用还是可以改进?

为了获得更完整的图片,这里有一些其他配置参数:

nginx.conf

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ' 

在虚拟主机的配置文件中:

server {
    #The backlog parameter matches sysctl net.core.somaxconn setting. Default value is 511 on Ubuntu.
    listen 80 backlog=30000;
    server_name  www.example.com;
    access_log  /var/log/nginx/access.log main buffer=128k;
    error_log   /var/log/nginx/error.log;
    root   /var/www/html/website;
    ...
}

1 个答案:

答案 0 :(得分:5)

是的,这是缓冲问题。如果您使用的工人很少 - 每个工人都有自己的缓冲区。

改善方法:

  • 禁用缓冲
  • 减小缓冲区大小(1)
  • 添加flush个选项,如果 刷新到磁盘仍然很少
  • 使用排序创建自己的日志收集器 (例如,nginx可以使用syslog协议)

但通常你不需要关心日志记录的顺序。日志分析系统将自行排序。

(1)对于linux系统,缓冲区大小不得超过磁盘文件的原子写入大小。在现代Linux中 - 它的64k。好吧,我不能100%确定这个尺寸,因为信息非常不一致。但是如果你在日志中找到折断线 - 减小这个尺寸。