observer主机报错 Cannot allocate memory

【产品名称】oceanbase

【产品版本】2.2.75

【问题描述】

  1. 现有3台虚拟机(4C/16G),每台上面运行1个observer(15G内存)和1个obproxy。

  2. 系统提示不能分配内存

运行约半天到一天时间,其中一台就会有这个提示:

“-bash: fork: Cannot allocate memory”,此时几乎所有操作系统命令不能执行,reboot也不能执行。

  1. 同时主机界面提示空间不足

4)强制重启该虚拟机后,observer恢复正常。

5)重启主机后查看系统配置

ob[1-3]:4C/16

3台主机资源相同,其它节点查看:

(1) free -g

(2) 系统参数配置

(3)磁盘空间

(4)observer资源配置

看看这个结果:

sysctl kernel.pid_max

也可以bing搜索一下:fork cannot allocate memory

2 个赞

1) 进程配置

[root@ob1 ~]# sysctl kernel.pid_max

kernel.pid_max = 131072

2)实时监控又报错了:

当前线程数944,提示不能分配内存。

3)其它节点observer异常报错(故障时间在每个节点不同):

节点报错内容,同样提示内存不足

4)ob是否存在oom问题?

当前节点observer正常,obproxy服务已经停止,系统仍未hang死,应该很快会hang死

memory_limit 参数 15G 太大了,虚拟机虽然是16G ,但是available的内存不一定有15G 。此外,还要跑obproxy,需要给  虚拟机宿主机留点内存。

建议 重装OB 集群,把 memory_limit参数设置为 12G 。

1) 当宿主机内存资源绰绰有余,如果需要给虚拟机添加内存,可以关闭虚拟机后,给添加内存;

2)加入要调整observer参数,是否可以从15G调整到12G,而不需要重装?

1 个赞

1 或 2 任选一个都行。

如果选2, 那就是 

su - admin

kill -9 `pidof observer`

等彻底退出

cd /home/admin/oceanbase && bin/observer -o "memory_limit=12G"

目前已经将3台虚拟机的内存由16G调整到20G,待观察。

1 个赞

observer等参数未更改。