如何配置 OBServer 内存使用量

本文主要介绍如何配置 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)