Apache 服务器延迟请求一分钟

Apache 服务器延迟请求一分钟

我有一台运行 LAMP 的全新 Ubuntu 12.10 服务器。我的网站几乎已完全迁移,但我遇到了一个问题,任何请求都会延迟一分钟。

root@ubuntu:~# time curl http://localhost
... page output ...
real    1m0.134s
user    0m0.000s
sys 0m0.016s

我已经看过了这个问题无济于事。我/var/log/apache2/error.log

[Fri Mar 29 20:15:30 2013] [error] (9)Bad file descriptor: apr_socket_accept: 
(client socket)
[Fri Mar 29 20:15:30 2013] [error] [client __.__.__.__] PHP Notice:  
Undefined index: HTTPS in /.../homepage/head.php on line 7, referer: 
http://.../login.php
[Fri Mar 29 20:15:30 2013] [error] [client __.__.__.__] PHP Notice:  
Undefined variable: selector in /.../home.php on line 37, referer: 
http://.../login.php

我也尝试过这些建议这里没有成功。有人有其他想法吗?

答案1

下次有人遇到这种情况时,只需使用 strace:

strace -Ff -s 512 php /path/to/index.php

strace 在 index.php 上执行 php 二进制文件,同时显示 php 运行时进行的所有系统调用。

如果一切正常,它会飞快地从你身边飞过,比你读到的速度快得多。但是,如果它挂起等待某事,你可以按 ctrl c 停止 strace 并读取几行。它将包含数据,例如它连接到哪个 IP 以及在哪个端口上。

对于连接到外部网站以获取 ebay 等内容的网站来说,这也非常有用,有时网站会被 ebays 防火墙阻止,并且网站将需要很长时间才能加载,直到超时。

答案2

事实证明,我的主页正在尝试连接到原始服务器的数据库;该数据库不允许外部连接。数据库超时 1 分钟。我注释掉了页面连接到数据库的行,页面以预期的速度加载(尽管没有加载预期的数据)。

相关内容