2012-12-27 38 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