使用OCP安装OB,8C64G的配置,OCP 只给 OB集群的每个节点自动分配了 42GB 的内存,这合理吗?

【 使用环境 】测试环境
【 使用版本 】 OceanBase_CE_V4.3.2.1

如题。我们使用最新的 OCP 安装最新的 OceanBase_CE_V4.3.2.1,打算采用3台 8C64G 的机器来组建 1-1-1 集群,OBProxy 也和 OBServer 部署在相同的机器上(每个节点各1个)。

image

当OCP自动检测服务器配置(实际总内存只有61GB+)后,它自动默认分配的内存只有 42GB( 如上图,3个节点加起来是 126G )。
OCP 默认只分配了机器 68% 的内存给 OB,请问这个默认分配合理吗 ?

对于 8C32G、8C64G、16C128G 这些在中小企业中常见的服务器配置,且 OBProxy 也部署在 OBServer 上( 没有其他业务软件 ),OceanBase 官方推荐的CPU、内存分配是多少呢 ?

1 个赞

2 个赞

你的OCP也是安装在这其中一台服务器上的吗?

1 个赞

取决于这三个节点承载的角色和任务比如OB、OCP、OBProxy等,再者一台节点的物理内存除了分配给租户外,还要预留留给操作系统等其它必要的进程使用

2 个赞

还算可以的
另外,安装时是可以指定内存的

1 个赞

OCP 是在另外一台单独的机器上

1 个赞

上面大家说的道理我都懂,但是在 8C64G 的配置下,OB占用多少内存才合适呢 ?

OB的配置项 memory_limit_percentage 默认是 80%,但是 OCP 分配的也才 68+% 。

1 个赞


从上图可以看到,OceanBase 数据库一个节点占用的总内存大小为服务器的一个比例(也可配置为一个绝对值),这其中一部分用于自身系统运行(节点预留内存),一部分用于划分给创建的租户。每个租户等同于传统数据库的一个实例,除了系统租户,其他租户的内存模块组成是一样的。系统租户不存在对应的 Meta 租户,其内存直接分为装载增量数据的 MemStore 以及 KVCache 缓存;其他用户租户,都存在一个对应的 Meta 租户,因此用户租户的内存分为租户本身的内存和对应的 Meta 租户内存,租户本身的内存和对应的 Meta 租户内存又可以分为装载增量数据的 MemStore)以及 KVCache 缓存。

确认下你的 system_memory和memory_limit两个参数设置的是多少?

1 个赞

没有设置,都是系统默认的。
system_memorymemory_limit 都是 0M

不是的 如果你用ocp搭建的时候 会有页面上有选择 你搭建的模式

现在的问题是,OCP 自动分配的内存合理吗 ?现在才分配68+%,感觉似乎有些浪费。
8C64GB 配置,应该分配多少内存给 OB 才比较合理 ?

ocp分配的是 建议值 根据实际生产环境这个建议值比较合理 并不是能对应所有企业使用 这个要实际根据你们的业务 具体分配多少合适 建议做poc cpu、内存、io等在压测过程需要多少合适 可以设置一个合理的值

官方总该有个推荐值吧 ?
其他数据库 MySQL、阿里云/AWS/腾讯云的 RDS,不考虑任何业务因素,官方都会有个默认推荐值的。实际上,如果我们采购 阿里云/AWS/腾讯云的 RDS 的话,无关什么业务,大多都是采用其默认配置,一般不会怎么去调整的。
MySQL InnoDB Buffer 推荐值是总内存的 3/4,而 OceanBase 也应该有个最佳推荐值吧 ?
比如 memory_limit_percentage 默认就是 80%,但为什么 OCP 默认分配的却只有 68% 呢 ?这两个默认值差别不算小,总有一个更优一些吧 ?

你看一下这个博客 有实战最佳配置
https://open.oceanbase.com/blog/10071546640

memory_limit_percentage 默认是80%,如果memory_limit是0,给OB分配内存应该就是你系统总内存的80%,可以将memory_limit_percentage以及memory_limit的值截下图看下,以及cat /proc/meminfo |grep MemTotal 截图看下