我有一台运行 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 分钟。我注释掉了页面连接到数据库的行,页面以预期的速度加载(尽管没有加载预期的数据)。