所以.. 对你们来说很有趣的问题,因为我完全不知道该做什么,或者下一步该去哪里。
服务器和应用程序环境。
CentOS 5.3 版(最终版)
阿帕奇 2.2.3-22
EnableSendfile off
EnableMMAP off
ErrorLog logs/error_log
LogLevel debug
PHP-5.2.6-2
error_reporting = E_ALL
display_errors = on
log_errors = on
max_execution_time=300
max_input_time=60
memory_limit=512mb
Kohana 2.3 PHP 环境。
HAProxy 1.3.15.6-2
内存缓存 1.2.6-1
我们的应用程序分为 3 个 Web 服务器,安装一个 NFS 存储服务器,并在 3 个 Web 服务器之间进行粘性负载平衡。该应用程序看似运行良好,但每隔一段时间,该应用程序就不会加载,而是显示一个纯白色的页面。不是 404 错误,也不是 500 服务器错误,而是一个干净的白页。它会立即返回,因此它不是执行时间错误。
错误日志或服务器错误日志中没有任何内容,代理日志显示标准代理连接,只有访问日志中的标准 200-状态,传输了 256 个字节。
对我来说,这告诉我应用程序本身存在问题。一个罕见的、无法解释的、看似随机的问题,导致了我们现在所说的“死亡白屏”。
我们的开发人员都说,由于我们的错误日志中没有任何内容,因此它一定是服务器问题。但是我说同样的话,我们的任何日志都不会发生任何事情(无论如何都与此相关),而且我们没有让 httpd 子级崩溃。
关于如何增加日志的任何想法,或者以某种方式证明它不是 PHP、Apache、CentOS 等中的错误?或者,如果它是某种错误,请识别它?
Telnet 到服务器以查看发生了什么
telnet server.whatever 80
获取/HTTP/1.0
我会尝试在网络数据路径中的所有点设置数据包嗅探器,或者至少在客户端和服务器之间设置。然后,您可以在错误发生时检查数据包,并至少将问题隔离到链中的一台机器上。至少这样更清楚你应该把调查重点放在哪里。
事实证明(供参考)我们在 Kohana 2.3 的文件缓存系统中发现了一个错误(我不知道具体情况,我不是开发人员)。通过升级到 2.3.4,并专门使用 memcached 进行缓存,问题就消失了。