当我在apache进程上执行strace时,即使在Apache返回静态文件(如图像文件)时,我也会在GET请求之前和之后看到许多gettimeofday。 在Apache 2.4(使用php 5.6,fcgid)应答GET请求之前,会导致很长的停机时间。
1616 0.000048读取(156,“GET / HTTP / 1.1 \ r \ n”,8000)= 16 1616 0.000099 gettimeofday({1430592206,931114},NULL)= 0 1616 0.000044 gettimeofday({1430592206,931156},NULL)= 0 1616 0.000035读取(156,0x7f01d4007018,8000)= -1 EAGAIN(资源暂时不可用) 1616 0.000042 poll([{fd = 156,events = POLLIN}],1,7915439 1670 0.020724 <... epoll_wait恢复> {},100,100)= 0 1670 0.000039 gettimeofday({1430592206,951998},NULL)= 0 1670 0.000037 gettimeofday({1430592206,952034},NULL)= 0 1670 0.000033 gettimeofday({1430592206,952066},NULL)= 0 1670 0.000032 epoll_wait(155,{},100,100)= 0 1670 0.100265 gettimeofday({1430592207,52366},NULL)= 0 1670 0.000041 gettimeofday({1430592207,52405},NULL)= 0 1670 0.000033 gettimeofday({1430592207,52437},NULL)= 0 1670 0.000033 epoll_wait(155,{},100,100)= 0 1670 0.100324 gettimeofday({1430592207,152804},NULL)= 0 1670 0.000066 gettimeofday({1430592207,152865},NULL)= 0 1670 0.000073 gettimeofday({1430592207,152941},NULL)= 0 1670 0.000060 epoll_wait(155,{},100,100)= 0 1670 0.100251 gettimeofday({1430592207,253247},NULL)= 0 1670 0.000039 gettimeofday({1430592207,253284},NULL)= 0 1670 0.000032 gettimeofday({1430592207,253316},NULL)= 0 1670 0.000032 epoll_wait(155,{},100,100)= 0 1670 0.100241 gettimeofday({1430592207,353597},NULL)= 0 1670 0.000061 gettimeofday({1430592207,353653},NULL)= 0 1670 0.000071 gettimeofday({1430592207,353727},NULL)= 0 1670 0.000045 epoll_wait(155,{},100,100)= 0
在服务器实际返回对GET的响应之前,有很多。
我做了什么:
echo“kernel.vsyscall64 = 2”>> /etc/sysctl.conf
之后编辑sysctl。
这稍微增加了Apache 2.4的响应速度,但它仍然很慢,而且还有很多Gettimeofday。 我没有modsecurity,只有Apache的标准模块。 不过,我怀疑一个模块。
我已经检查过是否是ioncube 5.0.2,但事实并非如此。
这是正常的吗? 如果不是,你认为它可能来自Apache的一个模块?
编辑:它看起来像匹配3个时间戳复制到3个日志,写下三个错误/警告。
谢谢你。