【问题标题】:PHP memory usage - is 1.5MB a lot? [closed]PHP 内存使用量 - 1.5MB 很多吗? [关闭]
【发布时间】:2012-12-27 22:41:00
【问题描述】:

我在 VPS 上运行一个站点,并且经常达到 93% 的内存使用率。我在其中一个较大的页面上使用了 PHP 中的 memory_get_usage() 函数,它说它使用了超过 1,500,000 的内存。很多吗?是否有一个健康网站的通用基准?

我的网站甚至没有那么复杂,尽管它是手动编码的,没有使用任何框架。

令人担忧的是,我将内存使用量的大幅增长追溯到代码行,其中包含一个包含我所有 PHP 函数的文件 (125kb)(是的,我可能应该将函数分离到单独的库中并包含它们根据需要)。

包含该文件后,该页面的内存使用量立即从 250k 跃升至 1.4MB。这是正常的吗?实际上还没有调用这些函数,它只是一个函数库。

【问题讨论】:

  • 您知道现在即使是消费级 RAM 也达到了千兆字节的数量级,对吧? 1.5MB / 1GB 并不多。
  • 您正在使用大约 1.4MB 的 RAM - 这不应该对您的 VPS 产生影响(即使您只分配了 256MB)。也就是说,如果您担心,可以尝试使用unset 方法在内部释放一些内存。
  • php 在运行时使用 5 到 10 兆字节仅用于语言。运行 php 的机器通常有 2000 到 4000 兆字节。 1.5 兆字节不是很多。

标签: php memory ram


【解决方案1】:

1.5mb 对于 PHP 程序来说没什么好担心的。

20mb 我也不担心。

50mb 会更令人担忧,这取决于程序在做什么。

当然,这在很大程度上取决于个别程序。

在您的情况下,向脚本添加一堆函数肯定会占用您所看到的那种顺序的大量内存。那里没有什么不寻常的地方。

但是 1.5meg 并不是很多。你的 VPS 有多少内存?有多少并发 PHP 脚本正在运行以耗尽整个 RAM 分配?

您的脚本速度可能存在问题 - PHP 脚本应该在最短的时间内运行,因此 1.5mb 不应该长时间使用。但是,如果您的脚本需要花费太多时间,则可能会导致更多用户同时运行该脚本。此外,如果速度很慢,这些用户可以尝试多次刷新,这肯定会耗尽你的内存,因为单个用户将同时运行多个脚本副本。因此,寻找提高代码性能的方法;这可以帮助你。

另一个问题:您的网页是静态的吗?可以缓存吗?即,如果您的 PHP 页面每次加载时都生成相同的 HTML 输出,您可以通过缓存输出为自己节省大量 RAM(并显着提高性能),这样 PHP 代码就不需要在每次页面时都运行被要求。像 Varnish 这样的缓存服务器会对此有所帮助。

我希望这有助于回答问题并为您提供更多思考方向。

【讨论】:

  • 我的网站每月有 75,000 名独立访问者。 VPS 有 768MB 的 RAM,而不是完整的 GB。每当我进行健康检查时,内存使用率都在 92-95% 左右,这让我很担心。我已经让服务器宕机了,因为内存被最大化了。 Alexa 也认为我的网站很慢,尽管我认为这更多的是 HTTP 端,而不是 PHP。这是在典型页面加载时使用的内存,而不是运行任何时间长度的脚本。这些页面不是静态的,因为它们会从数据库中提取最新的产品评级平均值。
  • 对于包含的函数库,我可能会将它切割成不同的库,并根据需要包含它们。本质上,所使用的内存量是否与代码行数成正比,还是函数的类型(它所做或包含的内容,可能是数组等)也会对其产生显着影响?
  • 这是您的第一条评论:即使页面不是完全静态的,如果您多次加载同一页面,您将从 Varnish 之类的缓存系统中受益匪浅。
  • 关于您的第二条评论:将库拆分成更小的块是个好主意。此外,如果您已将代码编写为类,则可以使用 PHP 的自动加载机制,该机制允许您在程序需要时自动包含各个类,而无需手动包含它们中的任何一个;您只需调用该类,它就会自动包含自己。
猜你喜欢
  • 1970-01-01
  • 2013-02-06
  • 1970-01-01
  • 1970-01-01
  • 2013-07-21
  • 2012-08-12
  • 2014-05-07
  • 1970-01-01
  • 2021-06-16
相关资源
最近更新 更多