通过ocp express管理界面修改的值memory_limit=0下次重启又会自动改掉

【 使用环境 】测试环境
【 OB or 其他组件 】
OBServer
5.7.25-OceanBase_CE-v4.3.5.0

OCP Express
版本号: 4.2.2-20240108
发布日期: 2024年1月11日

【问题描述】
memory_limit原值为9G,通过ocp express管理界面修改的值memory_limit=0M后,使用memory_limit_percentage是正常的,但有时候memory_limit突然自己变回9G,例如observer重启后,又会自动恢复9G
就会出现如下图所示的情况
8fc22ea439c47ae5686f83265f6c9820

3 个赞

ocp express当前已经不建议部署了 该组件会在六月份下掉,建议部署ocp产品

4 个赞

有些单机部署或者小型3副本部署使用它建下租户和看下资源情况还是挺方便的,单独部署ocp完整版太重了又多了一项运维工作

4 个赞

而且这个设置memory_limit后是生效的,只是后来observer自己不知道怎么恢复了初始的值,和ocp express应该无关吧

2 个赞

你看一下obd里面memory_limit变化了么。

1 个赞

我用OCP Express改为0M,再在observer 通过SHOW PARAMETERS LIKE ‘memory_limit%’;查是生效的

memory_limit_percentage INT 80
memory_limit CAPACITY 0M

image

1 个赞

改参数是生效的,但是obd的yaml文件未进行修改,如果重启会安装obd中yaml文件的参数进行启动。
obd没有探测参数变化的能力所以obd搭建的集群需要使用obd进行修改参数。

2 个赞

配置没有持久化呢

1 个赞

那应该如何解决,这配置命令不是全局的吗?我看到另一帖子也是类似提问:

那如何持久化配置?

obd部署的集群修改参数建议使用obd edit-config xxxx

1 个赞

好的我试下。不过有个疑问,Obd只是部署集群,但重启却又会使用原始参数覆盖?这是不是bug?至少逻辑上有问题吧

使用obd启动集群,,会去读取yaml参数文件来进行启动。这个是因为obd没有主动探测机制。导致非obd修改的参数无法进行持久化,
比如:黑屏化alter修改参数后,可以使用vi修改yaml文件中参数来进行持久化

1 个赞

原因是这个已理解。但逻辑上是不是有问题,通过命令后来修改的memory_limit不是修改到数据库内部了吗?如果使用obd重启集群时会使用初始值再次修改并覆盖掉,是不是obd这个逻辑上有问题还是有bug?

不是bug,也不是逻辑问题。你的obd版本是多少,一般如果启动集群时候参数不匹配是会报错的

OBD版本如下,目前的现象是,重启集群后,它不会立即变回来原来参数,要过一段时间(如1天后)才会变化。例如昨天用obd cluster stop集群后,重启服务器再obd cluster start,昨天刚开始没发现变化,今天发现参数就恢复原来的了。

OceanBase Deploy: 3.2.2
REVISION: 6d098cf70ef6d763ff07db2d8189205f072955a1
BUILD_BRANCH: HEAD
BUILD_TIME: May 13 2025 17:14:15OURCE
Copyright (C) 2025 OceanBase
License Apache 2.0: Apache version 2 or later https://www.apache.org/licenses/LICENSE-2.0.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

我用obd edit-config把memory_limit改为0M,加了memory_limit_percent为70,但修改后提示,
[oceanbase-ce] 172.16.0.65: DO NOT decrease memory_limit after startup
Modifications take effect after a redeployment. Are you sure that you want to start a redeployment? [y/n]: y

这样原来数据还在吗?

redeployment相当于重新部署了 数据不会存在了

那这memory_limit数据怎么改? :sweat_smile:

直接调大memory_limit即可
你想改成memory_limit_percent这种按照内存自适应这种?