nginx 的 access_log 设置成 off 和/dev/null,二者有区别吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kisshere
V2EX    NGINX

nginx 的 access_log 设置成 off 和/dev/null,二者有区别吗?

  •  
  •   kisshere 2021-08-27 09:22:38 +08:00 3632 次点击
    这是一个创建于 1580 天前的主题,其中的信息可能已经有所发展或是发生改变。

    哪种性能更好一点

    第 1 条附言    2021-08-27 10:15:20 +08:00
    目前出现两种说法,设置成 off,nginx 会把日志写入一个叫做“off”的文件:
    https://stackoverflow.com/questions/7967388/disable-nginx-logs/50792421
    Note that error_log off does not disable logging - the log will be written to a file named "off". To disable logging
    但是 nginx 官网: http://nginx.org/en/docs/http/ngx_http_log_module.html#access_log
    Syntax: access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];
    access_log off;

    信谁?
    20 条回复    2021-08-28 01:15:36 +08:00
    ThirdFlame
        1
    ThirdFlame  
       2021-08-27 09:24:20 +08:00
    设置为 /dev/null 那么日志生成了,写入到了 /dev/null
    设置为 off 就没有生成

    盲猜的,如有问题请指正
    Lentin
        2
    Lentin  
       2021-08-27 09:25:35 +08:00 via iPhone
    如果追求性能理论应该是 off
    chendy
        3
    chendy  
       2021-08-27 09:27:03 +08:00
    off 更好
    Lentin
        4
    Lentin  
       2021-08-27 09:29:26 +08:00 via iPhone
    quanjw
        5
    quanjw  
       2021-08-27 09:30:42 +08:00
    看了下官方文档,并没有涉及 /dev/null,还是用推荐参数吧 off 吧。 --The special value off cancels all access_log directives on the current level.
    dzdh
        6
    dzdh  
       2021-08-27 09:33:19 +08:00   3
    我测试了一下。。


    设置成 off 后,日志都存到了 /usr/local/nginx/logs/off
    kisshere
        7
    kisshere  
    OP
       2021-08-27 09:36:13 +08:00
    @dzdh 你的 nginx 版本?我的怎么没有这个 off 文件
    dzdh
        8
    dzdh  
       2021-08-27 09:43:00 +08:00
    @kisshere 1.0.15
    zhoudaiyu
        9
    zhoudaiyu  
    PRO
       2021-08-27 09:45:51 +08:00
    借楼问个问题,比如一个进程把标准输出重定向到了 /dev/null (假设 PID 为$p ),那么为什么 tail -F /proc/$p/fd/1 看不到日志呢?怎么才能看到呢?
    rv54ntjwfm3ug8
        10
    rv54ntjwfm3ug8  
       2021-08-27 09:53:18 +08:00
    @dzdh #6 相同的情况
    quanjw
        11
    quanjw  
       2021-08-27 10:10:26 +08:00
    [nginx version: nginx/1.16.1] off 能够成功关闭
    codehz
        12
    codehz  
       2021-08-27 10:17:11 +08:00
    就是版本问题,stackoverflow 的答案都是 2011 年的,现在 2021 年了,过时了也很正常吧
    0ZXYDDu796nVCFxq
        13
    0ZXYDDu796nVCFxq  
       2021-08-27 10:18:35 +08:00   1
    error_log 指令没有 off 参数
    access_log 是可以 off 的
    gam2046
        14
    gam2046  
       2021-08-27 10:20:57 +08:00
    @zhoudaiyu /dev/null 是个黑洞,丢进去就没了,这为啥你觉得还能看到呢
    chendy
        15
    chendy  
       2021-08-27 10:21:23 +08:00
    题主补充的内容不冲突的
    access_log 可以 off
    error_log 不行,off 会被当成 path
    kisshere
        16
    kisshere  
    OP
       2021-08-27 10:32:17 +08:00
    @chendy nginx 这种设定感觉好脑残
    oh
        17
    oh  
       2021-08-27 10:33:34 +08:00
    谢谢楼主这个主题,很多时候可能不会注意到被写入 off 文件了
    libook
        18
    libook  
       2021-08-27 10:41:45 +08:00
    我很多时候需要看 log 来排查故障,所以从来没试过这两个方案……所以不关心其他方案的话可以不用往下看了。

    不过机器的性能是差到什么程度,其他的都优化完了还得禁用日志……

    我目前的方案是 logrotate+tmpfs+folder2ram:
    避免日志填满存储空间,用 logrotate 来拆分日志并定期删除旧日志,有需求还可以压缩;
    有可能需要实时查看但不需要保留的可以放在 tmpfs 里,比如 /tmp,但并不是所有系统的 /tmp 都是 tmpfs,最好 df 确认一下,本质就是放在内存里,配合 logrotate 可以避免内存被塞满,关机后自动清除(丢失),对磁盘 IO 没有依赖;
    需要保存的日志放到挂载为 folder2ram 的目录里,先写入内存,默认关机时自动持久化到磁盘上,也可以用 corn 或 systemd timer 来定时自动回写,在使用 SSD 、U 盘、TF 卡的时候有效防止频繁写入导致寿命急剧降低,当然突然断电会导致内存中的数据丢失。
    akira
        19
    akira  
       2021-08-27 13:57:10 +08:00
    @libook 统一都进 tmpfs,如果需要持久化则同步到日志服务器 ,这样的方案是不是会更好
    silymore
        20
    silymore  
       2021-08-28 01:15:36 +08:00 via iPhone
    @libook 你 server 会关机吗?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5154 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 08:44 PVG 16:44 LAX 00:44 JFK 03:44
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86