wxyz
#1
【产品名称】oceanbase
【产品版本】2.2.75
【问题描述】
-
现有3台虚拟机(4C/16G),每台上面运行1个observer(15G内存)和1个obproxy。
-
系统提示不能分配内存
运行约半天到一天时间,其中一台就会有这个提示:
“-bash: fork: Cannot allocate memory”,此时几乎所有操作系统命令不能执行,reboot也不能执行。
- 同时主机界面提示空间不足
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 个赞
wxyz
#3
1) 进程配置
[root@ob1 ~]# sysctl kernel.pid_max
kernel.pid_max = 131072
2)实时监控又报错了:
当前线程数944,提示不能分配内存。
3)其它节点observer异常报错(故障时间在每个节点不同):
节点报错内容,同样提示内存不足
4)ob是否存在oom问题?
wxyz
#4
当前节点observer正常,obproxy服务已经停止,系统仍未hang死,应该很快会hang死
memory_limit 参数 15G 太大了,虚拟机虽然是16G ,但是available的内存不一定有15G 。此外,还要跑obproxy,需要给 虚拟机宿主机留点内存。
建议 重装OB 集群,把 memory_limit参数设置为 12G 。
wxyz
#7
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"
wxyz
#9
目前已经将3台虚拟机的内存由16G调整到20G,待观察。
1 个赞