我们看到服务器的CPU峰值间隔为30分钟。这可能是由php5作业清理会话文件引起的。这取自我们服务器上的/etc/cron.d/php5:
# /etc/cron.d/php5: crontab fragment for php5
# This purges session files older than X, where X is defined in seconds
# as the largest value of session.gc_maxlifetime from all your php.ini
# files, or 24 minutes if not defined. See /usr/lib/php5/maxlifetime
# Look for and purge old sessions every 30 minutes
09,39 * * * * root [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -ignore_readdir_race -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete
在过去的版本中,这项工作似乎存在问题。在Ubuntu的11.10版本中存在一个问题,因为这需要大量的CPU,但是我们正在运行更多的Ubuntu和PHP版本。 这项工作对PHP有多重要?我们可以阻止这项工作的运行或降低其优先级吗?
答案 0 :(得分:4)
这是一个错误,似乎是对pmisc软件包进行了操作,但是当php5-apc正常运行时它也是php5的一部分。
有一个ubuntu错误报告,并提出了这里提到的workaroud:
https://bugs.launchpad.net/ubuntu/+source/php5/+bug/876387
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
和Debian错误报告: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=633100
我已经测试了debian wheezy的解决方法并且它有效,但更新包会更好!
答案 1 :(得分:1)
通过查找和热熔器反复和递归地抓取文件系统以查找垃圾通常是一个坏主意。
远离在文件中存储会话,你立刻摆脱了这个以及许多其他问题,如果还没有完成的话。如果您实际上没有使用文件存储进行会话,只需删除该行(或注释掉)。