主要是因为 /etc/cron.d/php5 做了更新。
ubuntu 11.04 上此文件的内容是:
09,39 * * * * root [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) -delete
而 ubuntu 11.10 上此文件的内容是:
09,39 * * * * root [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null ; -delete
在 session 文件很多的情况下,会有成千上万个 fuser 进程:
# ps -C fuser | wc -l
22634
而且偶尔会收到 Failed to fork: Cannot allocate memory 这样的错误。
目前解决方式是用 ubuntu 11.04 上面的 /etc/cron.d/php5 里的内容,替换掉 ubuntu 11.10 上的同名文件。
重启服务吧,没有别的好办法