2011-12-09 54 views
0

我目前正在使用我的一臺服務器時發生速度緩慢。它使用PHP和MySQL運行apache2服務器。 MySQL服務器與Web服務器本身位於同一臺機器上。PHP與MySQL組合非常慢

每當我請求包含MySQL查詢的PHP文件時,該頁面大約需要24秒才能顯示出來。在請求頁面時,apache2的CPU使用率高達11%(!),這與以前一週前的數據相比。

非PHP文件或沒有MySQL查詢的PHP文件立即顯示出來。

什麼可能導致包含MySQL查詢的腳本出現問題? 我無法在apache錯誤日誌中找到任何有用的信息。

+0

你有權訪問MySQL日誌嗎? – konsolenfreddy

+0

我可以訪問整個服務器。不幸的是,我不確定日誌在Debian下保存在哪裏。目錄/ var/log/mysql是空的,因此我假設它將它們存儲在別處。 而文件/var/log/mysql.err和mysql.log是空的。 – beta

+0

查詢大小是否會影響響應時間?也就是說,如果你寫一個簡單的身份,不接觸任何表,它還需要半分鐘的時間來回應? –

回答

1

在MySQL控制檯

show full processlist; <-- to show what are the current SQL 

要檢查哪裏是日誌文件: -

show variables like '%log%'; <-- to show mysql variables 

在做查詢基準/測試,始終記得關閉查詢緩存,使用: -

set session query_cache_type=off; 
+0

感謝您的回答。顯示完整進程列表返回了兩行 - 顯然是進程列表查詢本身以及來自我的站點的查詢:| 59 | root | localhost | db1 |睡眠| 20 | | NULL |時間:20似乎相當高。 – beta

+0

睡眠是睡眠zzzzZZZZ ...你應該打開你的一些慢頁面,並同時顯示完整的進程列表進行比較。 – ajreal

+0

嗯,但似乎在這個睡眠條目消失後,頁面終於加載。我用一個來自wordpress博客的較慢頁面測試了它。 – beta

1

數據庫查詢需要時間才能運行,並且每個查詢都需要打開至少一個文件。文件訪問速度很慢。

您可以通過在RAM中運行數據庫而不是從硬盤驅動器加速請求,但真正的答案可能是儘可能緩存,因此您儘可能少地查詢數據庫。

+0

感謝您的回答,但該網站曾經像一週前運行得非常快。突然之間它雖然非常慢,所以我認爲會觸發某種超時?雖然我缺乏背景知識。 – beta

1

由於某些cms記錄功能​​和excel,你可以檢查mysql數據庫是否大於2GB(或4GB)編輯文件大小限制。

+0

我搜索一個查詢來獲取數據庫大小,它似乎只有約2.1 MB的小。 – beta