我正在阅读NGINX的调试部分,它说要打开调试,你必须以某种方式编译或启动nginx,然后更改配置选项。 我不明白为什么这是一个两步过程,我推断这意味着“你不想在调试模式下运行 nginx 很长时间,即使你没有记录调试消息,因为它很糟糕”。
由于配置选项(
error_log
)已经设置了日志记录级别,我不能总是在调试模式下编译/运行并在我想查看调试级别日志时更改配置吗? 这样做有什么缺点? 如果我在调试模式下编译/启动 nginx,即使我没有记录调试消息,nginx 的运行速度是否会变慢?
首先,要在调试中运行 nginx,您需要运行 nginx-debug 二进制文件,而不是普通的 nginx,如 nginx 文档中所述。如果你不这样做,即使你将 error_log 设置为调试也没关系,因为它不会工作。 如果您想找出为什么,这是一个两步过程,我无法告诉您到底为什么做出这样的决定。
调试会输出大量日志、fd 信息等等,因此,它会减慢您的系统速度,例如,因为它必须写入所有日志。在开发服务器上,这很好,在具有数百或数千个请求的生产服务器上,您可以看到该日志生成的磁盘 I/O 如何导致服务器速度变慢,并且其他服务陷入等待某些空闲的状态。磁盘 I/O。此外,磁盘空间也会很快耗尽。
另外,总是在调试模式下运行的原因是什么?您在这些日志中寻找什么特别的东西吗?我想我正在试图弄清楚你为什么想要它。
也许值得一提的是,如果您确实想在生产中运行调试,至少使用
debug_connection
指令并仅记录某些 IP。
这是一个完全合理的问题,而接受的答案没有抓住重点。
缺点是性能略有下降:https://github.com/nginxinc/docker-nginx/issues/540#issuecomment-824651057.