我使用服务器版本为Ubuntu 6.06.2 LTS:Apache / 2.0.55; build立:2010年8月16日18:25:39和PHP 5.1.2(cli)(内置:2010年9月16日20时32分18秒)。 我所有的4个核心都在100%,系统开始积累负载。 重新启动apache暂时解决了这个问题。 我对保持CPU繁忙的apache进程的pid做了一个strace。 我不断收到以下消息:
gettimeofday({1285234145, 989639}, NULL) = 0
你有什么想法,这个问题来自哪里?
谢谢。
更新 :问题来自生成无限循环的应用程序错误。 谢谢大家的帮助
如果apache使用线程mpm,则使用标志-f进行strace
并使用标志-c
#strace -fcp 1268 % time seconds usecs/call calls errors syscall ------ ----------- ----------- --------- --------- ---------------- -nan 0.000000 0 4 1 read -nan 0.000000 0 1 write -nan 0.000000 0 1 open -nan 0.000000 0 2 close -nan 0.000000 0 18 gettimeofday -nan 0.000000 0 1 munmap -nan 0.000000 0 1 writev -nan 0.000000 0 2 poll -nan 0.000000 0 1 mmap2 -nan 0.000000 0 2 stat64 -nan 0.000000 0 6 fcntl64 -nan 0.000000 0 29 25 futex -nan 0.000000 0 1 accept -nan 0.000000 0 1 getsockname -nan 0.000000 0 1 shutdown ------ ----------- ----------- --------- --------- ---------------- 100.00 0.000000 71 26 total
gettimeofday非常简单的调用。 问题是别的。
我之前也遇到过这个问题,但是记住了这个问题。 我有一个模糊的想法,它可能是一个模块Apache加载的东西。 也许PHP,Zend Optimizer / Ion Cube。
我会检查Ion Cube和你正在加载它的地方…这是有区别的顺序它被加载,我相当肯定,我已经看到100%的CPU负载问题(移动到其他zend_extension设置的位置是和注释掉apache.d / ioncube.conf条目)。
我显然假设你使用的是IonCube或Zend Optimizer,但是,也许尝试禁用它们,并再次启动Apache,看看是否100%的CPU负载问题发生。