V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
kisshere
V2EX  ›  NGINX

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

  •  
  •   kisshere · 96 天前 · 2233 次点击
    这是一个创建于 96 天前的主题,其中的信息可能已经有所发展或是发生改变。

    哪种性能更好一点

    第 1 条附言  ·  96 天前
    目前出现两种说法,设置成 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   96 天前
    设置为 /dev/null 那么日志生成了,写入到了 /dev/null
    设置为 off 就没有生成

    盲猜的,如有问题请指正
    Lentin
        2
    Lentin   96 天前 via iPhone
    如果追求性能理论应该是 off
    chendy
        3
    chendy   96 天前
    off 更好
    quanjw
        5
    quanjw   96 天前
    看了下官方文档,并没有涉及 /dev/null,还是用推荐参数吧 off 吧。 --The special value off cancels all access_log directives on the current level.
    dzdh
        6
    dzdh   96 天前   ❤️ 3
    我测试了一下。。


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

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

    我目前的方案是 logrotate+tmpfs+folder2ram:
    避免日志填满存储空间,用 logrotate 来拆分日志并定期删除旧日志,有需求还可以压缩;
    有可能需要实时查看但不需要保留的可以放在 tmpfs 里,比如 /tmp,但并不是所有系统的 /tmp 都是 tmpfs,最好 df 确认一下,本质就是放在内存里,配合 logrotate 可以避免内存被塞满,关机后自动清除(丢失),对磁盘 IO 没有依赖;
    需要保存的日志放到挂载为 folder2ram 的目录里,先写入内存,默认关机时自动持久化到磁盘上,也可以用 corn 或 systemd timer 来定时自动回写,在使用 SSD 、U 盘、TF 卡的时候有效防止频繁写入导致寿命急剧降低,当然突然断电会导致内存中的数据丢失。
    akira
        19
    akira   96 天前
    @libook 统一都进 tmpfs,如果需要持久化则同步到日志服务器 ,这样的方案是不是会更好
    silymore
        20
    silymore   95 天前 via iPhone
    @libook 你 server 会关机吗?
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2630 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 228ms · UTC 12:25 · PVG 20:25 · LAX 04:25 · JFK 07:25
    ♥ Do have faith in what you're doing.