
最近处理一个 PHP 项目时遇到一个挺隐蔽的问题:后台代码没有改动,数据库也能正常连接,但接口开始偶发 500,上传文件失败,部分页面甚至直接打不开。刚开始一直在查 PHP-FPM 和 Nginx 配置,最后登录服务器执行 df -h 才发现,网站所在磁盘已经被日志文件占满了。
继续排查发现,项目为了方便调试,把接口请求参数、第三方返回内容和异常信息全部写进了同一个日志文件。平时一天只有几十兆没什么感觉,后来接口调用量增加,再加上某个失败任务不断重试,日志每天增长几个 G,最终把磁盘空间全部吃完。
磁盘满以后,影响的不只是"不能继续写日志"。PHP Session、缓存文件、上传临时文件、数据库临时数据都可能因为无法写入而出问题,所以表面看到的报错会非常杂,很容易误判成程序突然坏了。
后来把日志按日期拆分,只保留固定天数,同时增加定时清理和磁盘空间监控。高频接口也不再记录完整请求,只保留必要字段和异常内容。
现在遇到服务器突然出现一批没有明显关联的异常,我通常都会顺手检查一次磁盘。很多时候代码没有问题,只是服务器已经没有空间继续正常工作了。
#PHP开发 #服务器运维 #日志管理 #接口排查