总结 1

总结 1

经过讨论这里关于PHP-FPM内存占用,我刚刚发现在命令中读取内存时出现问题。下面是我重启后top的截图。一切正常:大约 20 个进程,每个进程占用 5.5MB 内存(占总内存的 0.3%)。topPHP-FPMPHP-FPM

在此处输入图片描述

这是重启前的老服务器PHP-FPM(上次重启后一天)。这里我们仍然有大约 25 个服务器的PHP-FPM内存使用量翻倍(10MB,占总量的 0.5%)。因此,总内存使用量应为 600-700 MB。那么,为什么使用了 1.6GB 内存?

在此处输入图片描述

答案1

总结 1

您的服务器位于某种 virtuozzo/openvz/ 中当今的虚拟化容器。试图理解内存使用情况是件很困难的事。

总结 2

Linux 吞噬了你的 RAM!但没关系,每个人都会这样。


长话短说

让我们分解一下!

在本Mem:节中我们有:

  • $n total:你的机器的物理 RAM 数量
  • $n used:Linux 消耗了多少内存,而不仅仅是各个进程的总和。
  • $n free:Linux 未消耗多少 RAM。这并未考虑缓存和缓冲内存本质上是“空闲”的。
  • $n buffers:缓冲区空间是存储已读取或待写入的磁盘 I/O 块的地方。缓冲区是单个磁盘块的 RAM 表示。

在本Swap:节中我们有:

  • $n total:不言自明。可用于交换页面的磁盘空间量。
  • $n used:不言自明。使用了多少磁盘交换空间。
  • $n free:Herp Derp。
  • $n cache:与上面的缓冲区密切相关。它实际上是页面缓存的一部分,本身在物理磁盘上没有空间。不用担心此对话的细节。

有趣的部分出现在您运行的时候free -m。您将看到三行,并且所有数字都与 top 相关。我将以我自己的 PC 为例:

             total       used       free     shared    buffers     cached
Mem:          8070       7747        323          0        253       5713
-/+ buffers/cache:       1780       6290
Swap:         5055          0       5055

Mem 行显示总 RAM (以兆字节为单位)($n total在顶部),已使用量($n used在顶部),空闲量($n free在顶部),共享量(忽略),现在到了精彩部分!中的bufferscached列与和free -m相关联,这是可以预见的。但请看一下 的第二行,它以 开头。数学表明已使用量实际上是 (total)-((used-buffers)-cached)。空闲量是 (total)-(theNewUsed)。$n buffers$n cachefree -m-/+ buffers/cache:

这一切意味着什么?这意味着Linux 吞噬了你的 RAM!简而言之,Linux 内核会占用 RAM,因为 RAM 可用于磁盘缓存。除非您想尝试编译自定义内核,否则对此无能为力。专家提示:不。

RAM 确实存在,可供进程随意使用。这就是-/+ buffers/cache:中的行所表示的意思free -m。但是,您处于非虚拟机管理程序虚拟化容器中,这让事情变得有点棘手。此时您根本无法以字节精度盘点您的内存。但是,您没有看到任何非常不寻常的行为。

保持冷静,继续前行。另外,获取物理服务器(除非你喜欢看起来像 Kreskin 是你的 SysAdmin 的内存统计信息)。

答案2

Top 不是检查内存使用情况的最佳方法。但是,由于我的问题被标记为该问题的重复,我将在这里发布我的解决方案。

我读过论坛ps_mem.py 将为您检查内存使用情况。

存储库:https://github.com/pixelb/ps_mem/

下载:

pip install ps_mem

用法:

ps_mem

输出:

# ps_mem
 Private  +   Shared  =  RAM used   Program

  4.0 KiB +  15.5 KiB =  19.5 KiB   udevd
  4.0 KiB +  16.0 KiB =  20.0 KiB   mysqld_safe
  4.0 KiB +  25.5 KiB =  29.5 KiB   dbus-daemon
  4.0 KiB +  27.5 KiB =  31.5 KiB   xinetd
 60.0 KiB +  14.5 KiB =  74.5 KiB   epmd
108.0 KiB +  23.0 KiB = 131.0 KiB   init
  8.0 KiB + 135.0 KiB = 143.0 KiB   saslauthd (2)
180.0 KiB +  34.0 KiB = 214.0 KiB   check_scripts.s
796.0 KiB +  41.0 KiB = 837.0 KiB   bash
528.0 KiB + 359.0 KiB = 887.0 KiB   crond (7)
  1.2 MiB + 218.0 KiB =   1.4 MiB   sshd (2)
  1.6 MiB +  45.0 KiB =   1.6 MiB   rsyslogd
  2.0 MiB + 133.0 KiB =   2.1 MiB   beam.smp
  1.3 MiB +   2.3 MiB =   3.6 MiB   httpd (8)
 12.8 MiB + 956.0 KiB =  13.8 MiB   sendmail.sendmail (7)
 53.5 MiB + 114.0 KiB =  53.7 MiB   mysqld
317.6 MiB +   2.3 MiB = 320.0 MiB   python (6)
---------------------------------
                        398.5 MiB
=================================

相关内容