IIS PHP环境Temp文件夹的权限问题引起的网站故障
前几天不知为何,服务器抽风严重…
服务器非常慢,把WINDOWS2003重启了,结果连不上服务器。结果悲剧的去了机房。
查找不出什么问题,GHOST恢复系统。
几天后回去又装了个新站上去。再过两天后,问题又出现了。
排查过程 检查网页服务器,病毒,木马?是否被入侵? 检查数据库服务器,CPU,内存,网络一切正常,相应的端口也做了 IP 限制,只允许网页服务器访问,查看日志文件也没有异常情况 检查其余的 .Net 网站,速度正常,没有任何问题 检查其余的 Php 网站,架构方法一样,也没有任何问题(其余的 php 网站访问量相对于论坛来说小很多) 新建一个应用程序池和网站应用程序,单人访问速度没有问题,说明 php程序没有问题 检查 Php 设置,发现没有异常
综合以上因素,所以基本可以确定问题主要来源于某个小问题,然后当访问人数过多的时候就会体现出来。
那这个问题是什么呢?
这时候想到去看一下 Php 日志文件,打开 c:\windows\temp 下的 Php 日志文件,突然… 卡死了!
原来这个文件已经达到了 800多 MB,难道是这个问题?
记得以前 IIS 下所有网站都出现了访问缓慢的问题,然后发现 IIS 日志文件达到了几个 G,禁用 IIS 日志后恢复正常。
难道也是这个问题?果断禁用了 Php error log,并删除了这个文件后,略有改善,但是感觉还是没解决…
正在彷徨时,忽然发现 Temp 文件夹下有大量 sess_ 开头的文件!(之前打开 Temp 文件夹的时候就特别慢)数量竟然达到了 10W 个!总容量虽然只有 300MB ,但是占用空间却达到了 3G
看上去问题就出在这里了!
关于 NTFS 下的文件数量
NTFS 的优越性就不用说了,也早就是主流了…
NTFS 下的最大文件数是 4,294,967,295个 (2^32 – 1)
但是为什么仅仅 10W 个文件就让系统慢成这样了呢?好吧,都说是理论值了… 不知道有没有人测试过,但 10W 个的确非常多了…
解决方法
删除这些文件是必需的,这个过程很痛苦… 因为系统卡死了…
后借助 del *.* /q /s 后才成功将其删光
可是光删也不是办法,总有一天它还是会满的…
这些文件其实是 Php 保存 Session 的文件,一个 Session 对应了一个文件,但是 Session 结束的时候不应该删除吗?
其实 Php 是会删除的,但是由于权限的问题,而导致它不能及时的删除了,以上就是 IIS_USERS 组的默认权限。
它并没有删除的权限 !难怪没办法删除!
知道这个后就简单了,给 IIS_USERS 加上删除的权限就 OK 了!
修改好后,Temp 文件夹下的文件数一直维持在一个数量级,而没有明显的变化~