2012-12-27 82 views
0

我正在VPS上運行一個站點,並定期達到93%的內存使用量。我在PHP的一個較大的頁面上使用了memory_get_usage()函數,它表示它在內存中使用了超過1,500,000個。這很多嗎?是否有一個健康網站的共同基準?PHP內存使用率 - 是1.5MB很多?

我的網站並不是那麼複雜,儘管它是手動編碼的,沒有使用任何框架。

值得關注的是,我追溯了內存使用的一大跳躍,它包含了一個包含一個文件(125kb)的代碼行,包含了我所有的PHP函數(是的,我應該將這些函數分離到不同的庫中,他們根據需要)。

包含該文件後,該頁面的內存使用量從250k跳到1.4MB。這是正常的嗎?這些函數都沒有被調用,它只是一個函數庫。

+0

你知道,即使消費者RAM現在是千兆字節的量級,對吧? 1.5MB/1GB並不多。 –

+0

您正在使用大約1.4MB的內存 - 這對您的VPS沒有什麼影響(即使您只有256MB的分配空間)。也就是說,如果你擔心,你可以嘗試使用'unset'方法來釋放內存。 – RageD

+0

php在運行時僅在語言中使用5到10兆字節。運行php的機器通常有2000到4000兆字節。 1.5兆字節不是很多。 – Andras

回答

2

對於一個PHP程序,1.5mb是沒有什麼好擔心的。

20mb也不會讓我擔心。

根據程序的作用,50MB會更令人擔憂。

但當然,它確實取決於個人計劃。

就你而言,向腳本添加一堆函數肯定會佔用你所看到的那種順序的一大塊內存。沒有什麼不尋常的。

但1.5meg不是很多。你的VPS有多少內存?有多少個並行PHP腳本正在運行,以釋放整個RAM分配?

您的腳本速度可能有問題 - PHP腳本應該在最短的時間內運行,因此1.5mb不應該長時間使用。但是,如果您的腳本花費了太多時間,則可能會導致更多用戶同時運行該腳本。另外,如果速度很慢,這些用戶可能會嘗試刷新幾次,這肯定會讓你的記憶力下降,因爲單個用戶會一次運行多個腳本副本。因此,尋找方法來提高代碼的性能。這可以幫助你。

另一個問題:你的網頁是靜態的嗎?它能被緩存嗎?即,如果您的PHP頁面在每次加載時都會生成相同的HTML輸出,則可以通過緩存輸出來節省大量RAM(並大幅度提高性能),從而不必每次都運行PHP代碼被請求。像Varnish這樣的緩存服務器可以幫助解決這個問題。

我希望能夠幫助回答這個問題,併爲您提供一些思考的方向。

+0

我的網站每月有75,000個獨立訪問者。 VPS擁有768MB RAM,而不是全部GB。每當我做一次健康檢查時,大約有92-95%的內存使用量,這讓我很擔心。我已經讓服務器停機,因爲內存變得最大。 Alexa的網站也被認爲很慢,但我認爲這更多的是HTTP方面,而不是PHP。 這是用於典型頁面加載的內存,而不是運行任何時間長度的腳本。 頁面不是靜態的,因爲它們從數據庫中提取最新的產品評級平均值。 –

+0

對於包含的函數庫,也許我會將它剪切到不同的庫中,並根據需要包含它們。 從本質上來說,使用的內存量是否與代碼行成正比,或者是函數的類型(它所做或包含的內容,可能是數組等)是否也會顯着影響它? –

+1

重新發表您的第一條評論:即使頁面不是完全靜態的,如果您多次載入同一頁面,您將從像Varnish這樣的緩存系統中受益匪淺。 – Spudley