【 使用环境 】测试环境
【 使用版本 】 OceanBase_CE_V4.3.2.1
如题。我们使用最新的 OCP 安装最新的 OceanBase_CE_V4.3.2.1,打算采用3台 8C64G 的机器来组建 1-1-1
集群,OBProxy 也和 OBServer 部署在相同的机器上(每个节点各1个)。
当OCP自动检测服务器配置(实际总内存只有61GB+)后,它自动默认分配的内存只有 42GB( 如上图,3个节点加起来是 126G )。
OCP 默认只分配了机器 68% 的内存给 OB,请问这个默认分配合理吗 ?
对于 8C32G、8C64G、16C128G 这些在中小企业中常见的服务器配置,且 OBProxy 也部署在 OBServer 上( 没有其他业务软件 ),OceanBase 官方推荐的CPU、内存分配是多少呢 ?
1 个赞
ljware
2024 年8 月 31 日 15:09
#5
取决于这三个节点承载的角色和任务比如OB、OCP、OBProxy等,再者一台节点的物理内存除了分配给租户外,还要预留留给操作系统等其它必要的进程使用
2 个赞
上面大家说的道理我都懂,但是在 8C64G 的配置下,OB占用多少内存才合适呢 ?
OB的配置项 memory_limit_percentage
默认是 80%,但是 OCP 分配的也才 68+% 。
1 个赞
咖啡哥
2024 年9 月 1 日 07:05
#9
从上图可以看到,OceanBase 数据库一个节点占用的总内存大小为服务器的一个比例(也可配置为一个绝对值),这其中一部分用于自身系统运行(节点预留内存),一部分用于划分给创建的租户。每个租户等同于传统数据库的一个实例,除了系统租户,其他租户的内存模块组成是一样的。系统租户不存在对应的 Meta 租户,其内存直接分为装载增量数据的 MemStore 以及 KVCache 缓存;其他用户租户,都存在一个对应的 Meta 租户,因此用户租户的内存分为租户本身的内存和对应的 Meta 租户内存,租户本身的内存和对应的 Meta 租户内存又可以分为装载增量数据的 MemStore)以及 KVCache 缓存。
确认下你的 system_memory和memory_limit两个参数设置的是多少?
1 个赞
没有设置,都是系统默认的。
system_memory
和 memory_limit
都是 0M
。
淇铭
2024 年9 月 2 日 11:12
#11
不是的 如果你用ocp搭建的时候 会有页面上有选择 你搭建的模式
现在的问题是,OCP 自动分配的内存合理吗 ?现在才分配68+%,感觉似乎有些浪费。
8C64GB 配置,应该分配多少内存给 OB 才比较合理 ?
淇铭
2024 年9 月 3 日 11:08
#13
ocp分配的是 建议值 根据实际生产环境这个建议值比较合理 并不是能对应所有企业使用 这个要实际根据你们的业务 具体分配多少合适 建议做poc cpu、内存、io等在压测过程需要多少合适 可以设置一个合理的值
官方总该有个推荐值吧 ?
其他数据库 MySQL、阿里云/AWS/腾讯云的 RDS,不考虑任何业务因素,官方都会有个默认推荐值的。实际上,如果我们采购 阿里云/AWS/腾讯云的 RDS 的话,无关什么业务,大多都是采用其默认配置,一般不会怎么去调整的。
MySQL InnoDB Buffer 推荐值是总内存的 3/4,而 OceanBase 也应该有个最佳推荐值吧 ?
比如 memory_limit_percentage
默认就是 80%,但为什么 OCP 默认分配的却只有 68% 呢 ?这两个默认值差别不算小,总有一个更优一些吧 ?
淇铭
2024 年9 月 4 日 14:32
#15
旭辉
2024 年11 月 1 日 14:37
#16
memory_limit_percentage
默认是80%,如果memory_limit是0,给OB分配内存应该就是你系统总内存的80%,可以将memory_limit_percentage以及memory_limit的值截下图看下,以及cat /proc/meminfo |grep MemTotal 截图看下