我的nginx日志文件中的记录乱序. (编辑:“按顺序”我的意思是按时间顺序排列.例如,对于2017-02-21 09:13:26的日志行经常会出现在2017-02-21 09:13:45的行之前)也许是一定数量的出订单记录是预期的,因为它们在请求完成后记录,而不是在收到时记录.但这是一种更多的无序登录请求,包括对小型静态文件的已知短(快)请求.
这是使用缓冲日志记录的已知副作用还是可以改进?
为了获得更完整的图片,这里有一些其他配置参数:
在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)
>添加刷新选项,如果
刷新磁盘仍然很少见
>使用排序创建自己的日志收集器
(例如,nginx可以使用syslog协议)
但通常您不需要关心日志记录的顺序.日志分析系统将自行排序.
(1)对于linux系统,缓冲区大小不得超过磁盘文件的原子写入大小.在现代Linux中 – 它是64k.好吧,我不是百分之百确定这个尺寸,因为信息非常不一致.但如果您在日志中发现断线 – 减小此尺寸.
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!