2014-10-06 126 views
0

我在VPS服務器上(四核心,768MB內存,我正在運行Apache並使用APC作爲默認緩存引擎)。我每天約有2000位訪問者,最多100位併發訪問者。 根據CakePHP DebugKit,我的大部分內存密集型頁面使用大約16MB,其他頁面平均大約10MB。如何防止使用CakePHP應用程序的內存耗盡?

  • 此內存使用是否正常?
  • 我的記憶在每頁2000個訪問者的瓶頸中正常嗎?
  • 我應該考慮將計劃升級到2GB RAM嗎?

我還注意到,視圖渲染佔用了大部分內存的大部分內存,大部分頁面大約佔70%。

我正在監視我的資源使用情況,當我有大約50個或更多的併發用戶時,我剩下0個空閒MB。

謝謝

回答

1

你還應該檢查你的其他進程。根據我的經驗,MySQL在任何我運行的堆棧上佔用的內存都比其他任何內存都多。您還應該實現更好的頁面緩存,以便在不是絕對必要時不需要觸摸PHP。但是Apache也是一個需要微調的內存。如果你想堅持使用Apache,那麼在它前面運行Varnish。

另外,保持APC,但也添加Memcached。它快得多。

如果你的站點有一個尖峯負載將其帶到零內存,那麼,如果可以的話,考慮啓動額外的服務器實例並做一些循環(如果VPS是由雲託管的,是可能的)。如果負載不變,那麼肯定會升級。

@burzum是完全正確的,但是,你應該切換到nginx。這遠遠好於Apache。但是,爲了讓你走上正軌,不少人在nginx之前運行nginx作爲反向代理,雖然這樣做加快了服務器速度,但這完全沒有必要,因爲nginx幾乎可以做任何你需要的東西沒有Apache。不要在nginx前面使用Varnish,因爲nginx可以作爲自己的反向代理。

最好的辦法是用apcu實現nginx(如果可能的話,將php升級到5.5),並使用memcached,並實現nginx的本地微緩存技能。如果您的網站在閱讀和編寫文檔上花費太多時間,那麼您可能會注意到,只需從memcache中檢索緩存副本,nginx就會處理所有內容。雖然這有助於記憶,但它也有助於處理。峯值期間,我的服務器的CPU通常有3-5%的使用量。

1

這是內存使用情況正常嗎?

是的,對於普通的CakePHP應用程序來說,它似乎並不高。

我的記憶瓶頸是否在每頁2000個訪問者的瓶頸是否正常?

我想是的,我不是一個「服務器人」。

我應該考慮將計劃升級到2GB RAM嗎?

我會嘗試先切換到Nginx。與Nginx相比,Apache是​​一個吃怪物的內存,只是搜索幾個banchmarks,一個隨機一個我通過快速搜索選擇的是從this頁面。

enter image description here

總體Nginx的應爲您提供更好的性能。在某個階段,我會考慮更新內存,但首先嚐試Nginx。