间歇性响应缓慢和超时 - Apache + mod_wsgi + Web2py

间歇性响应缓慢和超时 - Apache + mod_wsgi + Web2py

我在一台 Digital Ocean droplet 上安装了 Ubuntu 14.04.5 LTS (i686),它有 2x2.4GHzCPU 和 4GB 物理内存。我使用 Apache 和 mod_wsgi 在其上运行 web2py 应用程序。机器上安装了一些额外的 python 模块,比如 numpy 和 opencv2。数据库是 MySQL 5.5。

AWordpress 网站在另一台服务器上调用此web2py 应用程序使用php-curl. 通常响应时间为2-5秒。但偶尔会超时(响应时间 >1000秒)。我在 Web2py 应用程序中添加了日志记录点,它们告诉我们,在到达应用程序后,一切都会在2-3秒。但在 Apache2 访问日志中,响应时间记录为高于1000秒。在访问日志中,请求时间从 Wordpress 网站发起请求时大致相同。

有人能指出如何找出这种间歇性响应缓慢的原因吗?

谢谢

答案1

为了发现超时的根本原因,您可以使用 php slowlog,它将解释哪个函数负责。

您必须修改www.conf并更改0选项的默认值request_slowlog_timeout。例如:

request_slowlog_timeout = 10s

您可以阅读更多有关激活 slowlog 的信息这里并了解一些常见的速度缓慢原因这里

答案2

最后我终于找到了问题的根源。这是 web2py 应用程序默认模型文件中的远程数据库连接语句。该应用程序的任何地方都没有使用此数据库连接。但由于它位于模型文件中,因此每当调用控制器函数时,应用程序都会不必要地尝试连接到该远程数据库。

最初,我在应用程序的任何地方都添加了日志记录点,但没有添加应用程序的默认模型文件;因此日志无法查明根本原因。然后,我通过将应用程序文件夹内容逐一替换为演示应用程序(随 web2py 提供)的文件来测试应用程序,并帮助揭示了问题的根本原因。然后通过在应用程序的默认模型文件的开头和结尾添加日志记录来验证根本原因。

相关内容