阿里云SLB健康检测后端服务器组产生百万级别的php的0k大小session文件
今天早上在登录公司一台阿里云的服务器上vim修改配置文件以及touch文件时报错:no space left on device
df -h 查看了磁盘空间,发现磁盘空间还很充足
df -i 发现indoes已经爆满了,当时忘记了截图,解决问题后的截图,当时IUse%已经到了100%

这台实例是属于应用服务器组,由阿里云的SLB均衡负载到后端应用服务器组,这时候还没上线只是部署测试阶段,那么INodes怎么会爆呢。网上查阅了资料,说这是因为路径下有太多的小文件导致indoes用光导致爆粗,究竟是哪里产生了这么多小文件。
于是我find /目录 | wc -l 统计了一下根下各个目录下的文件个数,发现/home的文件个数达到了300多万个,这个正是我们部署应用的目录,于是
find /home -xdev -printf ‘%h\n’ | sort | uniq -c | sort -k 1 -n

这个目录文件数量排第一,正是存放php的session的路径,一统计这个session目录,好家伙300w个文件,占满INodes的罪魁祸首就是他。但是为什么会产生这么多session,这套环境还没上线测试的也还不多哪来那么多session。仔细想了想,现在直接连接这实例的只有阿里云的SLB,问题会不会出现在SLB上?
我查看了一下这些session,发现几乎都是0K的session,也就是无用session,于是
find php-session/ -type f -size 0 | wc -l
统计结果

本文讲述了阿里云SLB健康检查过程中,由于HEAD请求导致后端服务器产生大量0K大小的PHP session文件,最终耗尽INodes的情况。通过分析和排查,确认问题源头在于SLB健康检查机制,并提供了通过修改nginx配置阻止HEAD请求触发session生成的解决方案。
最低0.47元/天 解锁文章
882

被折叠的 条评论
为什么被折叠?



