Apache 响应缓慢

Apache 响应缓慢

我在运行 OS X Lion 的 MacBook Pro 上本地运行 Apache。直到最近,服务器响应都很好。但现在,它似乎响应缓慢。

我在 22:17:00 在我的计算机上发出了访问虚拟主机的请求。Apache 直到 22:17:10 才开始响应。我检查了我的 Apache 日志,结果如下:

127.0.0.1 - - [28/Apr/2012:22:17:10 +0100] "GET / HTTP/1.1" 304 -

从我所看到的,似乎没有任何东西阻碍它access_log,并且也没有任何错误error_log

这种情况每隔几分钟就会发生一次,中间会间隔正常速度响应。最明显的是,在过去几分钟内没有建立连接时。

有人知道为什么会发生这种情况吗?

答案1

使用 chrome 开发者工具 (ctrl-shift-I),您可以准确了解浏览器挂起的具体阶段,如下所示;

在此处输入图片描述


另外,您可以在 strace 下启动 httpd 来准确观察它正在等待什么(不确定等效的 OS X lion 命令是什么......)

# strace -t -T -f /usr/sbin/httpd -X -f /etc/httpd/conf/httpd.conf
23:19:35 execve("/usr/sbin/httpd", ["/usr/sbin/httpd", "-X", "-f", "/etc/httpd/conf/httpd.conf"], [/* 29 vars */]) = 0 <0.000008>
brk(0)   
.
.
.

显然会有相当多的输出,但由于您的页面挂起 10 秒,您应该有足够的时间来剪切和粘贴花费 10 秒的系统调用。


您可能需要检查 httpd.conf 文件中的 HostnameLookups 是否已被禁用;
http://httpd.apache.org/docs/2.1/mod/core.html#hostnamelookups

当将其设置为“on”时,httpd 会尝试对每个传入请求进行 DNS 查找,如果您的本地命名无法正常工作或连接不可靠,则此速度可能会很慢。

答案2

我在这里发现了我的问题:https://stackoverflow.com/a/7553256/1082754

答案3

它也可能源于 mysql 连接。你可以通过将连接字符串放在 php 页面顶部并在连接字符串前添加 return false 来控制它,然后测试它是否正常。

如果问题是由于 mysql 连接速度慢造成的,您可以这样解决问题:

如果您关闭了 mysql 的网络,我的意思是如果您在 [mysqld] 下的 my.ini 中激活了 bind-address="127.0.0.1"。您还应该为 ip6 打开 bind-address = ::1

# Change here for bind listening
bind-address="127.0.0.1" 
# for ipv6
bind-address = ::1    

相关内容