2011-09-23 37 views
0

我的網站是非常緩慢,我禁用了大量的模塊,所以我認爲這是我的託管,首先我把內存上限從90M提高到256M,這有助於「500錯誤」,但網站仍然非常緩慢。我想這可能是數據庫設置,爲了方便起見,我正在使用模塊「drupal tweaks」進行更改。Drupal網站慢,Drupal的調整

status report screenshot.

+0

您的一個或多個查詢中存在問題,使其生成一個** lot **的行(在磁盤或內存中的臨時表中)會導致您的悲傷。使用'join'查看所有查詢。 – Johan

+0

@Johan:是什麼讓你得出這個結論? 'Max_join_size'是一個設置,而不是狀態。 – BMDan

+0

我知道你說速度慢,不得不加速記憶,所以我認爲加入變糟了 – Johan

回答

3

定義「慢」。您的網頁是否顯示緩慢?如果是這樣,加載頁面的HTML需要花費一段時間,還是花費大量時間來加載CSS,JS,圖像等? Firebug中的「Net」面板可以幫到你,wget

如果頁面本身速度很慢,是否在網絡,Web服務器,PHP或數據庫級別遇到緩慢?網絡緩慢很容易診斷;嘗試ping。網絡或Web服務器可以通過簡單的測試顯示錯誤,只需在服務器上的某處放置一個大的靜態文件,然後下載它。當您使用devel模塊查看頁面時,PHP或數據庫緩慢時會顯示,但在SHOW PROCESSLIST的輸出中,數據庫緩慢通常也可以看作長時間運行(而不是long-sleep ing!)進程。

或者,試一試NewRelic。它會自動執行其中的幾個步驟,併爲您提供花哨的圖表來引導。

最後:考慮獲得一個更好的託管服務提供商,理想的情況是擁有大量的Drupal體驗(如BlackMesh或Acquia)。對於一個偉大的主機來說,解決這個問題(如果它首先出現)將是託管服務提供商和客戶之間的協作工作,而不是您必須自行解決的問題。花費很多(計費)的時間用於調試託管,然後才能支付比現在更好的託管費用。

+0

速度問題是與drupal後端cms,承諾進行更改。 –

+0

我在本地運行窗口我的站點dev站點是遠程託管的,我可以使用NewRelic嗎? –

+0

NewRelic在您正在測試的機器上運行,因此如果遠程開發機器上出現該行爲,那麼您將在其中安裝它。您在本地運行的操作系統不相關。 – BMDan

2

如果你有一個網站的升級或開發副本,嘗試安裝Devel module,這對於記錄和追加大約每個查詢到每個Drupal的頁面底部統計的選項。這應該可以幫助您追蹤有問題的查詢或查詢。

+0

你可以在現場使用devel嗎? –

+0

這不是'推薦',但我在活網站上做了很多次,它從來沒有造成問題(但!):) – Clive

+0

如果你有足夠的內存...繼續:) –

1

這裏有一些你可能會嘗試的優化技巧。

  1. 首先有可能你的緩存表應該搞砸了。嘗試登錄您的phpmyadmin並嘗試刷新所有緩存表(不要刪除表中的空白表)。

  2. 檢查MySql安裝文件夾裏面的配置文件,如:my-large.ini,my-huge.ini並嘗試重命名並將它們複製爲bin/my.ini,它們是開箱即用的優化mySQL數據庫。

  3. 你從來沒有提到你使用的Drupal版本。 Drupal 7在PHP PDO對象的基礎上構建了一個全新的數據庫API。

這裏是一個鏈接,這將幫助你很多:http://drupal.org/node/310075

而不是寫在原始文本中的SQL查詢和調用輔助函數來執行查詢,您可以創建一個「查詢」對象,調用它的方法來添加字段,過濾器,排序和其他查詢元素,然後調用查詢對象的「execute」方法。

其他

在我的網站PHP內存限制爲512MB,215MB但是應該對生產網站是好的。

另外你爲什麼不啓用APC日誌?

有時masive腳本可能會減慢你的頁面。在Performance中,檢查你的選項:聚合CSS和JS文件。

你可能會考慮Drupal的Drupal上的Pressflow。

通過安裝加速模塊來增強你的網站:http://drupal.org/project/boost

緩存您的瀏覽

其他先進的技術可能包括:

Cacherouter(即替換默認的Drupal緩存模塊)。 使用艾麗西亞克朗減少cron的影響

最終切換到上級主機包或更改您的託管服務提供商

問候......

0

Drupal站點的性能是明顯慢,但如果它的慢到極致級別,然後你可以與其他選項,以提高其性能。
1)您可以在服務器上安裝memcache模塊,在站點緩存方面速度非常快。參考:How to install memcache
2)更改PHP ini設置或mysql conf。
3)檢查自定義模塊是否存在,因爲執行頻繁查詢會造成死鎖。
4)檢查mysql表存儲引擎&我會推薦InnoDB,它將提供行級鎖定。