我希望有人能给我一些build议,请。 我正在运行一个CentOS 6服务器,在过去的几天里我的磁盘使用率从60GB变成了135GB(98%)。 我相信这个问题可能与PHP会话目录(/ var / lib / php / session)有关,因为这似乎是巨大的(我不能用ls或rm),那么在这个目录中必须有数百万个文件。
我怎样才能删除这个目录? RM不在这里工作,我也试过rsyncreplace一个空目录,但这也需要永恒。
如果这是造成这个问题 – 为什么PHP不会自动删除这些文件?
有可能有任何logging可能指向我的方向利用,DDOS或失败?
谢谢
Ubuntu的默认configuration是PHP不会过期会话,但有一个删除旧文件的cron作业。 一个完整的讨论需要一些时间(恕我直言,这是一个非常糟糕的主意),但我不知道红帽采取类似的方法。
你还没有提供你的会话configuration的任何细节。 出现这种情况的原因可能是session.gc_probability,session.gc_divisor或session.gc_maxlifetime中的任何值。 按照其他答案中的描述,设置1,100和1440的默认值应确保一个已经清理完文件的合理的自稳系统。
您还没有说过在系统上看到多less个并发会话,它们的平均大小,以及它们存储的文件系统。 如果您期望超过300个会话(取决于文件系统),则应考虑使用目录树而不是单个目录来存储文件; 在session.save_path前加1或2(假设这不是一个支持服务器集群的NFS服务器,在这种情况下,你应该转移到不同的体系结构)。
马特提到它可能是selinuxconfiguration。 如果这是允许创build文件,但从不删除。 虽然这是可能的,但是会build议系统上的configuration严重混乱。 如果是这种情况(检查你的审计日志),那么你应该干净的安装,并通过它恢复你的应用程序。
不好的编程是不太可能的。
这听起来像你的应用程序正在创build会话,但从不摧毁它们。 这可能是糟糕的编程和糟糕的环境设置的混合。
如果你想删除这些会话文件,你需要使用sudo,因为它们可能不是你的用户所有。
sudo rm /var/lib/php/session/*
我不会删除整个会话目录。
另一件事是调整PHP会话超时到一个较小的时间间隔。
sudo find /var/lib/php/session -type f -delete会比sudo rm /var/lib/php/session/*工作得更好,因为对于大的文件列表来说扩展*是不可能的。