OceanBase学习之路48|最佳性能参数的配置参考

本节主要从硬件配置、通用参数、MemStore 相关参数、Clog、事务及 RPC 相关参数、SQL 层及其他参数以及OBProxy 相关参数等方面提供最佳性能参数的配置参考。

硬件配置说明

作为原生的分布式关系数据库,OceanBase 数据库具有极强的可扩展性,服务器的硬件配置越高,数据库服务的性能也会越好。

本文以下表中的服务器配置为例,提供最佳性能配置参考。

服务器配置项 描述
服务器数量 3 台
芯片 Intel
CPU 96 C
内存 512 G
磁盘 2TB NVME SSD 存储
网卡 万兆网卡
操作系统 Linux kernel 3.1 及以上
文件系统 建议使用 EXT4 或 XFS

通用参数(集群级参数)

在通用参数中,您可以通过调整以下集群级参数来使性能达到最佳。

net_thread_count

配置说明

调整 Libeasy 网络的线程数,默认值为  12。适当的调低该配置项能降低线程切换的开销,提升性能。

配置值

建议配置为 CPU 核数的 1/6,最少 4 个。

配置示例

obclient> ALTER SYSTEM SET net_thread_count = 4;

syslog_io_bandwidth_limit

配置说明

通过调整该参数的值,可以减小  observer.log 文件带来的 IO 消耗,但是调小该参数可能会导致丢失一些调试日志信息。

配置值

建议配置为  10M

配置示例

obclient> ALTER SYSTEM SET syslog_io_bandwidth_limit = '10M';

clog_sync_time_warn_threshold

配置说明

Clog 日志同步慢时会触发 Debug 日志的输出。通过从默认值  100ms 调整为  2000ms,可以减少日志中输出的信息。

配置值

建议配置为  2000ms

配置示例

obclient> ALTER SYSTEM SET clog_sync_time_warn_threshold='2000ms';

syslog_level

配置说明

调整日志的打印级别,降低打印日志的开销,对性能会一定的好处,但是调整该参数可能会导致丢失一些调试日志信息。

配置值

建议配置为  INFO

配置示例

obclient> ALTER SYSTEM SET syslog_level=`INFO`;

通用参数(租户级参数)

cpu_quota_concurrency

配置说明

控制并发任务的个数,默认值为  4。如果 CPU 使用过于繁忙,可以尝试调为  2 ;如果并发很大,可以考虑再调大。适当的调低该配置项能降低线程切换的开销,提升性能。

配置值

建议配置为  4

配置示例

obclient> ALTER SYSTEM SET cpu_quota_concurrency = 4;

memory_limit_percentage

配置说明

调整 OceanBase 数据库占系统总内存的比例,提高 OceanBase 数据库可用的内存量。

配置值

建议配置为  80

配置示例

obclient> ALTER SYSTEM SET memory_limit_percentage = 80;

memstore_limit_percentage

配置说明

调整 MEMStore 占租户的内存比,需要尽量增大 MEMStore 的空间,但是可能对读操作会有影响。

配置值

建议配置为  50

配置示例

obclient> ALTER SYSTEM SET memstore_limit_percentage =  50;

MemStore 相关参数(租户级参数)

freeze_trigger_percentage

配置说明

调整启动冻结或转储的时机,让转储(Minor Compaction)尽早启动,使 MEMStore 内存尽早释放。

配置值

建议配置为  70

配置示例

obclient> ALTER SYSTEM SET freeze_trigger_percentage = 70;

writing_throttling_trigger_percentage

配置说明

调整写入速度的阈值,在 MEMStore 的内存使用率达到 80% 时便开启写入限速。

配置值

建议配置为  80

配置示例

obclient> ALTER SYSTEM SET writing_throttling_trigger_percentage = 80;

writing_throttling_maximum_duration

配置说明

触发写入限速后,调整限速的速率,控制剩余内存最多支持 1 小时的写入。

配置值

建议配置为  1h

配置示例

obclient> ALTER SYSTEM SET writing_throttling_maximum_duration = '1h';

Clog、事务及 RPC 相关参数(集群级参数)

_ob_trans_rpc_timeout

配置说明

增大事务处理的 RRC 超时时间(默认 3s 就会报错),减少  transaction need rollback 发生的概率。

说明

由于  _xx_xx 格式的参数为隐藏参数,无法通过  SHOW PARAMETERS 语句来查询,您可以通过以下 SQL 语句查看该参数。

obclient> SELECT * FROM oceanbase.__all_virtual_sys_parameter_stat WHERE name='_ob_trans_rpc_timeout';

配置值

建议配置为  25s

配置示例

obclient> ALTER SYSTEM SET _ob_trans_rpc_timeout = '25s';

memory_chunk_cache_size

配置说明

该参数用于设置内存分配器缓存的内存块容量。降低 OceanBase 数据库内部 2 MB 内存块被操作系统回收的概率,增大 2 MB 内存块在 OceanBase 数据库内部的复用率,减少 RPC 因内存操作慢而导致超时的风险。

配置值

建议配置为  0M

配置示例

obclient> ALTER SYSTEM SET memory_chunk_cache_size = '0M';

trx_2pc_retry_interval

配置说明

该参数值过大会导致 Coordinator 和参与者之间的重试间隔过大,从而导致 Commit 时间过长,进一步影响查询效果。如果参数值过小,又可能导致 Schedular 频繁的重试。

配置值

建议配置为  500ms

配置示例

obclient> ALTER SYSTEM SET trx_2pc_retry_interval = '500ms';

high_priority_net_thread_count

配置说明

用于设置单独给 Election 等使用的网络线程,需要重启 OBServer 才能生效。设置后,通过检查日志中的  HIGH PRIO RPC EASY STAT 关键字,可以看到这些线程处理请求的总数。

配置值

建议配置为  2

配置示例

obclient> ALTER SYSTEM SET high_priority_net_thread_count = 2;

__easy_memory_limit

配置说明

通过调大 Libeasy 可使用的最大内存来调大、发往单个 OBServer 的 RPC Packet 的排队上限。

说明

由于  __xx_xx 格式的参数为隐藏参数,无法通过  SHOW PARAMETERS 语句来查询,您可以通过以下 SQL 语句查看该参数。

obclient> SELECT * FROM oceanbase.__all_virtual_sys_parameter_stat WHERE name='__easy_memory_limit';

配置值

建议配置为  20G

配置示例

obclient>ALTER SYSTEM SET __easy_memory_limit = '20G' ;

__easy_memory_reserved_percentage

配置说明

与  __easy_memory_limit 配合使用,可以降低 Easy 占用太多内存的风险。

说明

由于  __xx_xx 格式的参数为隐藏参数,无法通过  SHOW PARAMETERS 语句来查询,您可以通过以下 SQL 语句查看该参数。

obclient> SELECT * FROM oceanbase.__all_virtual_sys_parameter_stat WHERE name='__easy_memory_reserved_percentage';

配置值

建议配置为  10 

配置示例

obclient> ALTER SYSTEM SET __easy_memory_reserved_percentage = 10 ;

SQL 层及其他参数(集群级参数)

enable_sql_operator_dump

配置说明

允许 SQL 层操作(例如,Hash Join)Dump 中间结果,避免因超出内存大小限制而报错。

配置值

建议配置为  True

配置示例

obclient> ALTER SYSTEM SET enable_sql_operator_dump = true;

large_query_threshold

配置说明

调整大查询的阈值。

配置值

建议配置为  100s

配置示例

obclient> ALTER SYSTEM SET large_query_threshold = '100s';

trace_log_slow_query_watermark

配置说明

调整日志中记录 Slow Query 的阈值。Slow Query 在批处理中普遍耗时较长,调大该值可以降低 Slow Query 的记录数量。

配置值

建议配置为  10s

配置示例

obclient> ALTER SYSTEM SET trace_log_slow_query_watermark = '10s';

enable_sql_audit

配置说明

设置是否开启 SQL 执行信息的采集。关闭该配置项可以降低 CPU 资源消耗。

配置值

建议配置为  True

配置示例

obclient> ALTER SYSTEM SET enable_sql_audit=True;

autoinc_cache_refresh_interval

配置说明

调大自增列刷新的频率,可以减少性能损耗。

配置值

建议配置为  86400s

配置示例

obclient> ALTER SYSTEM SET autoinc_cache_refresh_interval='86400s';

enable_perf_event

配置说明

设置是否开启性能监控信息采集。关闭该配置项可以降低 CPU 资源消耗,提升性能,但是会丢失监控信息。

配置值

建议配置为  True

配置示例

obclient> ALTER SYSTEM SET enable_perf_event=True;

SQL 层及其他参数(租户级参数)

ob_enable_batched_multi_statement

配置说明

设置是否启用批处理功能的成组执行优化。

配置值

建议配置为  True

配置示例

obclient>ALTER SYSTEM SET ob_enable_batched_multi_statement = True;

SQL 层及其他参数(系统变量)

ob_sql_work_area_percentage

配置说明

调大租户的 SQL 层可使用的内存空间占比。

配置值

建议配置为  30

配置示例

obclient> SET GLOBAL ob_sql_work_area_percentage = 30;

ob_query_timeout

配置说明

增大查询的超时时长。

配置值

建议配置为 3600000000,表示 3600 秒。

配置示例

obclient> SET GLOBAL ob_query_timeout = 3600000000;

ob_trx_idle_timeout

配置说明

增大事务空闲超时时长。

配置值

建议配置为  300000000,表示 300 秒。

配置示例

obclient> SET GLOBAL ob_trx_idle_timeout = 300000000;

ob_trx_timeout

配置说明

增大事务超时时长。

配置值

建议配置为 2400000000,表示 2400 秒。

配置示例

obclient> SET GLOBAL ob_trx_timeout = 2400000000;

parallel_servers_target

配置说明

提高 PX 的并行度的上限。

配置值

建议配置为  900

配置示例

obclient> SET GLOBAL parallel_servers_target = 900;

max_allowed_packet

配置说明

调整最大网络包大小。

说明

该变量不能通过  ALTER SESSION SET xxx = yyy; 语句的方式使其仅在当前 Session 生效,只能通过  SET GLOBAL xxx = yyy 语句这种全局生效的修改方式。 使用时一般客户端与 Server 端均需要调整。

配置值

建议配置为  41943040

配置示例

obclient> SET GLOBAL max_allowed_packet = 41943040;

OBProxy 相关参数

enable_compression_protocol

配置说明

关闭压缩,减少 OBProxy 对 CPU 的占用。需要重启 OBProxy 机器才能生效。

配置值

建议配置为  False

配置示例

obclient> ALTER PROXYCONFIG SET enable_compression_protocol = False;

automatic_match_work_thread

配置说明

开启自动计算线程个数。需要重启 OBProxy 机器才能生效。

配置值

建议配置为  True

配置示例

obclient> ALTER PROXYCONFIG SET automatic_match_work_thread = True;

monitor_log_level

配置说明

设置监控日志的打印级别。

配置值

建议配置为  ERROR

配置示例

obclient> ALTER PROXYCONFIG SET monitor_log_level = 'ERROR';

xflush_log_level

配置说明

设置 xflush 日志的日志打印级别。

配置值

建议配置为  ERROR

配置示例

obclient> ALTER PROXYCONFIG SET xflush_log_level="ERROR";

syslog_level

配置说明

设置系统日志的日志打印级别。

配置值

建议配置为  ERROR

配置示例

obclient> ALTER PROXYCONFIG SET sys_log_level="ERROR";


请使用浏览器的分享功能分享到微信等