这是在重启PHP-FPM之前的老化服务器(上一次重启后的一天).在这里,我们仍然有大约25个PHP-FPM,内存使用率为2(10MB表示总数的0.5%).因此,使用的总内存应为600-700 MB.那么,为什么使用1.6GB内存呢?
解决方法
您的服务器位于某种virtuozzo / openvz / virtualization-du-jour容器中.试图理解记忆的使用是在风车上倾斜.
TL; DR 2
Linux吃了你的RAM!但是没关系,它适用于所有人.
长篇故事
让我们分解吧!
在Mem:部分,我们有:
> $n total:机器中物理RAM的数量
> $n使用:Linux消耗了多少内存,而不仅仅是进程的总和.
> $n free:Linux没有消耗多少RAM.这没有考虑到缓存和缓冲的内存本质上是“免费的”.
> $n buffers:缓冲区空间是存储已读取或待写的磁盘I / O块的位置.缓冲区是单个磁盘块的RAM表示.
在交换:部分,我们有:
> $n总计:自我解释.可用于交换页面的磁盘空间量.
> $n使用:自我解释.使用了多少磁盘交换空间.
> $n免费:Herp Derp.
> $n cache:与上面的缓冲区密切相关.它实际上是页面缓存的一部分,它本身在物理磁盘上没有空间.不要担心这次谈话的细节.
当你运行free -m时,有趣的部分就出现了.你会看到三行,所有数字都与top相关.我将以自己的电脑为例:
total used free shared buffers cached Mem: 8070 7747 323 0 253 5713 -/+ buffers/cache: 1780 6290 Swap: 5055 0 5055
Mem行显示以兆字节为单位的总RAM(在顶部总共为$n),使用了多少($n在顶部使用),多少是免费的(顶部是$n免费),共享多少(忽略),现在来得好! free -m中的缓冲区和缓存列与$n个缓冲区和$n缓存相关联.但是看一下以 – buffers / cache:开头的free -m的第二行.数学表明使用量实际上是(总) – ((used-buffers)-cached).免费是(总) – (新推出).
这是什么意思呢?这意味着Linux吃了你的RAM!简短的故事是Linux内核吞噬了RAM,因为它可用于磁盘缓存.除非你想尝试编译自定义内核,否则你无能为力.专业提示:不要.
RAM确实存在,可随意使用进程.这就是 – / buffers / cache:free -m中的行的含义.但是,你在非超级遮阳虚拟化容器中,这使得事情有点松懈.此时您无法用字节精度来记录内存.但是,你没有看到任何非常不寻常的行为.