我有问题与Apache。 一切从一个星期前开始(所以这可能与最新的系统更新有关) – 我的监测工具短信我关于非工作的网站。 我已经检查了它,看起来像请求微不足道的CGI(实施perl)花了30秒。 重新启动apache后,问题在接下来的几个小时/天内被修复,然后再次发生。
最初我怀疑PHP,因为它只是更新(5.3.15-> 5.3.18),可能会影响Apache。 我已经试图把它退回到5.3.15,但是这并不能解决这个问题。
接下来,我做了strace,看起来像是clone()系统调用发生延迟:
[pid 26659] 1356268557.675934 clone( <unfinished ...> [pid 26659] 1356268587.684401 <... clone resumed> child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0xa1033768) = 32169 <30.008452>
CGI本身运行后,工作正常和快速:
[pid 32169] 1356268587.686614 execve("/var/www/mysite.com/mycgi.cgi", ["/var/www/mysite.com/mycgi.cgi"], [/* 26 vars */]) = 0 <0.000776>
任何想法,为什么这可能发生? 克隆(2)如何以及为什么会阻塞30秒? 并成功返回之后…它看起来像克隆()内的一些超时,因为它总是正好30秒。
我正在使用最新的Hardened Gentoo Linux,内核3.5.4-hardened-r1,apache 2.2.23(prefork,mod_cgi)。
更新:我可能应该补充:这个服务器是不是在高负载下。 Apache儿童只使用大约120/40 MB(VIRT / RSS)。 服务器有2GB内存,只有400MB使用(没有缓冲区/caching)。
发生这种情况是因为CONFIG_GRKERNSEC_BRUTE = y内核选项。