我使用以下 apt-get 命令在 Linode Ubuntu 10.04 服务器上设置了基本的 LAMP 安装:
sudo apt-get install apache2 apache2.2-common apache2-mpm-prefork apache2-utils ssl-cert mysql-server mysql-client php5 php5-common libapache2-mod-php5 php5-mysql php5-mcrypt
除了属性之外,我实际上没有更改任何 Apache 配置设置ServerName
。在大多数情况下,这一切都运行良好。但是,每隔几次页面请求,比如每 3 次左右,页面似乎都不想加载。如果我让浏览器静静地待在那里,它只会尝试继续加载页面,而不会真正超时或发生其他情况。再次单击同一链接通常会触发正确的页面加载,但有时不会。
这可能是什么原因造成的?我该如何调查此问题的根本原因?
更新:
好的,所以我尝试了 MrTuttle 的建议。尝试复制该问题并不容易,但我配备了两个控制台,一个跟踪 Apache error.log,另一个跟踪 access.log,并打开了 Chrome Inspect 选项卡,在点击了一段时间后,我终于能够触发该问题。
问题发生时,我在 Chrome 的“检查”选项卡中看到对服务器的调用处于“待处理”状态,没有其他任何事情发生。我的 error.log 和 access.log 都没有显示任何新条目。我让浏览器加载了几分钟,什么也没发生。我决定去商店,当我回来时,我的浏览器中终于出现了一条消息,说页面无法加载,服务器可能已关闭(显然情况并非如此)。
我注意到一件奇怪的事情是,这个问题不会发生在 Windows 上(至少到目前为止我还不能触发它),只会在 Linux(我日常使用的桌面)和我朋友的 Mac 上发生。
我不太确定我还能做些什么来调查这个问题。
答案1
打开类似 firebug 或 chrome 的“检查”选项卡之类的程序,查看 HTTP 连接在哪里停滞,以排除任何异常。接下来,假设您的浏览器认为它正在访问您的服务器,请检查您的 access_logs 以查看您的服务器是否看到连接。如果是,但您没有收到任何内容,error_log 中是否有任何内容?可能是 MaxClients Reached 之类的内容(即:apache 无法提供更多页面,直到有 apache 子进程可以自由处理请求;如果是这种情况,我会感到惊讶,但谁知道呢)。
另外,这是什么样的页面?只是一小段静态内容吗?