可能是一个简单的事情 – 缓慢的Apache

我想用Apache和mod-wsgi运行一个Django webapp。 每一页需要坚实的10秒来加载。 我已经排除了MySQL数据库(启用缓慢的查询日志,他们都快),所以我认为我有一个DNS设置的问题。 我在我的办公室有服务器,我试图从相同的办公室局域网内访问Web应用程序。 当我在Djangotesting服务器上运行webapp时,它的速度很快,所以我确信它是apache或者我的networking设置。

我的主机文件如下所示:

127.0.0.1 localhost 127.0.1.1 localhost 192.168.47.140 RDCServer 192.168.47.140 app.my_domain.com 

app.my_domain.com是webapp的子域,主域是位于VPS服务器上的主要网站(不同的IP地址)

我究竟做错了什么?

确保在embedded模式下不使用mod_wsgi,特别是在Apache prefork MPM中。 如果你是那么你可能会为每个请求打一个不同的进程,看到在第一次加载Django的延迟。 如果是这种情况,虽然你可能会期望,因为Django被加载一段时间后,响应时间然后下降。 这并不是绝对的,因为如果请求负载很轻,取决于你如何设置Apache,Apache可以决定你的进程是不需要的,并closures它们,这意味着在空闲期后的后续请求,它正在加载整个Django的再次。

确保您使用的是:

 LogLevel info 

在Apacheconfiguration中,以便mod_wsgilogging有关在进程中初始化Python以及第一次加载WSGI脚本的时间。 这至less可以帮助你消除这个问题。

更好的是,如果您对设置Apache或mod_wsgi不太了解,可以使用mod_wsgi的守护进程模式,因为这样可以避免您在为Python Web应用程序严重设置Apache时可能遇到的许多错误。

感谢您的回应。 我检查了你的build议,并确定它是我的服务器的hosts文件的问题。 我用myapp.my_domain.com添加了路由器的IP地址,现在一切正常。

 123.345.567.678 myapp.my_domain.com 

这是一个糟糕的解决scheme,还是有道理?

无论如何,它正在工作。 谢谢!

(更好的标题为您的问题:我如何诊断Apache每个页面10秒?)

使用chrome的web开发工具来确定(从客户端的angular度来看)什么是缓慢的。

如果是Apache,打开所有apachedebugging,并在前台运行它。 这应该给你更多的暗示,它在做什么。

你得到延迟服务静态资源? 还是只有WSGI请求?

您需要首先找出问题,然后尝试通过反复试验来debugging。

大多数时候,当网站加载不正确时,简单和基本的disagnostic工具是我们的浏览器。 它会告诉你很多关于它是如何处理和显示的网站。 例如,在Chrome浏览器中,当你input了网站的地址时,只要按下回车键,就可以看到chrome的状态栏。 它可能会告诉你任何这些: – “等待app.my_domain.com …” – “parsingapp.my_domain.com”如果它的第一个案例,那么它告诉我们你的DNS是100%健康的。 如果显示“正在parsing….”需要10秒钟,这意味着DNS是罪魁祸首。

您可以在forefox或chrome中使用Firebug,以查看详细的debugging,确切地说,它花费了那么多时间。