間歇性緩慢響應和超時 - Apache + mod_wsgi + Web2py
我在具有 2x2.4GHzCPU 和 4gb 物理記憶體的 Digital Ocean 液滴上安裝了 Ubuntu 14.04.5 LTS (i686)。我正在使用 Apache 和 mod_wsgi 在其上執行 web2py 應用程序。盒子上安裝了一些額外的 python 模組,比如 numpy 和 opencv2。數據庫是 MySQL 5.5。
另一台伺服器上的Wordpress 網站使用php-curl呼叫這個web2py 應用程序。通常響應時間為2-5秒。但有時它會超時(響應時間超過1000秒)。我在 Web2py 應用程序中添加了日誌記錄點,它們告訴我們在到達應用程序後,一切都會在2-3秒內完成。但在 Apache2 訪問日誌中,響應時間記錄為高於1000秒的數字。在訪問日誌中,請求時間與從 Wordpress 網站發起請求的時間大致相同。
誰能指出如何找出這種間歇性緩慢響應的原因?
謝謝
最後,我已經能夠找出問題的原因。它是 web2py 應用程序的預設模型文件中到遠端數據庫的連接語句。此數據庫連接未在任何地方的應用程序中使用。但是由於它在模型文件中,每當呼叫控制器函式時,應用程序都會嘗試不必要地連接到該遠端數據庫。
最初我在應用程序的任何地方都添加了日誌記錄點,但沒有添加到應用程序的預設模型文件中;因此,日誌對根本原因保持沉默。然後我通過將應用程序文件夾內容一一替換為展示應用程序(web2py 附帶)的文件來測試應用程序,並幫助揭示問題的根本原因。然後通過在應用程序的預設模型文件的開頭和結尾添加日誌記錄來驗證根本原因。
為了找出超時的根本原因,您可以使用 php slowlog,它會解釋哪個函式負責。
您必須修改您的
www.conf
並更改0
選項的預設值request_slowlog_timeout
。例如 :request_slowlog_timeout = 10s