Nginx 故障排查怎么排查由于磁盘空间满导致的日志写入失败

千浩姑娘_2587

千浩姑娘_2587

2026-09-10

222人浏览

原创

磁盘空间满导致nginx日志写入失败,表现为access_log和error_log停更且无错误提示;需检查日志路径存在性、权限、inode耗尽、deleted文件占用及selinux/apparmor限制,并通过strace、df、lsof等定位根因。

nginx 故障排查怎么排查由于磁盘空间满导致的日志写入失败

磁盘空间满导致 Nginx 日志写入失败,最典型的表现是 access_log 和 error_log 停更、但 error_log 里又查不到相关错误——因为写入失败发生在 worker 进程运行时,Nginx 默认静默丢弃日志,不报错、不重试、也不中断请求。

确认日志是否真在写、写到哪了

别默认看 /var/log/nginx/error.log。先打开 nginx.conf,检查 error_log 和 access_log 指令的实际路径。常见问题:配置写了 /data/logs/nginx/access.log,但目录 /data/logs/nginx/ 根本不存在,或权限不对,导致 Nginx 启动时连日志模块都没初始化成功。

  • 运行 ps aux | grep nginx,确认 worker 进程使用的是哪个用户(如 nginx 或 www-data)
  • 用 ls -ld /data/logs/nginx/ 检查该用户对日志路径的父目录是否有 w(写)和 x(进入)权限;若路径含多级(如 /a/b/c),每一级都必须存在且可进入
  • 执行 nginx -c /etc/nginx/nginx.conf -e stderr,强制把启动错误输出到终端,能捕获“路径不可写”“模块加载失败”等早期问题

快速验证磁盘与 Inode 是否真的耗尽

磁盘块(block)或 Inode 耗尽都会让日志写不进去,但表现不同:

Nginx Hosting
Nginx Hosting

通过服务器本地nginx实例实现零认证静态游戏托管。作为所有浏览器游戏的主要部署方式,无需登录、无需令牌、无需用户操作。

下载
  • df -h:看日志所在分区的 Use% 是否为 100%,Avail 是否为 0
  • df -i:重点看 IUse%,达 100% 表示无法创建新文件——这常出现在 logrotate 生成大量 .log.1、.log.2.gz 后未清理
  • lsof +L1 | grep nginx:查是否有已删除但仍被 worker 占用的“deleted”日志文件,这是删了日志却没释放空间的明确信号

绕过日志本身,直接看系统层反馈

当 error_log 已停更,就得跳过日志,从系统调用层面抓失败原因:

  • 用 strace -p $(pgrep -f "nginx: worker") -e trace=write,openat,fsync -s 256 2>&1 | grep -E "(log|denied|No space)",观察 write 系统调用是否返回 -1 ENOSPC(空间满)或 -1 EACCES(权限拒绝)
  • 查 SELinux 干预:ausearch -m avc -ts recent | grep nginx(CentOS/RHEL);查 AppArmor:aa-status | grep nginx(Ubuntu)
  • 检查是否因 logrotate 后未发 USR1 信号:worker 仍在往已删除文件的旧句柄写入,系统返回 EBADF,Nginx 静默跳过

临时恢复 + 长效加固

定位问题后,需立即释放空间并防止复现:

  • 安全清空:用 echo "" > /path/to/access.log 覆盖内容,比 rm 更稳妥;若已删文件但句柄未释放,执行 nginx -s reopen 或 kill -USR1 $(cat /var/run/nginx.pid)
  • logrotate 必须配 create 0644 nginx nginx 和 postrotate ... kill -USR1 ... endscript,确保轮转后立即切换新文件
  • 限制单个日志大小:size=100M 比单纯 daily 更可靠;高流量站点建议关闭非必要 access_log,或设为 access_log /dev/null
  • 给 error_log 加缓冲:error_log /var/log/nginx/error.log warn buffer=64k flush=5s;,降低写入失败概率

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

nginx

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

457

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

940

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

3112

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

1036

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

929

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

474

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2856

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

5332

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

827

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpEnv手册
phpEnv手册

共0课时 | 0人学习

nginx手册
nginx手册

共0课时 | 0人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.5万人学习