OEL6 上未知进程使用的内存 - 不含缓存和 slabcache

OEL6 上未知进程使用的内存 - 不含缓存和 slabcache

我搜索过“我的 Linux 内存在哪里?”的问题,但是我找不到与我的泄漏类似的情况:

  • OEL 6.3 x86_64 Linux,配备 6GB RAM
  • 在没有运行任何主要组件(2 个 tomcat、MySQL、基于 Grizzly 的 Web 容器)的情况下,系统某些未知部分占用了大约 2.3GB 的内存
  • 几乎只有几 MB 的文件缓存
  • 几乎没有几 MB 的 slab 缓存
  • 即使重启后
  • 系统是 VMWare 上的虚拟主机

以下是按 RES 降序排序的顶级输出:

top - 15:57:26 up  3:26,  1 user,  load average: 0.27, 0.26, 0.76
Tasks: 192 total,   1 running, 191 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   5993276k total,  2257256k used,  3736020k free,    23772k buffers
Swap:  4063224k total,    89644k used,  3973580k free,    98960k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 3236 root      20   0  123m 8384 1520 S  0.0  0.1   0:01.05 Xorg
 3373 gdm       20   0  369m 3840 2464 S  0.0  0.1   0:00.69 gdm-simple-gree
 3358 gdm       20   0  337m 2916 1940 S  0.0  0.0   0:05.30 gnome-settings-
16380 root      20   0  157m 2708 2192 S  0.0  0.0   0:00.01 su
20174 root      20   0  157m 2704 2192 S  0.0  0.0   0:00.01 su

免费-m:

-/+ buffers/cache:       2083       3769

/proc/meminfo 中的slab信息:

MemTotal:        5993276 kB
MemFree:         3722140 kB
Slab:              50724 kB

任何关于如何解决这 2 场演出的提示都将不胜感激!

答案1

许多人忽略的一件事,尤其是在 VMware 上运行 Tomcat 和其他基于 Java 的应用程序时,那就是该软件对 VMware 内存分配的影响。

首先:

  • 您是否有权访问主机/集群的 vSphere 或 vCenter 管理?
  • 您安装了 VMware 工具吗?

在以下情况下,我经常会看到 Linux VM 内部出现无法解释的内存问题:

  • 主机级别的 RAM 极度过度使用。
  • 主机/集群上的内存膨胀严重。
  • 如果虚拟机上有 RAM 限制。(例如,分配给虚拟机 6GB,但主机限制为 4GB)
  • 资源池/共享设计不良。

基本上,您需要在主机/集群级别寻找争用。

A非常糟糕例如:
vSphere 教育 - 配置具有*过多* RAM 的虚拟机有哪些缺点?

答案2

尝试

grep VmPea /proc/*/status|sort -n -k+2 |tail

如下面链接中的多项式所示

serverfault 几乎没有可用内存

你确实读过Serverfault 关于 Linux 中内存使用情况的典型问题正确的?

另外,你可以通过按 H 键添加线程top(至少对于我在 ubuntu 12.04 上来说)

更多调试:

搜索ps_mem.py一个Python 内存脚本

通过它,您可以看到哪个进程实际上正在使用 RAM(私有/共享),虽然不是 100% 准确,但我想对于您的“问题”来说已经足够了。

其实还有很多其他方法可以检测出问题,但我建议首先检查它是否真的被某些东西使用,而不仅仅是缓冲,这是完全正常的。

相关内容