昨日,阿里云发来一条消息,磁盘监控报警。
开始没有在意,以为是当时请求量过高导致的,直到晚上的时候,发现站点无法打开,数据库也无法连接,查看监控信息发现系统磁盘全部满了。。
开始以为:
原因就是,当一个文件正在被一个进程使用时,用户删除此文件,文件只会从目录结构中删除,但并没有从磁盘删除。当使用这个文件的进程结束后,文件才会真正的从磁盘删除,释放占有的空间。
尝试kill掉进程,清空/tmp目录,无解。磁盘仍然是占满的状态。
然后检查目录大小,发现我的web站点目录26G。服务器被注入文件了?
看到runtime目录,占用了26G的储存。runtime目录是thinkphp框架的缓存和日志目录。
进这个目录后,发现里面有N个日志文件,每个文件2M。
打开某个日志后查看详细信息后,里面全是数据库连接失败的错误日志,到这里已经知道是什么原因导致thinkphp5生成了这么多的日志文件了。
由于站点使用了队列来处理一些代码,为了方便,队列使用数据库作为驱动,而队列会持续查询数据库队列表,来处理任务。
而队列执行时是在cli模式下的,在thinkphp5.1文档里连接数据库一章有提到:
如果你使用的是长连接或者命令行,在超出一定时间后,数据库连接会断开,这个时候你需要开启断线重连才能确保应用不中断。
正是因为没有开始断线重连,数据库断开后但是队列一直在轮询着,才导致了框架一直生成错误日志,正好框架日志生成,默认没有自动删除日志配置,日志文件会一直累加。
接下来知道原因,解决方法就简单了。
- 框架开启数据库断线重连
- 开启日志自动清理(thinkphp V5.1.6+)
本文共 537 个字数,平均阅读时长 ≈ 2分钟
喜欢就支持一下吧
本站为个人博客,博客所发布的一切破解补丁、注册机和注册信息及软件的文章仅限用于学习和研究目的。
不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。
本站信息来自网络,版权争议与本站无关,您必须在下载后的24个小时之内从您的电脑中彻底删除上述内容。
访问和下载本站内容,说明您已同意上述条款。
本站不贩卖软件,所有内容不作为商业行为。如果有侵犯您的权益请点击“关于”联系WFXL,核实后会及时删除
版权属于:轩灵
作品采用《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权
评论 抢沙发