
對於這個問題的新手性質,我深表歉意。
我有一個在使用 MySQL 資料庫的 Apache 伺服器(LAMP 堆疊)上運行的 Moodle 網站 (Moodle 2.2.3)。
最近,當某些用戶嘗試登入時,他們報告超時 - 在給定時間後他們只會看到一個空白頁面。部分用戶可以正常登入。這似乎取決於用戶註冊了哪些課程。
我已經能夠將 php.ini 中的超時值從 60 秒延長到 120 秒,並看到相同的行為。使用 $top 我可以看到 www-data 使用的 CPU 峰值約為 99%,直到逾時開始。
我假設正在對資料庫進行長時間調用或類似的調用。
如何查看 mysql 記錄的錯誤訊息?如何查看 PHP 記錄的錯誤訊息?我的 php.ini 中定義的預設 error_log (/var/log/php.log) 似乎不存在?我怎麼能讓 PHP 將錯誤記錄到這個檔案中,以便我可以看到發生了什麼?
Moodle 也會將錯誤記錄到logs/error.log,但這並不能說明問題。
歡迎所有好的建議 - 謝謝!
答案1
我們在我曾經工作過的地方做了很多 Moodle 效能最佳化,並使用 PHP Xdebug 分析來幫助解決很多問題。透過啟用分析,它將產生一個 *.cachegrind 文件,然後許多讀者都可以讀取該文件 - 我在 Windows 上使用 QCacheGrind,或在 Linux 上使用 KCacheGrind。然後您應該能夠找出哪個函數花了時間。
從記憶體來看,這可能是用戶登入時嘗試載入的課程數據量。這也可以使用上面評論中提到的慢速日誌來識別,前提是 SQL 查詢導致了效能問題。
我也絕對建議將您的 Moodle 實例升級到更新的版本,因為我知道自 Moodle 2.2.3 以來,已經將許多效能修復推送到了上游儲存庫。我們曾經將這些作為 Moodle 官方合作夥伴推送給 Moodle。