一个每月提供大约 950k 页面浏览量的 Django 站点(托管在 Webfaction 上)正在经历崩溃,我无法弄清楚如何调试。以不可预测的时间间隔(平均每天一次,但不是每天同一时间),对站点的所有请求都开始挂起/超时,使得站点完全无法访问,直到我们重新启动 Apache。这些请求在前端访问日志中显示为 499,但根本不会出现在我们应用程序的日志中。
在仔细研究服务器日志(包括由 django-timelog 生成的日志)时,我似乎找不到任何在网站关闭之前就点击页面的模式。对于最近的崩溃,在网站关闭之前被击中的所有页面似乎都是标准的“渲染到响应”操作,使用的模板看起来非常简单,并且在其余时间运行良好。根据时间日志,崩溃前的请求似乎不需要更长的时间,而且我无法通过负载测试故意复制崩溃。
Webfaction 说这不是超出我们允许的内存使用量的情况,否则他们会通知我们。需要注意的一件事是,当我们恢复站点时,数据库并没有重新启动(只是应用程序/Apache)。
您将如何调查此类反复出现的问题?似乎必须有一行代码挂在某个地方——你对找到它的过程有什么建议吗?