OceanBase 学习笔记58:最佳性能参数的配置参考

285

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

硬件配置说明

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

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

服务器配置项描述
服务器数量3 台
芯片Intel
CPU96 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";