PHP日志写满磁盘后接口为什么异常

最近处理一个 PHP 项目时遇到一个挺隐蔽的问题:后台代码没有改动,数据库也能正常连接,但接口开始偶发 500,上传文件失败,部分页面甚至直接打不开。刚开始一直在查 PHP-FPM 和 Nginx 配置,最后登录服务器执行 df -h 才发现,网站所在磁盘已经被日志文件占满了。

继续排查发现,项目为了方便调试,把接口请求参数、第三方返回内容和异常信息全部写进了同一个日志文件。平时一天只有几十兆没什么感觉,后来接口调用量增加,再加上某个失败任务不断重试,日志每天增长几个 G,最终把磁盘空间全部吃完。

磁盘满以后,影响的不只是"不能继续写日志"。PHP Session、缓存文件、上传临时文件、数据库临时数据都可能因为无法写入而出问题,所以表面看到的报错会非常杂,很容易误判成程序突然坏了。

后来把日志按日期拆分,只保留固定天数,同时增加定时清理和磁盘空间监控。高频接口也不再记录完整请求,只保留必要字段和异常内容。

现在遇到服务器突然出现一批没有明显关联的异常,我通常都会顺手检查一次磁盘。很多时候代码没有问题,只是服务器已经没有空间继续正常工作了。

#PHP开发 #服务器运维 #日志管理 #接口排查

相关推荐
SomeOtherTime6 小时前
Rust所有权(AI回答)
开发语言·后端·rust
Easyhood7 小时前
Android 开发入门实践(十四):Compose 副作用入门与四个常用 API
android·开发语言·kotlin·android jetpack·compose
白杨尚青7 小时前
C++进阶篇(六):map 和 set 的模拟实现——用红黑树封装 mymap/myset(迭代器 + operator[])
开发语言·c++·迭代器·stl·set·map·红黑树
饮水桶_T11 小时前
JAVA IO流笔记
开发语言·数据结构·算法
Felven13 小时前
C. Brr Brrr Patapim
c语言·开发语言
路溪非溪15 小时前
python标准库使用总结
开发语言·python
SomeOtherTime16 小时前
Rust 面向对象介绍(AI回答)
开发语言·python·rust
zh_xuan17 小时前
kotlin常见面试题
开发语言·kotlin·面试题
xbzb18 小时前
从零容器化部署 ECShop:Harbor 私有仓库 + 自定义 PHP 镜像 + LNMP 三容器
容器·php·harbor·镜像·仓库·ecshop
草莓熊Lotso18 小时前
【C++ 基于微服务的即时通讯系统】文件存储子服务实战:UUID生成、文件IO封装与全接口单元测试
开发语言·网络·数据库·c++·微服务·架构·单元测试