本文主要介绍如何配置 OBServer 内存使用量。
适用版本
OceanBase 数据库所有版本。
配置 OBServer 内存使用量
OceanBase 数据库通过系统配置项
memory_limit
与
memory_limit_percentage
限制 OBServer 的内存使用。
系统配置项
memory_limit
的默认值为 0。如果该值不为 0,系统会忽略
memory_limit_percentage
的设定而优先使用
memory_limit
参数配置的值。例如,一台物理机的内存为 100 GB,
memory_limit_percentage
参数设置为 80,表示使用 80% 的内存,而
memory_limit
参数设置为 90 GB,则实际上物理机上 OceanBase 数据库可分配的内存使用
memory_limit
的配置,即 90 GB。
配置
memory_limit
时需要注意以下事项:
-
memory_limit
的默认单位为 MB。
-
例如,
memory_limit=‘40G’
表示将 observer 进程使用的内存上限设置为 40 GB;
memory_limit=40960
表示将 OceanBase 进程使用的内存上限设置为 40960 MB,与
memory_limit=‘40G’
相同。
-
memory_limit
的上限为 264,这可能会导致设置的 OBServer 内存的最大使用上限大于物理内存的总和。
-
如果希望限制运行中的 observer 进程的内存大小,可以直接修改
memory_limit
的值,使其达到预期。后台 reload 线程会使其动态生效,无需重启。但是在设定时,需要保证
memory_limit
的值小于系统总的使用量。 可以通过以下语句查询当前
used_gb
的大小:
-
memory_limit
参数值必须大于
used_gb
。
obclient> SELECT value/1024/1024/1024 used_gb FROM v$sysstat WHERE name LIKE ‘%observer memory%’ AND con_id = 1 AND stat_id=140008 AND name=‘observer memory used size’; ±----------------+ | used_gb | ±----------------+ | 10.582031250000 | ±----------------+ 1 row in set (0.03 sec)