在这里讨论了如何PHP-FPM
使用内存之后,我发现在读取top
命令中的内存时遇到了问题。这是top
重启后我的截图PHP-FPM
。一切正常:大约20个PHP-FPM
进程,每个进程消耗5.5MB内存(占总内存的0.3%)。
这是重启之前的旧服务器PHP-FPM
(前一次重启后的一天)。在这里,我们仍然有大约25 PHP-FPM
个内存使用率翻倍(10MB表示总数的0.5%)。因此,使用的总内存应为600-700 MB。那么,为什么要使用1.6GB内存?
free
是相同的。
在这里讨论了如何PHP-FPM
使用内存之后,我发现在读取top
命令中的内存时遇到了问题。这是top
重启后我的截图PHP-FPM
。一切正常:大约20个PHP-FPM
进程,每个进程消耗5.5MB内存(占总内存的0.3%)。
这是重启之前的旧服务器PHP-FPM
(前一次重启后的一天)。在这里,我们仍然有大约25 PHP-FPM
个内存使用率翻倍(10MB表示总数的0.5%)。因此,使用的总内存应为600-700 MB。那么,为什么要使用1.6GB内存?
free
是相同的。
Answers:
您的服务器位于virtuozzo / openvz / virtualization-du-jour容器中。试图弄清内存的使用情况正在风车中倾斜。
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
:赫尔普·德普$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
“内存”行以兆字节($n total
顶部)显示总RAM,已使用的空间($n used
顶部),可用的空间($n free
顶部),共享的空间(忽略),现在就可以了!中的buffers
和cached
列free -m
可预测地$n buffers
与和相关$n cache
。但是,请看第二行的free -m
开头-/+ buffers/cache:
。数学表明,使用的量实际上是(总计)-((已使用的缓冲区)-缓存的)。免费是(总计)-(theNewUsed)。
这是什么意思呢?这意味着Linux吞噬了您的RAM!简短的故事是Linux内核吞噬了RAM,因为它可用于磁盘缓存。除非您想尝试编译自定义内核,否则您无能为力。专家提示:不用。
RAM确实存在,并且进程可以随意使用。这就是中的-/+ buffers/cache:
行的含义free -m
。但是,您位于非管理程序虚拟化容器中,这使事情变得有些怪异。此时,您根本无法以字节精度来存储内存。但是,您没有看到任何异常的行为。
保持冷静并进行。另外,获得一台物理服务器(除非您喜欢看起来像Kreskin的内存统计信息是SysAdmin)。
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
=================================