我一直在我的apache服务器上遇到陈旧的、锁定的(php)会话文件,这些文件阻止线程关闭,从而蚕食我的服务器资源。
它是一个Ubuntu,在自动附加的脚本doenst中有session_write_close()。我一直用锁定的会话文件结束,这些文件是本地的(内存磁盘),没有其他进程试图访问它.
我只是不知道该去哪找.
把东西弄干净一点:
这个问题在不同的时间间隔内不一致地出现。但是在查看了打开的文件(通过lsof | grep sess_)之后,我一直看到apache2线程保存着这些文件。
apache2 28405 www-data 30uW REG 0,18 38652 2737432 /data/ramdrive/sess_8f95700e5d2ed8daf2e2d12625ed7d53由于我没有问题ATM,所以我没有实际的实时数据,但是它看起来是这样的:在前面的id上做一个strace -p,我会在
F_LOCK(30, 一些东西..。做一个ls -l /proc/[apache pid]/fd/30 (每次都是30!)它将指向某个会话文件。
文件里没有奇怪的东西,看上去很正常.
当它发生的时候,所有的FD都指向30 (所以它最终会是/proc/123123/fd/30和/proc/123124/fd/30等等),这是否与此有关?
发布于 2010-11-25 12:04:56
不是真正的解决方案,但我现在已经绕过这个问题,让cron脚本每4小时重新启动apache .这样至少问题不会有那么大的影响。
https://stackoverflow.com/questions/4243675
复制相似问题