相关疑难解决方法(0)

尽管有可用内存(缓存),但 OOM

尽管我们将近一半的内存用于 FS 缓存,但我们还是遇到了 OOM 杀手。我们每分钟记录一次内存统计信息(如 top 所报告的),但似乎有很多可用性。

...

Mem:  15339640k total, 15268304k used,    71336k free,     3152k buffers
Swap:        0k total,        0k used,        0k free,  6608384k cached

Mem:  15339640k total, 14855280k used,   484360k free,    13748k buffers
Swap:        0k total,        0k used,        0k free,  6481852k cached

[OOM killer: postgres killed]

Mem:  15339640k total,  8212200k used,  7127440k free,    32776k buffers
Swap:        0k total,        0k used,        0k free,  2394444k cached

...
Run Code Online (Sandbox Code Playgroud)

来自系统日志的 OOM 详细信息:

...
Jun 10 05:45:25 db kernel: [11209156.840462] wal-e invoked oom-killer: …
Run Code Online (Sandbox Code Playgroud)

postgresql oom

13
推荐指数
2
解决办法
1万
查看次数

用大量可用的内存交换

我有一个旧的遗留服务器,交换有一个奇怪的问题。

  • Linux 版本:Red Hat Enterprise Linux Server release 5.6 (Tikanga)
  • 内核版本:2.6.18-238.el5
  • 服务器是虚拟的
  • 服务器有 2 个虚拟套接字。

我知道交换分区很小,要添加一个交换文件,但是,在重新启动后几个小时后,情况是这样的:

free -m
             total       used       free     shared    buffers     cached
Mem:         15922      15806        116          0        313      13345
-/+ buffers/cache:       2147      13775
Swap:         2047       2042          4
Run Code Online (Sandbox Code Playgroud)

Oracle 数据库已安装,但几乎未使用。我想了解为什么内存分配会这样。我的意思是 13345 缓存,意味着免费。为什么要填充交换?

以前的系统管理员将 swappiness 配置为:3未配置
大页面。

我看到一些类似的帖子,但没有解决方案来理解。这里的答案:linux redhat 5.4 - 内存仍然可用时交换谈到numa,所以我挖掘了一下(我是dba,不是系统管理员,如果我错过了什么,很抱歉)。

grep NUMA=y /boot/config-`uname -r`
CONFIG_NUMA=y
CONFIG_K8_NUMA=y
CONFIG_X86_64_ACPI_NUMA=y
CONFIG_ACPI_NUMA=y

dmesg | grep -i numa
NUMA: Using 63 for the hash …
Run Code Online (Sandbox Code Playgroud)

linux redhat swap memory-usage

5
推荐指数
1
解决办法
2474
查看次数

标签 统计

linux ×1

memory-usage ×1

oom ×1

postgresql ×1

redhat ×1

swap ×1