记一次因session文件过多导致服务器node用尽的故事
侧边栏壁纸
  • 累计撰写 188 篇文章
  • 累计收到 24 条评论

记一次因session文件过多导致服务器node用尽的故事

五好
2021-12-04 / 0 评论 / 408 阅读 / 正在检测是否收录...

最近服务器访问量逐步上升,cpu频繁告警,终于到了需要升级的时刻了, 配置已升级了就等待重启生效了。
由于有过重启会要半个小时的经历,所以重启都有点担惊受怕,因配置升级,服务器在1分钟内就重启完成了,瞬间cpu占用就下降了。
然而故事还没有完,第二天,数据库又搞事情了,cpu告警, 这就轻车熟路了升级数据库, 升级很顺利,告警也解除了,然而看了服务器的各项参数,发现了一项异常, 服务器根目录挂载的分区的node 占用将近100%了, 可用数目一直在减少,立刻行动起来, 因为我们用户头像都存了一份在服务器的,起初我以为是到了该清理头像的时候了, 但是进目录一看, 头像数量不足以导致到这个数量级,然后找看是那个目录占用了大量的node。我把我认为可能的文件夹都用

find ./文件夹名称 |wc -l

找了一遍, 最后发现是 php的session存放的目录 存在大量的文件占用了 node。
这里其实能更好理解node的意义, 所谓的node其实就是文件,一个文件对应一个node,硬盘的容量有限,存放文件的数量其实也是有限的, 所有文件数量的大小 没有达到硬盘的容量,但是文件数量达到了,照样写不进去内容。
找到原因后, 然后马上采取行动,恢复node的数量,判断是 session文件没有及时删除:推测应该是访问量大的时候重启了系统没有自动销毁这些文件, 亦或由于大量的访问由于某种原因,导致了无效session文件的堆积,那么只要删除这些无效的session文件 即可。

cd /var/lib/php
find ./session/ -cmin +24 -name "sess_*" -and -size 0 -delete > /dev/null 2>&1
find ./session/ -cmin +1440 -name "sess_*" -delete > /dev/null 2>&1

php的session存放的目录定义在php的配置文件里, 可能和我的不一样。如果有缘人遇到一样的问题, 可以酌情修改下。

0

评论 (0)

取消